Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBScript alle Word dateien einem Verzeichnis und Unterverzeichnissen öffnen und Makro Ausführen

Frage Entwicklung VB for Applications

Mitglied: alex-fw

alex-fw (Level 1) - Jetzt verbinden

02.04.2014 um 12:24 Uhr, 2630 Aufrufe, 5 Kommentare, 1 Danke

Hallo,

ich versuche ein VBSScript zu basteln, welche mir weiter helfen kann.
Im einem Verzeichnis und Unterverzeichnissen sind mehrere Word und Excel Dateien mit gleiche Makro Name.
Ich möchte per vbsscript diese makro im hintergrund ausführen.
Wenn möglich, nur an die Dateien, die in letze Monat geändert worden sind.

An einem datei funktioniert per folgende code:

Sub wdStart()
Dim wdApp
Set wdApp = CreateObject("Word.Application")
'wdApp.Documents.Add
wdApp.visible = False
wdApp.Documents.Open "D:\test\1\2\3\test.doc"
wdApp.Run "Modul1.makro"
End Sub

wdStart


Kann mir jemand da weiter helfen.
Mitglied: colinardo
02.04.2014, aktualisiert 04.04.2014
Hallo alex, Willkommen im Forum.
Das gewünschte Kannst du hiermit machen (Kommentare im Code). Die Funktion welche jeweils aufgerufen werden soll legst du in Zeile 57 und 76 fest jeweils für Excel- und Word-Dokumente
01.
'Pfad zu den Dokumenten 
02.
Const strPathDocs = "E:\dokumente" 
03.
'Logfile für eventuell auftretende Fehler 
04.
Const strPathLogfile = "E:\dokumente\logfile.txt" 
05.
'Erweiterungen der Dateien die bearbeitet werden sollen 
06.
arrFileExtensions = Array("doc","docm","xlsm","xls") 
07.
 
08.
Set fso = Wscript.CreateObject("Scripting.Filesystemobject") 
09.
Set objShell = CreateObject("Wscript.Shell") 
10.
Dim intDocCount, intErrCount, objExcel, objWord 
11.
Set objExcel = CreateObject("Excel.Application") 
12.
Set objWord = WScript.CreateObject("Word.Application") 
13.
'Applikation anzeigen und eventuelle Dialoge für Batchbetrieb unterdrücken 
14.
objExcel.Visible = True 
15.
objExcel.DisplayAlerts = 0 
16.
objWord.Visible = True 
17.
objWord.DisplayAlerts = 0 
18.
 
19.
'Im Ordner Rekursiv alle Dokumente mit den angegebenen Extensions verarbeiten 
20.
parseFolders fso.GetFolder(strPathDocs), True 
21.
 
22.
objExcel.DisplayAlerts = True 
23.
objExcel.Quit 
24.
objWord.DisplayAlerts = True 
25.
objWord.Quit 
26.
 
27.
If intErrCount = 0 Then 
28.
	MsgBox "Es wurden insgesamt " & intDocCount & " Dokumente verarbeitet.", vbInformation, "Verarbeitung abgeschlossen" 
29.
Else 
30.
	MsgBox "Es wurden insgesamt " & intDocCount & " Dokumente verarbeitet." & vbCrLf & "Davon ist bei " & intErrCount & " Dokumenten ein Fehler aufgetreten!", vbInformation, "Verarbeitung abgeschlossen" 
31.
	objShell.Run "Notepad.exe " & strPathLogfile 
32.
End If 
33.
 
34.
Set objShell = Nothing 
35.
Set objWord = Nothing 
36.
Set objExcel = Nothing 
37.
Set fso = Nothing 
38.
'Ende 
39.
 
40.
Function parseFolders(fldr, boolRecursion) 
41.
    For Each file In fldr.Files 
42.
    	For i = 0 To UBound(arrFileExtensions) 
43.
			If LCase(arrFileExtensions(i)) = LCase(fso.GetExtensionName(file.Path)) And file.DateLastModified > DateAdd("m",-1,Now()) Then 
44.
				intDocCount = intDocCount + 1  
45.
				Select Case Left(LCase(fso.GetExtensionName(file.Path)),2) 
46.
					Case "xl"	' wenn es ein Excel-Workbook ist .... 
47.
						 
48.
						'Fehlerbehandlung für den Fall das ein Fehler beim Öffnen eines Dokumentes auftritt 
49.
						On Error Resume Next 
