Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
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

Speichername und Verzeichnis

Speichername und Verzeichnis
18.11.2022 15:30:46
Marcel
Hallo Zusammen,
ich habe folgendes vor und brauche dabei eure Hilfe. Ich habe ein täglich teilweise mehrmals täglich geführtes Protokoll in dem eine fortlaufende Nummer steht. Nun möchte via Button ein Makro ausführen welches die Datei in einem bestimmten Verzeichnis (je nach Monat und Jahr) und einem bestimmten Namen abspeichert.
- Name: "xxxx_(hier die fortlaufende Nummer aus einer bestimmten Zelle)
- Verzeichnis: ...\...\.\ (Jahr) \ (Jahr_Monat) z.B aktuell: bla1 \ bla2 \ bla3 \ 2022 \ 2022_11
-Speichern als xlsm, ganz normal
Kann mir da jemand mit einem einfach Code helfen. Evtl. auch mögliche Fehlerquellen ausschließen wie bspw eine bereits vorhandene Datei anmerken.
Wäre dankbar für eure Hilfe,
VG Marcel

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichername und Verzeichnis
18.11.2022 15:39:11
onur
Wo ist denn dein bisheriges Makro (und die Datei) dazu ?
AW: Speichername und Verzeichnis
18.11.2022 16:08:38
Marcel
Hey Onur, ich habe noch kein Makro dafür. Daher die Frage. Brauchst du eine Bsp Datei. Ich dachte das sollte ganz unabhängig von der Datei gehen.
AW: Speichername und Verzeichnis
18.11.2022 16:15:42
onur
" Name: "xxxx_(hier die fortlaufende Nummer aus einer bestimmten Zelle)" ? Und woher soll der Code das wissen?
Und wie soll der Hilfswillige den Code testen können? Ausserdem gibt es eigentlich keinen Code, der mit jeder Datei laufen würde, Makros sind massgeschneidert.
AW: Speichername und Verzeichnis
18.11.2022 16:40:43
ralf_b

Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal lpPath As String) As Long
Sub Datei_zwischenspeichern()
Dim sPfad As String
Dim sName As String
sPfad = "F:\testx\2022\2022_11\"
sName = "XXX_" & Range("A1").Text
If Dir(sPfad & sName & ".xlsm")  "" Then
MsgBox "Schon vorhanden"
Exit Sub
Else
If MakeSureDirectoryPathExists(sPfad) = 0 Then
MsgBox "Der Ordner " & sPfad & " konnte nicht angelegt werden!", vbCritical, "Ordner anlegen"
End If
ActiveWorkbook.SaveCopyAs sPfad & sName & ".xlsm"
MsgBox ("Datei wurde erfolgreich zwischengespeichert.")
End If
End Sub

Anzeige
AW: Speichername und Verzeichnis
18.11.2022 20:14:01
Marcel
Hey Ralf,
danke für den Code. Tut was er soll. Nur der Verzeichnisname darf nicht fixiert als text sein sondern je nach datum und monat soll sich die datei automatisch dem richtigen Ordner zuordnen. Geht das?
Vg
AW: Speichername und Verzeichnis
18.11.2022 20:39:39
ralf_b
ich hatte deine Datei nicht zur Verfügung.

Option Explicit
Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long
Sub Datei_zwischenspeichern()
Dim sPfad As String
Dim sName As String
sPfad = "F:\testx\" & Year(Range("B4")) & "\" & Year(Range("B4")) & "_" & Month(Range("B4")) & "\"
If Range("D4") = vbNullString Then MsgBox "Nummer fehlt", vbCritical, "Abbruch": Exit Sub
sName = "XXX_" & Range("D4").Text
If Dir(sPfad & sName & ".xlsm")  "" Then
MsgBox "Schon vorhanden"
Exit Sub
Else
If MakeSureDirectoryPathExists(sPfad) = 0 Then
MsgBox "Der Ordner " & sPfad & " konnte nicht angelegt werden!", vbCritical, "Ordner anlegen"
End If
ActiveWorkbook.SaveCopyAs sPfad & sName & ".xlsm"
MsgBox ("Datei wurde erfolgreich zwischengespeichert.")
End If
End Sub

