VBA Dateiname auslesen, bearbeiten und wieder abspeichern
Hallo zusammen,
bin neu hier und ich hoffe ihr könnt mir gleich helfen.
Ich habe eine definierte Formatvorlage in Word 2010. (Reparaturaufträge)
Wenn ich die Vorlage zum ausfüllen öffne, soll mir ein Makro gleich die Datei mit einer Laufnummer versehen.
Wenn ich dann die Datei speicher, soll der Name wie folgt lauten: "Reparaturaufträge_6-stellige Laufnummer_Datum"
Soweit so gut.
So nun zu meinem Problem mit der Laufnummer:
Bis jetzt habe ich das mit einer externen INI-Datei gelöst, in welche einfach die aktuelle Nummer geschrieben wird und beim erneuten öffnen der Vorlage wird einfach +1 hochgezählt.
Ich möchte das aber etwas anders lösen.
Und zwar soll mir das Makro die LETZTE abgespeicherte Laufnummer auslesen, +1 addieren und die neue Datei abspeichern.
Ich möchte einfach keine externe INI-Datei verwenden.
Leider hab ich keine Ahnung wie ich Dateinamen aus bestehenden Dokumenten auslesen und bearbeiten kann.
Ich hoffe ihr versteht mein Problem und könnt mir helfen.
Danke schon mal und viele Grüße
Bitte entschuldigt wenn ein ähnliches Thema bereits irgendwo behandelt wurde.
Wenn jemand eine Lösung hat, bitte idiotensicher erklären. Bin absoluter VBA-Neuling
Anbei noch mein jetziges Makro
Private Const Präfix = "Reperaturauftrag_"
Private Const INIDatei = "C:\Users\Test\Documents\laufnummer.txt"
Sub AutoNew()
Dim oDoc As Document, oV As Template
Set oDoc = ActiveDocument
Set oV = oDoc.AttachedTemplate
aSec = aSec & Left(oV.Name, InStr(oV.Name, ".") - 1)
Num = System.PrivateProfileString(INIDatei, aSec, "Laufnummer")
Num = Val(Num) + 1
Num = Format(Num, "000000")
Monat = Format(Date, "mm")
Tag = Format(Date, "dd")
Jahr = Format(Date, "yyyy")
System.PrivateProfileString(INIDatei, aSec, "Laufnummer") = Num
On Error Resume Next
oDoc.CustomDocumentProperties.Add Name:="Laufnummer", _
LinkToContent:=False, Value:=Num, Type:=msoPropertyTypeString
On Error GoTo 0
For Each Teil In oDoc.StoryRanges
Teil.Fields.Update
While Not (Teil.NextStoryRange Is Nothing)
Set Teil = Teil.NextStoryRange
Teil.Fields.Update
Wend
Next
With Dialogs(wdDialogFileSummaryInfo)
.Title = Präfix & Num
.Execute
End With
oDoc.Windows(1).Caption = Präfix & Num & "_" & Jahr & "." & Monat & "." & Tag
End Sub
bin neu hier und ich hoffe ihr könnt mir gleich helfen.
Ich habe eine definierte Formatvorlage in Word 2010. (Reparaturaufträge)
Wenn ich die Vorlage zum ausfüllen öffne, soll mir ein Makro gleich die Datei mit einer Laufnummer versehen.
Wenn ich dann die Datei speicher, soll der Name wie folgt lauten: "Reparaturaufträge_6-stellige Laufnummer_Datum"
Soweit so gut.
So nun zu meinem Problem mit der Laufnummer:
Bis jetzt habe ich das mit einer externen INI-Datei gelöst, in welche einfach die aktuelle Nummer geschrieben wird und beim erneuten öffnen der Vorlage wird einfach +1 hochgezählt.
Ich möchte das aber etwas anders lösen.
Und zwar soll mir das Makro die LETZTE abgespeicherte Laufnummer auslesen, +1 addieren und die neue Datei abspeichern.
Ich möchte einfach keine externe INI-Datei verwenden.
Leider hab ich keine Ahnung wie ich Dateinamen aus bestehenden Dokumenten auslesen und bearbeiten kann.
Ich hoffe ihr versteht mein Problem und könnt mir helfen.
Danke schon mal und viele Grüße
Bitte entschuldigt wenn ein ähnliches Thema bereits irgendwo behandelt wurde.
Wenn jemand eine Lösung hat, bitte idiotensicher erklären. Bin absoluter VBA-Neuling
Anbei noch mein jetziges Makro
Private Const Präfix = "Reperaturauftrag_"
Private Const INIDatei = "C:\Users\Test\Documents\laufnummer.txt"
Sub AutoNew()
Dim oDoc As Document, oV As Template
Set oDoc = ActiveDocument
Set oV = oDoc.AttachedTemplate
aSec = aSec & Left(oV.Name, InStr(oV.Name, ".") - 1)
Num = System.PrivateProfileString(INIDatei, aSec, "Laufnummer")
Num = Val(Num) + 1
Num = Format(Num, "000000")
Monat = Format(Date, "mm")
Tag = Format(Date, "dd")
Jahr = Format(Date, "yyyy")
System.PrivateProfileString(INIDatei, aSec, "Laufnummer") = Num
On Error Resume Next
oDoc.CustomDocumentProperties.Add Name:="Laufnummer", _
LinkToContent:=False, Value:=Num, Type:=msoPropertyTypeString
On Error GoTo 0
For Each Teil In oDoc.StoryRanges
Teil.Fields.Update
While Not (Teil.NextStoryRange Is Nothing)
Set Teil = Teil.NextStoryRange
Teil.Fields.Update
Wend
Next
With Dialogs(wdDialogFileSummaryInfo)
.Title = Präfix & Num
.Execute
End With
oDoc.Windows(1).Caption = Präfix & Num & "_" & Jahr & "." & Monat & "." & Tag
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 201555
Url: https://administrator.de/contentid/201555
Ausgedruckt am: 25.11.2024 um 17:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo PatRixx und willkommen im Forum!
Grüße
bastla
die LETZTE abgespeicherte Laufnummer auslesen
Demnach soll das Makro also in einem (noch nicht genannten) Ordner die gespeicherten Dateien (haben welches Dateiformat?) durchgehen, um jene mit der höchsten Laufnummer entsprechend dem Schema "Reparaturaufträge_6-stellige Laufnummer_Datum" zu finden und daraus die nächste Nummer berechnen zu können?Grüße
bastla
Hallo PatRixx!
Etwa so:
Grüße
bastla
Etwa so:
Set fso = CreateObject("Scripting.FileSystemObject")
HNr = "000000" 'Startwert für "höchste Nummer"
Pre = "Reparaturaufträge_" 'Präfix des Dateinamens
For Each File In fso.GetFolder("D:\Ordner mit Reparaturaufträgen").Files 'alle Dateien durchgehen
'nur doc-Dateien, die mit "Reparaturaufträge_" beginnen, verarbeiten
If Left(File.Name, Len(Pre)) = Pre And LCase(fso.GetExtensionName(File.Name)) = "doc" Then
LNr = Split(File.Name, "_")(1) 'Nummer ist Teil zwischen erstem und zweitem "_"
If LNr > HNr Then HNr = LNr 'merken, wenn höher, als bisher höchste Nummer
End If
Next
Num = Format(CLng(HNr) + 1, "000000") 'neue Nummer berechnen
bastla