50.
			            Set objWB = objExcel.Workbooks.Open(file.Path) 
51.
			            If Err.Number <> 0 Then 
52.
			            	intErrCount = intErrCount + 1 
53.
			            	WriteLog "!!ERROR!! Fehler beim öffnen der Datei: -> '" & file.Path & "'" 
54.
                                        Err.Clear 
55.
			            Else 
56.
			            	' Funktion im Workbook ausführen 
57.
			            	objExcel.Run "Modul1.MyTestModul" 
58.
			            	'------------------------------- 
59.
			            	objWB.Save 
60.
			            	objWB.Close 
61.
			            	WriteLog "Workbook wurde verarbeitet: ->'" & file.Path & "'" 
62.
			            End If 
63.
						 
64.
						 
65.
					Case "do"	' wenn es ein Word-Dokument ist .... 
66.
						 
67.
						'Fehlerbehandlung für den Fall das ein Fehler beim Öffnen eines Dokumentes auftritt 
68.
			            On Error Resume Next 
69.
			            Set objDoc = objWord.Documents.Open(file.Path) 
70.
			            If Err.Number <> 0 Then 
71.
			            	intErrCount = intErrCount + 1 
72.
			            	WriteLog "!!ERROR!! Fehler beim öffnen der Datei: -> '" & file.Path & "'" 
73.
                                        Err.Clear 
74.
			            Else 
75.
			            	'Funktion ausführen 
76.
			            	objWord.Run "Modul1.MyTestModul" 
77.
			            	'------------------ 
78.
			            	objDoc.Save 
79.
			            	objDoc.Close 
80.
			            	WriteLog "Dokument wurde verarbeitet: ->'" & file.Path & "'" 
81.
			            End If 
82.
			             
83.
				End Select 
84.
				Exit For 
85.
	         End If 
86.
		Next 
87.
    Next 
88.
     
89.
    'Funktion wird rekursiv aufrufen wenn das durchsuchen aller Unterordner gewünscht ist 
90.
    If boolRecursion Then 
91.
		For Each subFolder in fldr.SubFolders 
92.
			parseFolders subFolder, True 
93.
		Next 
94.
	End If 
95.
End Function 
96.
 
97.
Function WriteLog(strText) 
98.
	Set objLog = fso.OpenTextFile(strPathLogfile,8,True) 
99.
	logline = Now & " - " & strText 
100.
	objLog.WriteLine(logline) 
101.
	objLog.Close 
102.
End Function
Grüße Uwe
Bitte warten ..
Mitglied: alex-fw
02.04.2014 um 14:31 Uhr
Hallo Uwe,

viele Dank, funktioniert soweit ok bis auf Fehlermeldung zum Schluss.


http://s1.directupload.net/images/140402/3d59u86k.png

Wie kann ich noch ergänzen, dass nur im letzten Monat geänderte Dateien geöffnet werden?

Danke nochmal!

Gruß Alex
Bitte warten ..
Mitglied: colinardo
02.04.2014, aktualisiert um 14:44 Uhr
Zitat von alex-fw:
viele Dank, funktioniert soweit ok bis auf Fehlermeldung zum Schluss.
http://s1.directupload.net/images/140402/3d59u86k.png
alter geile Fehlermeldung, die kenn ich noch nicht, kann ich hier aber auch nicht nachvollziehen

Wie kann ich noch ergänzen, dass nur im letzten Monat geänderte Dateien geöffnet werden?
ist oben ergänzt ...
Bitte warten ..
Mitglied: alex-fw
02.04.2014, aktualisiert 04.04.2014
Hallo Uwe,

ich habe den Code getrennt, in Excel und Word
Excel funktioniert gut, Word macht problemme.
Wo die Fehler her kommt habe ich gefunden,
Zeile 22
wenn ich die
objWord.DisplayAlerts = True
objWord.Quit
ausblende, wird Makro an erste Dokument in Verzeichnissen ausgeführt, alle andere werden nicht angesprochen.
es wird immer bei die erste Datei in Verzeichnissen die gewünschte Funktionen ausgeführt,
bei die weiteren kommt Fehler:
03.04.2014 09:45:13 - Dokument wurde verarbeitet: ->'G:\1.doc
03.04.2014 09:45:13 - !!ERROR!! Fehler beim öffnen der Datei: -> 'G:\2.doc

01.
''Word 
02.
'Pfad zu den Dokumenten 
03.
Const strPathDocs = "D:\test" 
04.
'Logfile für eventuell auftretende Fehler 
05.
Const strPathLogfile = "G:\logfile.txt" 
06.
'Erweiterungen der Dateien die bearbeitet werden sollen 
07.
arrFileExtensions = Array("docm","doc") 
08.
 
09.
Set fso = Wscript.CreateObject("Scripting.Filesystemobject") 
10.
Set objShell = CreateObject("Wscript.Shell") 
11.
Dim intDocCount, intErrCount, objWord 
12.
Set objWord = WScript.CreateObject("Word.Application") 
13.
 
14.
'Applikation anzeigen und eventuelle Dialoge für Batchbetrieb unterdrücken 
15.
objWord.Visible = False 
16.
objWord.DisplayAlerts = 0 
17.
 
18.
 
19.
'Im Ordner Rekursiv alle Dokumente mit den angegebenen Extensions verarbeiten 
20.
parseFolders fso.GetFolder(strPathDocs), True 
21.
 
22.
 
23.
objWord.DisplayAlerts = True 
24.
objWord.Quit 
25.
 
26.
 
27.
 
28.
 
29.
Set objShell = Nothing 
30.
 
31.
Set objExcel = Nothing 
32.
Set fso = Nothing 
33.
'Ende 
34.
 
35.
If intErrCount = 0 Then 
36.
	MsgBox "Es wurden insgesamt " & intDocCount & " Dokumente verarbeitet.", vbInformation, "Verarbeitung abgeschlossen" 
37.
Else 
38.
	MsgBox "Es wurden insgesamt " & intDocCount & " Dokumente verarbeitet." & vbCrLf & "Davon ist bei " & intErrCount & " Dokumenten ein Fehler aufgetreten!", vbInformation, "Verarbeitung abgeschlossen" 
39.
	objShell.Run "Notepad.exe " & strPathLogfile 
40.
End If 
41.
 
42.
Function parseFolders(fldr, boolRecursion) 
43.
    For Each file In fldr.Files 
44.
    	For i = 0 To UBound(arrFileExtensions) 
45.
			If LCase(arrFileExtensions(i)) = LCase(fso.GetExtensionName(file.Path)) And file.DateLastModified > DateAdd("m",-1,Now()) Then 
46.
				intDocCount = intDocCount + 1  
47.
				Select Case Left(LCase(fso.GetExtensionName(file.Path)),2) 
48.
					Case "do"	' wenn es ein Word-Dokument ist .... 
49.
						 
50.
						'Fehlerbehandlung für den Fall das ein Fehler beim Öffnen eines Dokumentes auftritt 
51.
			            On Error Resume Next 
52.
			            Set objDoc = objWord.Documents.Open(file.Path) 
53.
			            If Err.Number <> 0 Then 
54.
			            	intErrCount = intErrCount + 1 
55.
			            	WriteLog "!!ERROR!! Fehler beim öffnen der Datei: -> '" & file.Path & "'" 
56.
			            Else 
57.
			            	'Funktion ausführen 
58.
			            	objWord.Run "backup.pdf" 
59.
			            	'------------------ 
60.
			            	'objDoc.Save 
61.
			            	objDoc.Close 
62.
			            	WriteLog "Dokument wurde verarbeitet: ->'" & file.Path & "'" 
63.
			            End If 
64.
			             
65.
				End Select 
66.
				Exit For 
67.
	         End If 
68.
		Next 
69.
    Next 
70.
     
71.
    'Funktion wird rekursiv aufrufen wenn das durchsuchen aller Unterordner gewünscht ist 
72.
    If boolRecursion Then 
73.
		For Each subFolder in fldr.SubFolders 
74.
			parseFolders subFolder, True 
75.
		Next 
76.
	End If 
77.
End Function 
78.
 
79.
Function WriteLog(strText) 
80.
	Set objLog = fso.OpenTextFile(strPathLogfile,8,True) 
81.
	logline = Now & " - " & strText 
82.
	objLog.WriteLine(logline) 
83.
	objLog.Close 
84.
End Function
01.
'Excel 
02.
'Pfad zu den Dokumenten 
03.
Const strPathDocs = "D:\test" 
04.
'Logfile für eventuell auftretende Fehler 
05.
Const strPathLogfile = "G:\logfile.txt" 
06.
'Erweiterungen der Dateien die bearbeitet werden sollen 
07.
arrFileExtensions = Array("xlsm","xls") 
08.
 
09.
Set fso = Wscript.CreateObject("Scripting.Filesystemobject") 
10.
Set objShell = CreateObject("Wscript.Shell") 
11.
Dim intDocCount, intErrCount, objExcel 
12.
Set objExcel = CreateObject("Excel.Application") 
13.
 
14.
'Applikation anzeigen und eventuelle Dialoge für Batchbetrieb unterdrücken 
15.
objExcel.Visible = False 
16.
objExcel.DisplayAlerts = 0 
17.
 
18.
 
19.
'Im Ordner Rekursiv alle Dokumente mit den angegebenen Extensions verarbeiten 
20.
parseFolders fso.GetFolder(strPathDocs), True 
21.
 
22.
 
23.
objExcel.DisplayAlerts = True 
24.
objExcel.Quit 
25.
 
26.
 
27.
 
28.
 
29.
Set objShell = Nothing 
30.
 
31.
Set objExcel = Nothing 
32.
Set fso = Nothing 
33.
'Ende 
34.
 
35.
If intErrCount = 0 Then 
36.
	MsgBox "Es wurden insgesamt " & intDocCount & " Dokumente verarbeitet.", vbInformation, "Verarbeitung abgeschlossen" 
37.
Else 
38.
	MsgBox "Es wurden insgesamt " & intDocCount & " Dokumente verarbeitet." & vbCrLf & "Davon ist bei " & intErrCount & " Dokumenten ein Fehler aufgetreten!", vbInformation, "Verarbeitung abgeschlossen" 
39.
	objShell.Run "Notepad.exe " & strPathLogfile 
40.
End If 
41.
 
42.
Function parseFolders(fldr, boolRecursion) 
43.
    For Each file In fldr.Files 
44.
    	For i = 0 To UBound(arrFileExtensions) 
45.
			If LCase(arrFileExtensions(i)) = LCase(fso.GetExtensionName(file.Path)) And file.DateLastModified > DateAdd("m",-1,Now()) Then 
46.
				intDocCount = intDocCount + 1  
47.
				Select Case Left(LCase(fso.GetExtensionName(file.Path)),2) 
48.
					Case "xl"	' wenn es ein Excel-Workbook ist .... 
49.
						 
50.
						'Fehlerbehandlung für den Fall das ein Fehler beim Öffnen eines Dokumentes auftritt 
51.
						On Error Resume Next 
52.
			            Set objWB = objExcel.Workbooks.Open(file.Path) 
53.
			            If Err.Number <> 0 Then 
54.
			            	intErrCount = intErrCount + 1 
55.
			            	WriteLog "!!ERROR!! Fehler beim öffnen der Datei: -> '" & file.Path & "'" 
56.
			            Else 
57.
			            	' Funktion im Workbook ausführen 
58.
			            	objExcel.Run "backup.pdf" 
59.
			            	'------------------------------- 
60.
			            	'objWB.Save 
61.
			            	objWB.Close 
62.
			            	WriteLog "Workbook wurde verarbeitet: ->'" & file.Path & "'" 
63.
			            End If 
64.
						 
65.
						 
66.
		 
67.
			 
68.
			             
69.
				End Select 
70.
				Exit For 
71.
	         End If 
72.
		Next 
73.
    Next 
74.
     
75.
    'Funktion wird rekursiv aufrufen wenn das durchsuchen aller Unterordner gewünscht ist 
76.
    If boolRecursion Then 
77.
		For Each subFolder in fldr.SubFolders 
78.
			parseFolders subFolder, True 
79.
		Next 
80.
	End If 
81.
End Function 
82.
 
83.
Function WriteLog(strText) 
84.
	Set objLog = fso.OpenTextFile(strPathLogfile,8,True) 
85.
	logline = Now & " - " & strText 
86.
	objLog.WriteLine(logline) 
87.
	objLog.Close 
88.
End Function
kannst du bitte mir weiterhelfen
Bitte warten ..
Mitglied: alex-fw
04.04.2014 um 11:34 Uhr
Hallo,

kann mir keine weiterhelfen?
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Microsoft Office
gelöst Makro wird beim öffnen Vorlage nicht ausgeführt (8)

Frage von Sunny89 zum Thema Microsoft Office ...

Microsoft Office
Mehr als 20 Excel Dateien öffnen gleichzeitig (7)

Frage von PizzaPepperoni zum Thema Microsoft Office ...

Batch & Shell
gelöst Dateien in einem Verzeichnis mergen - rekursiv (10)

Frage von frad1980 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...