Anzeige
AW: Speichername und Verzeichnis
19.11.2022 11:07:07
Marcel
Funktioniert einwandfrei :) Wenn du mir jetzt noch sagen kannst wie aus Year(xx.08.xx) im Verzeichnisnamen xx_08 erzeugt wird statt (Stand jetztiger Code) xx_8 bin ich wunschlos glücklich.
Vielen vielen Dank
AW: Speichername und Verzeichnis
21.11.2022 11:12:33
Marcel
Hey,
ich dachte damit ist es erledigt, aber wie immer kommt doch dann noch ein Problem auf. Ich habe nun folgendes Makro für Speichern+Schließen.
Option Explicit
Private Declare PtrSafe

Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long

Sub Datei_zwischenspeichern()
Dim sPfad As String
Dim sName As String
sPfad = "F:\testx\" & Format(Date, "yyyy") & "\" & Format(Date, "yyyy_mm") & "\"
If Range("D4") = vbNullString Then MsgBox "Nummer fehlt", vbCritical, "Abbruch": Exit Sub
sName = "XXX_" & Range("D4").Text
If Dir(sPfad & sName & ".xlsm")  "" Then
MsgBox "Schon vorhanden"
Exit Sub
Else
If MakeSureDirectoryPathExists(sPfad) = 0 Then
MsgBox "Der Ordner " & sPfad & " konnte nicht angelegt werden!", vbCritical, "Ordner anlegen"
End If
ActiveWorkbook.SaveCopyAs sPfad & sName & ".xlsm"
MsgBox ("Datei wurde erfolgreich zwischengespeichert.")
End If
ActiveWorkbook.Close savechanges:=False
End Sub
Folgender Hintergrund: Die Vorlage-Datei wird schreibgeschützt geöffnet, einige Werte eingetragen und über das obige Makro (danke nochmal) perfekt benannt und abgelegt. Die Vorlage bleibt damit geschützt und unverändert. Die erstellte Kopie wird später nochmal geöffnet, um weiteren Inhalt einzutragen. An der Stelle versagt dann natürlich das Makro, da die Datei bereits vorhanden ist. Ich würde hier gerne zulassen dass die Datei überschrieben wird. Aber nur diese Datei mit diesem Namen damit nicht fälschlicherweise eine Datei zuvor (Unterschied nur in der laufenden Nr.) überschrieben wird. Hast du/ihr eine Idee, wie ich das realisieren könnte?
Anzeige
AW: Speichername und Verzeichnis
21.11.2022 12:10:40
onur
Das weg:

 If Dir(sPfad & sName & ".xlsm")  "" Then
MsgBox "Schon vorhanden"
Exit Sub' DAS WEG
Else
Dann kannst du vor dem Speichern die Meldung (wenn du willst) unterdrücken:

Application.DisplayAlerts = False
ActiveWorkbook.SaveCopyAs sPfad & sName & ".xlsm"
Application.DisplayAlerts = False
...

AW: Speichername und Verzeichnis
21.11.2022 13:25:34
Marcel
Hey Onur,
danke für die Antwort. Jetzt ist noch nicht gesichert dass versehentlich (bei Eintrag der falschen laufenden Nr.) eine falsche Datei überschrieben wird. Das regel ich aber einfach mit Zellschutz der Zelle beim ersten Speichern .
Ein Gedankenfehler/Problem beseitigt und schon kommt das nächste auf. Habe ja beschrieben, dass die Hauptdatei eine Vorlage ist mit Schreibschutz. Die mit dem Speichern-Makro abgelegte Kopie soll jedoch keinen Schreibschutz enthalten, da die ja wieder geändert wird.
Schreibschutz habe ich im Workbook.Open Event realisiert:
Private Sub Workbook_Open()
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
Wie könnte ich dies für die Kopie entfernen? Gibt es sowas wie SafeCopyAs "without protection" :D?
Anzeige
AW: Speichername und Verzeichnis
21.11.2022 13:45:46
Marcel
könntest du das bitte ausführen?
AW: Speichername und Verzeichnis
21.11.2022 14:22:36
onur
ThisWorkbook.ChangeFileAccess Mode:=xlReadWrite
AW: Speichername und Verzeichnis
18.11.2022 20:50:08
onur

sPfad = "F:\testx\" & Format(dat, "yyyy") & "\" & Format(dat, "yyyy_mm") & "\"

AW: Speichername und Verzeichnis
19.11.2022 11:08:16
Marcel
Danke onur. Das beantwortet auch gerade meine gestellte Frage an Ralf.
Vielen Dank für Eure Hilfe :)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige