Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
688to692
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
688to692
688to692
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
VBA: Dateinamen erzeugen, Ordner selektieren
04.11.2005 12:06:32
der
Hallo Forum,
und wieder habe ich die Ehre Euch eine Frage zu VBA zu stellen. Ich bastel ja seit geraumer Zeit an einer Tabelle zur Zeiterfassung, und konnte bisher durch Eure Hilfe schon einiges realisieren. :-)
Nun habe ich ein neues Problem, bei dem mir auch die Filfe-Funktion leider nciht weiterhelfen kann: In der geöffneten Arbeitsmappe sollen die sichtbaren Arbeitsblätter in einer neuen Datei gespeichert werden. Dieser Teil, also das "auswählen" der sichtbaren Blätter funktioniert einwandfrei.
Was mir jetzt ein Problem bereitet ist folgendes: Ich würde gerne eine DialogBox öffnen, in welcher nur der Speicherort ausgesucht wird, nicht jedoch der Dateiname, dieser wird im oberen Teil des Makros automatisch generiert.
Schön wäre es, wenn ein FileDialog(msoFileDialogFolderPicker) oder vergleichbares geöffnet werden würde.
Das Makro habe ich zum Verständnis hier nachstehend eingefügt. Die Zeilen welche mit "'X" beginnen sind die, die mir Probleme bereiten.
'Speichern unter

Private Sub CommandButtonSTORE_Click()
Dim strDateiname As String
Dim varRueckgabeSTR As Variant
Dim wkssheets() As String
Dim intcounter As Integer
Dim Name As String
Dim Datum1 As Date
Dim Datum2 As Date
intcounter = 0
' Worksheets("Montag").Range("U8:U8").NumberFormat = "yyyy/mm/dd"
Datum1 = Worksheets("Montag").Range("U8:U8")
Datum2 = Worksheets("Montag").Range("U8:U8") + 6
Name = Worksheets("Montag").Range("F8:F8")
strDateiname = Name & " " & Datum1 & "-" & Datum2
'X    'strDateiname = Application.InputBox("Bitte geben Sie den Dateinamen an:", "Speichern unter", _
'X                   strDateiname, Type:=2)
If strDateiname = "" Then Exit Sub
If VarType(strDateiname) = vbFalse Then
If strDateiname = False Then Exit Sub
Else
Application.ScreenUpdating = False
If Worksheets("Montag").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Montag"
intcounter = intcounter + 1
End If
If Worksheets("Dienstag").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Dienstag"
intcounter = intcounter + 1
End If
If Worksheets("Mittwoch").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Mittwoch"
intcounter = intcounter + 1
End If
If Worksheets("Donnerstag").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Donnerstag"
intcounter = intcounter + 1
End If
If Worksheets("Freitag").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Freitag"
intcounter = intcounter + 1
End If
If Worksheets("Samstag").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Samstag"
intcounter = intcounter + 1
End If
If Worksheets("Sonntag").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Sonntag"
intcounter = intcounter + 1
End If
Application.ScreenUpdating = True
Sheets(wkssheets).Copy
'X   ' ActiveWorkbook.SaveAs("F:\Kannegiesser\Abrechnungen\Tagesberichte01\" & strDateiname & ".xls")
'X    'With Application.FileDialog(msoFileDialogFolderPicker)
'X        With Application.GetSaveAsFilename(strDateiname, )
'X
'X        .Show
'X       .Value = strDateiname
'X
'X
'X    End With
End If
ActiveWorkbook.Close
End Sub

Wie immer an dieser Stelle schon einmal vielen Dank für's anschauen!
mfg, Dan

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Dateinamen erzeugen, Ordner selektieren
04.11.2005 12:18:20
u_
Hallo,

Sub test()
Dim strPfad
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Show
strPfad = .SelectedItems(1)
End With
MsgBox strPfad
End Sub

Gruß
Geist ist geil!
AW: VBA: Dateinamen erzeugen, Ordner selektieren
04.11.2005 14:15:23
Kurt
Hi,
das gibt bei Klick auf Abbruch einen Fehler.
mfg Kurt
AW: VBA: Dateinamen erzeugen, Ordner selektieren
04.11.2005 14:36:22
Korl
Hallo u_,
Deinen erstellten Code kommt für mich wie gerufen. ;-)
Die Fehlermeldung habe ich abgefangen.

Sub test()
Dim strPfad
On Error GoTo zu
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Show
strPfad = .SelectedItems(1)
End With
Range("B3") = strPfad & "\"
Exit Sub
zu:
End Sub

Danke u_
Gruß Korl
Anzeige
AW: VBA: Dateinamen erzeugen, Ordner selektieren
04.11.2005 14:51:34
der.dan
Hallo u_ und danke für die schnelle Antwort.
Habe Deinen Code in meinen eingefügt und noch ein wenig hinzugefügt, funktioniert hervorragend.
Jetzt hoffe ich, dass Du mir noch eine Frage beantworten kannst:
Ich generiere den Dateinamen ja automatisch, und genau darum geht es. Der Dateiname soll so aussehen:
Name Jahr Kalenderwoche Anfangdatum-Enddatum z.B.
der.dan 2005 KW44 20050931-20051006
Den Namen beziehe ich über Name = Worksheets("Montag").Range("F8:F8")
Das Datum aus
Datum1 = Worksheets("Montag").Range("U8:U8") (Anfang)
Datum2 = Worksheets("Montag").Range("U8:U8") + 6 (Ende)
Was jetzt meine Frage ist: Wie bekomme ich aus den vorhandenen Daten automatisch den gewünschten Dateinamen?
Die Fehlermeldung habe ich denke ich auch in den Griff bekommen - der Vollstädngikeit halber wie immer der vollständige Code am Ende...
Grüße, Dan


'Speichern unter

Private Sub CommandButtonSTORE_Click()
Dim strDateiname As String
Dim varRueckgabeSTR As Variant
Dim wkssheets() As String
Dim intcounter As Integer
Dim Name As String
Dim Datum1 As Date
Dim Datum2 As Date
Dim strpfad
Dim filename As String
Dim objFSO As Object
intcounter = 0
' Worksheets("Montag").Range("U8:U8").NumberFormat = "yyyy/mm/dd"
Datum1 = Worksheets("Montag").Range("U8:U8")
Datum2 = Worksheets("Montag").Range("U8:U8") + 6
Name = Worksheets("Montag").Range("F8:F8")
strDateiname = Name & " " & Datum1 & "-" & Datum2
If strDateiname = "" Then Exit Sub
If VarType(strDateiname) = vbFalse Then
If strDateiname = False Then Exit Sub
Else
Application.ScreenUpdating = False
If Worksheets("Montag").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Montag"
intcounter = intcounter + 1
End If
If Worksheets("Dienstag").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Dienstag"
intcounter = intcounter + 1
End If
If Worksheets("Mittwoch").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Mittwoch"
intcounter = intcounter + 1
End If
If Worksheets("Donnerstag").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Donnerstag"
intcounter = intcounter + 1
End If
If Worksheets("Freitag").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Freitag"
intcounter = intcounter + 1
End If
If Worksheets("Samstag").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Samstag"
intcounter = intcounter + 1
End If
If Worksheets("Sonntag").Visible = True Then
ReDim Preserve wkssheets(intcounter)
wkssheets(intcounter) = "Sonntag"
intcounter = intcounter + 1
End If
Application.ScreenUpdating = True
Sheets(wkssheets).Copy
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Show
strpfad = .SelectedItems(1)
End With
filename = strpfad & "\" & strDateiname & ".xls"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.fileexists(filename) = True Then
MsgBox ("Der angegebene Dateiname existiert bereits. Bitte Eingabe überprüfen.")
Else
ActiveWorkbook.SaveAs filename:=strpfad & "\" & strDateiname & ".xls"
End If
End If
ActiveWorkbook.Close
End Sub

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige