Top-Themen

Aktuelle Themen (A bis Z)

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, 3044 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 ..
Ähnliche Inhalte
Batch & Shell
Alle Dateien in Verzeichnis und Unterverzeichnissen löschen, mit Ausnahme aller.txt-Dateien
gelöst Frage von tegwertBatch & Shell5 Kommentare

Hallo zusammen! Ich habe zum löschen aller Dateien in bestimmten Verzeichnissen und dessen Unterverzeichnissen folgende Batchzeile erstellt: Dabei muss ...

Batch & Shell
Programm in allen Unterverzeichnissen ausführen
gelöst Frage von RotnasenkaterBatch & Shell8 Kommentare

Servus, liebe Gemeinde! Da mir hier schonmal so freundlich und kompetent geholfen wurde, wende ich mich nochmals mit einer ...

Microsoft Office
PDF Dateien mit Word öffnen und bearbeiten?
gelöst Frage von BigSnakeyeMicrosoft Office2 Kommentare

Hallöchen! Kurz mal eine Frage - gibt es ein Add-In oder Tool um PDF Dateien im MS Word (2007/2010) ...

VB for Applications
Vbscript batch bei änderung ausführen
Frage von chgs2011VB for Applications1 Kommentar

Hallo, ich habe ein Batch-File, das mir einige Arbeiten erleichtert. Ich möchte aber das Batch-File nicht im Minutentakt antriggern, ...

Neue Wissensbeiträge
Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 12 StundenMac OS X1 Kommentar

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 19 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 20 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 1 TagMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1018 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...