Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1736to1740
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
Inhaltsverzeichnis

VBA Ordner erstellen falls nicht vorhanden und Datei speichern

VBA Ordner erstellen falls nicht vorhanden und Datei speichern
10.02.2020 11:09:42
Chris
Hallo Community,
Ich habe ein Problem mit einer Datei die ein Makro enthält das mein Vorgänger vor ein paar Jahren erstellt hat und hoffe das hier jemand ist der mir damit helfen kann!
Bei mir sind so gut wie keine Makro-Kenntnisse vorhanden! An dieser Stelle auch gleich die Frage: Wer kennt ein gutes Buch das mich in die VBA Welt einführt!!
Zu meinem Problem:
Ich möchte eine Datei in einem bestimmten Verzeichnis speichern. Das Stammverzeichnis ist dabei immer das gleiche.
Jährlich muss einmal ein Ordner für das laufende Jahr erstellt werden sobald die erste Datei erstellt wird.
Innerhalb diese Ordner müssen nun wiederum Unterordner erstellt werden welche die ersten 8 Zeichen des Dateinamens haben sollen.
In diesem Ordner wiederum soll dann die Datei abgelegt werden!
Die Werte werden alle aus Zellen in der Datei ausgelesen.
Beispiel:
Datei1 "X:\2020\RL200001\RL200001 - yy - xxxxxxx.xlsx"
Datei2 "X:\2020\RL200002\RL200002 - ab - wsadcx.xlsx"
Dat....
Stammverzeichnis: "X:\" ==> Zelle BQ55
Variabler Ordner: "2020" für das Jahr 2020 ==> Zelle BQ58
Unterordner: "RL200001" = die ersten 8 Zeichen des Dateinamens. Diese Nummer ist immer fortlaufend und setzt sich aus den letzten beiden Zeichen des aktuellen Jahres und einer fortlaufenden Nummer zusammen und wird aus einem Teil der Zelle BQ61 generiert
Dateiname: "RL200001 - yy - xxxxxxx" ==> Zelle BQ61
Wenn der variable Ordner schon vorhanden ist soll direkt ein Unterordner erstellt und die neue Datei darin abgelegt werden.
Bisher funktioniert das Makro so das der Name der Datei autom. erstellt und der User dann aufgefordert wird den Speicherpfad aussuchen.
In dem variablen Ordner muss er dann den betreffenden Unterordner erstellen und die Datei darin speichern.
In der Vergangenheit hatte ich dann öfters das Problem das die Dateiene in falschen Ordner waren oder die Ordner nicht den Namensvorgaben entsprachen und ich immer aller Ordner durchsuchen musste.
Das Makro das hier bisher verwendet wurde ist folgendes:
'Aufruf über Modul1

Public Sub CommandButton1_Click()
Dim Datei As String
Dim Verzeichnis As String
Dim SaveDummy As Variant
'blendet die Schaltfäche aus
Worksheets("dokname").Unprotect Password:="XXXX"
ActiveWorkbook.ActiveSheet.Shapes("CommandButton1").Visible = False
Worksheets("dokname").Protect Password:="XXXX"
Verzeichnis = "F:\RL\"                                         'Verzeichnis-Vorschlag
Datei = "RL" & Range("BQ61") & ".xlsx"           'Datei-Vorschlag
SaveDummy = SpeichernUnter(Verzeichnis & Ordner & Datei)
If SaveDummy  False Then ActiveWorkbook.SaveAs SaveDummy Else ActiveWorkbook.ActiveSheet. _
Shapes("CommandButton1").Visible = True    'Es wurde im Dialog auf Speichern gedrückt
End Sub

'Fragt den gewünschten Dateinamen ab und gibt ihn mit Pfad als String @Vorgabename zurück

Private Function SpeichernUnter(VorgabeName As String) As Variant
SpeichernUnter = Application.GetSaveAsFilename(InitialFileName:=VorgabeName, Filefilter:="Excel  _
_
Dateien (*.xlsx),*.xlsx*", _
FilterIndex:=1, Title:="Speichern unter...", ButtonText:="speichern")
End Function

'Methode zum Testen des show/hide Befehls

Private Sub showHideButton()
ActiveWorkbook.ActiveSheet.Shapes("CommandButton1").Visible = True
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Ordner erstellen falls nicht vorhanden und Datei speichern
10.02.2020 12:26:00
Nepumuk
Hallo Chris,
teste mal:
Option Explicit

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
    ByVal DirPath As String) As Long

Private Sub CommandButton1_Click()
    
    Dim Datei As String, Verzeichnis As String
    
    'Verzeichnis-Name
    Verzeichnis = Range("BQ55").Text & Range("BQ58").Text & _
        "\" & "RL" & Left$(Range("BQ61").Text, 6) & "\"
    
    'Datei-Name
    Datei = "RL" & Range("BQ61").Text & ".xlsx"
    
    'Ordner anlegen
    If MakeSureDirectoryPathExists(Verzeichnis) = 0 Then
        Call MsgBox("Fehler beim erstellen des Ordners.", vbCritical, "Fehler")
        Exit Sub
    End If
    
    'Datei speichern
    Application.DisplayAlerts = False
    Call ThisWorkbook.SaveAs(Filename:=Verzeichnis & Datei, _
        FileFormat:=xlOpenXMLWorkbook)
    Application.DisplayAlerts = True
    
    'Button ausblenden
    Call Unprotect(Password:="XXXX")
    CommandButton1.Visible = False
    Call Protect(Password:="XXXX")
    
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA Ordner erstellen falls nicht vorhanden und Datei speichern
12.02.2020 12:53:43
Chris
Hi Nepumuk!
Super - vielen vielen lieben Dank.
Das Makro hat nach ein paar kleinen Anpassung bestens funktioniert.
Gruß Chris

29 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige