Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1100to1104
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Dateinamen erzwingen
Jörg-HH
Guten Abend zusammen
eine Datei wird an einen Anbieter geschickt und soll von ihm unter einem bestimmten Namen gespeichert (und später ausgefüllt auch so zurückgeschickt) werden. Das geschieht bisher im Workbook-open so - eine Inputbox liefert dazu seinen Namen (strAnbieterName). Der User bekommt die Mitteilung, er kann sie speichern, wo er will, aber möge bitte den Namen lassen wie vorgegeben - und nach dem Speichern kann er sie bearbeiten:

FileSaveNameAnbieter = Application.GetSaveAsFilename _
(InitialFileName:=(Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)) & " " &  _
strAnbieterName, _
FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls", Title:="Dateiname für  _
Ihr Angebot")
If FileSaveNameAnbieter  False Then
ActiveWorkbook.SaveAs FileSaveNameAnbieter
Else
Exit Sub
End If
Wär zu schön, wenn alle sich daran hielten. Da etwa die Hälfte der Empfänger das nicht tut (das deckt sich mit ähnlichen Klagen im Archiv), möchte ich das Abändern des vorgegebenen Namens jetzt völlig unterbinden.
Ich bräuchte bitte Gehhilfe bei der Suche nach einem Code, der den Namen der Datei beim Speichern daraufhin untersucht, ob er mit dem vorgegebenen übereinstimmt.
Schönen Gruß - Jörg

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
PS...
12.09.2009 22:57:22
Jörg-HH
...und kann ich vielleicht bei der Gelegenheit mit dem Öffnen der Datei die Excel-Menüpunkte Speichern und Speichern unter außer Kraft setzen?
AW: PS...
12.09.2009 23:21:31
Ramses
Hallo
Probier mal
Option Explicit
Sub demo()
Dim FileSavenameAnbieter As String
Dim strAnbietername As String, tmpPath As Long
strAnbietername = "Ramses"
FileSavenameAnbieter = Application.GetSaveAsFilename(InitialFileName:=(Left(ThisWorkbook.Name,  _
Len(ThisWorkbook.Name) - 4)) & " " & strAnbietername, FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls", Title:="Dateiname für Ihr Angebot")
tmpPath = InStrRev(FileSavenameAnbieter, "\", -1)
If FileSavenameAnbieter  False Then
msgbox "Mappe würde gespeichert unter: " &    tmpPath & "DeineMappe.xls"
ActiveWorkbook.SaveAs tmpPath & "DeineMappe.xls"
Else
Exit Sub
End If
End Sub
Gruss Rainer
Anzeige
geht nich...
13.09.2009 00:21:38
Jörg-HH
Hallo Rainer
FileSaveNameAnbieter und strAnbieterName müssen bei mir Variant sein, sonst geht das nicht. Warum ist das so? Hängt das mit der Inputbox zusammen?
die msgbox meldet mir immer 65....xls
Irgendwie versteh ich nicht, was der Code macht: Ich kann mit meinen Kenntnissen daraus nur lesen, daß er mir einen Pfad anzeigt. Aber der Pfad ist ja egal - auf den Namen kommt's an und daß er so bleibt, wie er angezeigt wird.
na, danke aber trotzdem... muß mal weiter tüfteln...
Gruß Jörg
Geht schon...
13.09.2009 00:37:26
Ramses
Hallo
... sonst hätte ich es ja nicht geschrieben, habe allerdings den Code nicht getestet.
Die Zeilen müssen so heissen
If FileSavenameAnbieter "Falsch" Then
MsgBox "Mappe würde gespeichert unter: " & Left(FileSavenameAnbieter, tmpPath) & "DeineMappe.xls"
ActiveWorkbook.SaveAs Left(FileSavenameAnbieter, tmpPath) & "DeineMappe.xls"
"....müssen bei mir Variant sein, sonst geht das nicht..."
Das ist Quatsch, weil der Pfad eine Textangabe ist und daher als String zu deklarieren ist.
Gruss Rainer
Anzeige
hm - string oder variant
13.09.2009 03:17:44
Jörg-HH
na, Rainer, wenn "Das ist Quatsch, weil der Pfad eine Textangabe ist und daher als String zu deklarieren" ist, dann sag mir bitte, warum der Code stoppt, wenn ich die beiden Variablen als String deklariere, nicht aber, wenn sie Variant sind.
Gruß Jörg
AW: hm - string oder variant
13.09.2009 09:10:52
Ramses
Hallo
Wenn du meinen Code angesehen hättest, dann siehst du es.
Mit Variant nimmt deine Variable unterschiedliche Stati an, d.h. EXCEL nimmt das, was dazu passt.
Nur das kann auch was ganz anderes sein als du erwartest. Daher ist die Deklaration der Variablen Pflicht, und zwar mit dem Typ den du erwartest.
Drückst du in der Box auf "Abbrechen" dann hat deine Variable einen Boolean-Status (JA/NEIN), wenn du auf "OK" drückst, dann hat Sie einen "String"-Status. Ist deine Variable als "String" deklariert, dann funktioniert das, nur musst die Variablenüberrüfung nicht mit "False" machen, sondern den String überprüfen
If FileSavenameAnbieter "Falsch" Then
So einfach ist das.
Für deine weitere Programmierungkarriere würde ich dir dringend empfehlen, dieses Verfahren beizubehalten, und nicht mit "Variant" zu arbeiten, oder nur wenn es absolut nicht anders geht.
Dann jedoch musst du im Nachgang, bei Verwendung der Variablen, den Typ überprüfen, den die Variable dann eben erhalten hat. Ansonsten sind kuriose Sachen zu erwarten.
Gruss Rainer
Anzeige
AW: hm - string oder variant
13.09.2009 09:37:15
Tino
Hallo,
ich würde nur aus
If FileSavenameAnbieter  "Falsch" Then

If FileSavenameAnbieter   cstr(False)  Then
machen, ist somit Sprachunabhängig.
Gruß Tino
Gute Idee o.w.T.
13.09.2009 09:55:20
Ramses
...
AW: string oder variant
13.09.2009 13:48:54
Jörg-HH
Hallo Rainer
du sagst da ...Wenn du meinen Code angesehen hättest ... - naja, wenn du meinen VBA-Level berücksichtigst, wird vielleicht verständlich, daß das "ansehen" manchmal nix nützt ;-) Wie ich bei meinen Wissensgrundlagen den Code verstanden hatte, hab ich ja geschrieben.
Zur Erläuterung: Der unsprüngliche Code stammt (natürlich) in den wesentlichen Teilen nicht von mir, sondern hier aus dem Forum, und ging etwa so:
Dim FileSaveNameAnbieter As Variant
Dim MldgFa As String
Dim strAnbieterName As String
MldgFa = "Bitte geben Sie Ihren Firmennamen usw..."
If Me.Sheets.Count > 3 Then
Exit Sub
Else
strAnbieterName = InputBox(MldgFa, "Speicherhilfe")
End If
If strAnbieterName = "" Then
Exit Sub
Else
MsgBox "Speichern Sie.... usw"
FileSaveNameAnbieter = Application.GetSaveAsFilename(InitialFileName:=(Left( _
ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)) & " " & strAnbieterName, FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls", Title:="Dateiname für die Ausschreibung")
If FileSaveNameAnbieter  False Then
ActiveWorkbook.SaveAs FileSaveNameAnbieter
Else
Exit Sub
End If
End If
End Sub
Da wurde (ich weiß nicht mehr, von wem) Dim FileSaveNameAnbieter As Variant vorgeschlagen, und weiter unten steht dann If FileSaveNameAnbieter False Then. Ich würd 'n Teufel tun, das anzuzweifeln oder eigenmächtig zu ändern.
Einem Autodidakten und Anfänger fällt doch nicht im Traum ein, zwischen If FileSaveNameAnbieter False und If FileSavenameAnbieter "Falsch" einen Unterschied zu erkennen - jedenfalls nicht von allein. - Jetzt erahne ich natürlich inzwischen, was du meinst.
Ich werde die Hinweise von dir und Tino im Code unterbringen, und dann sollte es wohl laufen. Wenn nicht, klingel ich nochmal durch.
Schönes WE!
Jörg
Anzeige
AW: Dateinamen erzwingen
12.09.2009 23:23:23
Jürgen
Hallo Jörg,
dann lass doch nur das Zielverzeichnis auswählen - ohne den Dateinamen:
Sub Speichern()
Dim Zielverzeichnis As String
Dim AuswahlDialog As FileDialog
Dim OKgedrueckt As Boolean
Set AuswahlDialog = Application.FileDialog(msoFileDialogFolderPicker)
With AuswahlDialog
.AllowMultiSelect = False
.ButtonName = "Auswählen"
.Title = "Speicherverzeichnis wählen"
End With
OKgedrueckt = AuswahlDialog.Show
If OKgedrueckt Then
Zielverzeichnis = AuswahlDialog.SelectedItems(1)
ActiveWorkbook.SaveAs Zielverzeichnis & "\MeinWunschname"
End If
End Sub

Herzlichen Gruß
Jürgen
Anzeige
das geht...
13.09.2009 00:24:56
Jörg-HH
Hi Jürgen
danke für den Tip - den Code kann ich so anpassen, daß er läuft.
Was noch stört: Wenn der User auf Abbrechen drückt, kann er ganz normal mit "Speichern unter..." Unsinn machen. Kriegt man den Button irgendwie noch wech?
..und kann man die Excel-Menüs vergraulen?
Gruß - Jörg
hier war noch ne Frage...
13.09.2009 03:16:40
Jörg-HH
siehe vorigen Post - da war durch Rainers Antwort aber die Markierung abgeschossen :-(

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige