juweee
Goto Top

VBS: PDF Formular x-mal in Ordner kopieren und nach Liste umbenennen

Moin face-smile
Leider hab ich für folgendes Problem nur einen theoretischen Ansatz:
In einem Ordner "Source" liegt ein einzelnes PDF-Formular.
Dieses Formular wird in einem Ordner analog des jeweils aktuellen Monats, z.b. 10.17., 11.17, usw. x-mal benötigt.
(soweit der Ordner noch nicht existiert soll erangelegt werden)
Die Anzahl der jeweiligen Kopien richtet sich nach einer Textdatei\CSV in der ";"-getrennt bis zu 12 Name stehen.
(z.B. Max M, Lieschen M, Horst V,...)
Am Ende sollen genauso viele Kopien der Einzeldatei aus Source mit den entsprechenden Namen im Monatsordner stehen.
Einige Dinge wie kopieren oder auch Ordner anlegen, ggf. prüfen nach Exist sind mir aus früheren kleinen Scripte klar, hierbei stehe ich allerdings ziemlich im Wald face-sad

Ich freu mich über alles was mir an der Stelle weiterhilft und sag schon mal Danke im Voraus face-smile

VG, Uwe

Content-ID: 351562

Url: https://administrator.de/contentid/351562

Ausgedruckt am: 26.11.2024 um 03:11 Uhr

134464
Lösung 134464 12.10.2017 aktualisiert um 13:45:50 Uhr
Goto Top
Wenn die CSV so aussieht, (keine Ahnung wie du das meintest (Du schreibst ; getrennt und oben dann mit Komma???)
Name1
Name2
Name3
Name4
dann:
Const ROOT = "C:\Ordner"  
Const PDF = "D:\vorlage.pdf"  
Const CSV = "D:\datei.csv"  
Set fso = CreateObject("Scripting.FileSystemObject")  
strDate = Right("0" & Month(Date),2) & "." & Right(Year(Date),2)  
strFolder = ROOT & "\" & strDate  
arrNames = Split(fso.OpenTextFile(CSV,1).ReadAll(),vbNewLine)
If Not fso.FolderExists(strFolder) Then fso.CreateFolder strFolder
For Each name In arrNames
	If Trim(name) <> "" Then  
		strTarget = strFolder & "\" & Trim(name) & ".pdf"  
		If Not fso.FileExists(strTarget) Then fso.CopyFile PDF,strTarget,False
	End If
Next
MsgBox "Fertig"  
Wenn die CSV dagegen so aussieht
Name1;Name2;Name3
dann:
Const ROOT = "A:\test"  
Const PDF = "A:\demo.pdf"  
Const CSV = "A:\datei.csv"  
Set fso = CreateObject("Scripting.FileSystemObject")  
strDate = Right("0" & Month(Date),2) & "." & Right(Year(Date),2)  
strFolder = ROOT & "\" & strDate  
arrNames = Split(fso.OpenTextFile(CSV,1).ReadAll(),";")  
If Not fso.FolderExists(strFolder) Then fso.CreateFolder strFolder
For Each name In arrNames
	If Trim(name) <> "" Then  
		strTarget = strFolder & "\" & Trim(name) & ".pdf"  
		If Not fso.FileExists(strTarget) Then fso.CopyFile PDF,strTarget,False
	End If
Next
MsgBox "Fertig"  
Rechnung kommt dann per Post ...