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
GELÖST

Auto-Datumsfeld in Word durch Erstellungsdatum ersetzen

Frage Microsoft Microsoft Office

Mitglied: killtec

killtec (Level 3) - Jetzt verbinden

03.09.2013, aktualisiert 15:40 Uhr, 1858 Aufrufe, 15 Kommentare

Hallo zusammen,
folgendes Problem: In mehreren Word-Dateien sind in der Fußzeile Auto-Datums-Felder (bzw. eins pro Datei) hinzugefügt worden. Diese dürften eigentlich nicht da sein und müssen durch das Erstellungsdatum ersetzt werden.
Gibt es hier eine Möglichkeit dies ohne extremen Aufwand zu erledigen?
Es sind sowhl Word 97 als auch 2007 Dateien (also .doc und .docx)
Problem: Diese Dateien sind in mehreren Unterverzeichnissen. Das Ändern müsste also von einer Root-Ebene Rekursiv laufen.

EDIT: Ich muss im Prinzip den Teil: { TIME \@ "dd.MM.yyyy" } durch diesen ersetzen: { CREATEDATE \@ "dd.MM.yyyy" }

Gruß
Mitglied: colinardo
03.09.2013, aktualisiert um 10:11 Uhr
Hallo killtec,
könnte man mit folgendem VBS-Script so lösen:
In Zeile 1 noch den Root-Pfad zu dem Dokumenten angeben.
01.
Const strPathDocs = "E:\Scripte\docs" 
02.
 
03.
Set fso = Wscript.CreateObject("Scripting.Filesystemobject") 
04.
Set objWord = WScript.CreateObject("Word.Application") 
05.
'Wenns unsichtbar passieren soll hier auf false setzen 
06.
objWord.Visible = True 
07.
objWord.DisplayAlerts = 0 
08.
parseFolders fso.GetFolder(strPathDocs), True 
09.
objWord.DisplayAlerts = -1 
10.
objWord.Quit True 
11.
Set fso = Nothing 
12.
Set objWord = Nothing 
13.
 
14.
Function parseFolders(fldr, boolRecursion) 
15.
     
16.
    For Each file In fldr.Files 
17.
        If LCase(Right(file.Name, 3)) = "doc" Or LCase(Right(file.Name, 4)) = "docx" Then 
18.
            set objDoc = objWord.Documents.Open(file.Path) 
19.
             
20.
            For Each section In objDoc.Sections 
21.
	            For Each f In section.Footers(1).Range.Fields 
22.
	                If UCase(Left(Trim(f.Code), 4)) = "TIME" Then 
23.
	                    f.Select 
24.
	                    objDoc.Fields.Add objWord.Selection.Range, 21, "\@ ""dd.MM.yyyy""",True 
25.
	                End If 
26.
	            Next 
27.
            Next 
28.
            objDoc.Close True 
29.
        End If 
30.
    Next 
31.
     
32.
    If boolRecursion Then 
33.
		For Each subFolder in fldr.SubFolders 
34.
			parseFolders subFolder, True 
35.
		Next 
36.
	End If 
37.
End Function
probiers mal aus...

Grüße Uwe
Bitte warten ..
Mitglied: killtec
03.09.2013 um 10:22 Uhr
Hallo Uwe,
das Script öffnet zumindest die Files. Diese werden jedoch direkt wieder geschlossen. Eine Änderunge sehe ich leider nicht im Footer. Beim Überprüfen der Dateien ist mir aufgefallen, dass es auch über den Befehl "DATE" eingefügt sein kann. Demnach müsste ich ja die Zeile 22 vor dem Then mit diesem erweitern oder?:
01.
or UCase(Left(Trim(f.Code), 4)) = "DATE" Then
so dass man dann
01.
If UCase(Left(Trim(f.Code), 4)) = "TIME" or UCase(Left(Trim(f.Code), 4)) = "DATE" Then
hat, sehe ich das richtig?
Wie sieht es mit dem Speichern aus? Muss hier vor dem objDoc.Close True noch ein Save?

Gruß
Bitte warten ..
Mitglied: colinardo
03.09.2013, aktualisiert um 10:29 Uhr
Zitat von killtec:
Hallo Uwe,
das Script öffnet zumindest die Files. Diese werden jedoch direkt wieder geschlossen. Eine Änderunge sehe ich leider
Die Überprüfung geht halt so schnell das du es halt nicht siehst, jedes doc wird nach der Bearbeitung ja wieder geschlossen. Haben die Dokumente zufällig Fußzeilen speziell für die erste Seite ? Dann muss man noch eine zusätzliche Prüfung dieser "Footers" vornehmen.
Beim Überprüfen der Dateien ist mir aufgefallen, dass es auch über den Befehl "DATE"
eingefügt sein kann. Demnach müsste ich ja die Zeile 22 vor dem Then mit diesem erweitern oder?:
....
hat, sehe ich das richtig?
Ja klar kannst du machen, hatte es nur so geschrieben weil du explizit geschrieben hattest das die Dokumente "Time" verwenden.
Wie sieht es mit dem Speichern aus? Muss hier vor dem objDoc.Close True noch ein Save?
Normalerweise nicht denn das True bedeutet das das Dokument beim schließen gespeichert wird.
Bitte warten ..
Mitglied: killtec
03.09.2013 um 10:30 Uhr
Hi Uwe,
danke. Ja, habe mir die Dokumente noch mal angeschaut, mal ist es DATE mal TIME.
Funktionieren tut es so leidern icht. Die Dokumente bestehen immer nur aus einer Seite.

Gruß
Bitte warten ..
Mitglied: colinardo
03.09.2013 um 10:32 Uhr
Bei mir geht es einwandfrei. Ist in den Fußzeilen zufällig angegeben das diese nur auf der ersten Seite erscheinen sollen ? dann müsste man es noch was ändern ...
Bitte warten ..
Mitglied: colinardo
03.09.2013 um 10:37 Uhr
wenn die Fußzeile explizit für die erste Seite definiert ist muss die Zeile 21 so geändert werden:
For Each f In section.Footers(2).Range.Fields 
Bitte warten ..
Mitglied: killtec
03.09.2013 um 10:38 Uhr
Hi,
also in der Fußzeile ist das Feld "Erste Seite anders" aktiviert. Vermutlich liegt es daran.
Bitte warten ..
Mitglied: colinardo
03.09.2013, aktualisiert um 10:49 Uhr
also in der Fußzeile ist das Feld "Erste Seite anders" aktiviert. Vermutlich liegt es daran
wenn die Fußzeile explizit für die erste Seite definiert ist muss die Zeile 21 so geändert werden:
For Each f In section.Footers(2).Range.Fields 
Es gibt hier 3 Konstanten für Footers(x):
wdHeaderFooterPrimary = 1 
wdHeaderFooterFirstPage = 2 
wdHeaderFooterEvenPages = 3
Kannst diese Fälle ja mit einer zusätzlichen Schleife überprüfen.
so kämen wir dann zu folgendem Script:

01.
Const strPathDocs = "E:\Scripte\docs" 
02.
 
03.
Set fso = Wscript.CreateObject("Scripting.Filesystemobject") 
04.
Set objWord = WScript.CreateObject("Word.Application") 
05.
objWord.Visible = True 
06.
objWord.DisplayAlerts = 0 
07.
parseFolders fso.GetFolder(strPathDocs), True 
08.
objWord.DisplayAlerts = -1 
09.
objWord.Quit True 
10.
Set fso = Nothing 
11.
Set objWord = Nothing 
12.
 
13.
Function parseFolders(fldr, boolRecursion) 
14.
     
15.
    For Each file In fldr.Files 
16.
        If LCase(Right(file.Name, 3)) = "doc" Or LCase(Right(file.Name, 4)) = "docx" Then 
17.
            set objDoc = objWord.Documents.Open(file.Path) 
18.
             
19.
            For Each section In objDoc.Sections 
20.
            	For i = 1 To 3 
21.
	            	For Each f In section.Footers(i).Range.Fields 
22.
		                If UCase(Left(Trim(f.Code), 4)) = "TIME" Or UCase(Left(Trim(f.Code), 4)) = "DATE" Then 
23.
		                    f.Select 
24.
		                    objDoc.Fields.Add objWord.Selection.Range, 21, "\@ ""dd.MM.yyyy""",True 
25.
		                End If 
26.
		            Next 
27.
            	Next 
28.
	             
29.
            Next 
30.
            objDoc.Close True 
31.
        End If 
32.
    Next 
33.
     
34.
    If boolRecursion Then 
35.
		For Each subFolder in fldr.SubFolders 
36.
			parseFolders subFolder, True 
37.
		Next 
38.
	End If 
39.
End Function
Grüße Uwe
Bitte warten ..
Mitglied: killtec
03.09.2013 um 11:26 Uhr
Hi Uwe,
Danke. Das Script funktioniert nun auch bei mir
Werde das gelich auf alle Dateien ansetzen und dann berichten.

Vielen lieben Dank!!!

Gruß
Bitte warten ..
Mitglied: killtec
03.09.2013, aktualisiert um 15:33 Uhr
So, Script bleibt stehen
Leider. Problem: .doc Dokumente eines älterne Formates... Er öffnet diese nicht wegen der Geschützten Ansicht. Lässt sich diese evtl. mit dem Script noch abfangen, dass die zur Bearbeitung aktiviert wird?
Im Normalfall ist die Geschützte Ansicht schon deaktiviert

EDIT: Über ein anderen PC geht es.


Gruß
Bitte warten ..
Mitglied: killtec
03.09.2013, aktualisiert um 15:43 Uhr
Korregiere...
Wenn dieser Fehler kommt:
c8ac05ff3dbcf71f69720fbcc3cac28c - Klicke auf das Bild, um es zu vergrößern
kann man dann die Datei (Namen) nicht in eine CSV oder TXT ausgeben und das Script einfach weiter laufen lassen?

Gruß
Bitte warten ..
Mitglied: colinardo
03.09.2013 um 20:26 Uhr
Sorry wenn's etwas später geworden ist ...
hier eine Version mit weiterer Fehlerbehandlung und Logfile (Pfad dazu in Zeile 2 eintragen):

01.
Const strPathDocs = "E:\Tempfolder\Scripte\docs" 
02.
Const strPathLogfile = "E:\Tempfolder\Scripte\docs\logfile.txt" 
03.
 
04.
Set fso = Wscript.CreateObject("Scripting.Filesystemobject") 
05.
Set objWord = WScript.CreateObject("Word.Application") 
06.
objWord.Visible = True 
07.
objWord.DisplayAlerts = 0 
08.
parseFolders fso.GetFolder(strPathDocs), True 
09.
objWord.DisplayAlerts = -1 
10.
objWord.Quit True 
11.
Set fso = Nothing 
12.
Set objWord = Nothing 
13.
 
14.
Function parseFolders(fldr, boolRecursion) 
15.
     
16.
    For Each file In fldr.Files 
17.
        If LCase(Right(file.Name, 3)) = "doc" Or LCase(Right(file.Name, 4)) = "docx" Then 
18.
            On Error Resume Next 
19.
            Set objDoc = objWord.Documents.Open(file.Path) 
20.
            If Err.Number <> 0 Then 
21.
            	Set objLog = fso.OpenTextFile(strPathLogfile,3,True) 
22.
            	objLog.WriteLine("Fehler beim öffnen der Datei: -> " & file.Path) 
23.
            	objLog.Close 
24.
            Else 
25.
            	For Each section In objDoc.Sections 
26.
	            	For i = 1 To 3 
27.
		            	For Each f In section.Footers(i).Range.Fields 
28.
			                If UCase(Left(Trim(f.Code), 4)) = "TIME" Or UCase(Left(Trim(f.Code), 4)) = "DATE" Then 
29.
			                    f.Select 
30.
			                    objDoc.Fields.Add objWord.Selection.Range, 21, "\@ ""dd.MM.yyyy""",True 
31.
			                End If 
32.
			            Next 
33.
	            	Next 
34.
	            Next 
35.
	            objDoc.Close True 
36.
            End If 
37.
        End If 
38.
    Next 
39.
     
40.
    If boolRecursion Then 
41.
		For Each subFolder in fldr.SubFolders 
42.
			parseFolders subFolder, True 
43.
		Next 
44.
	End If 
45.
End Function
schönen Feierabend
G. Uwe
Bitte warten ..
Mitglied: killtec
04.09.2013 um 07:46 Uhr
Hi Uwe,
vielen lieben Dank. Spendiere dir einen Virtuelle Kaffee ;)

Gruß
Bitte warten ..
Mitglied: killtec
04.09.2013 um 09:35 Uhr
Hi,
so, alle Dokumente sind angepasst. Kann mich nur sehr bei dir bedanken.

Gruß
Bitte warten ..
Mitglied: colinardo
04.09.2013 um 10:08 Uhr
Kaffee war gut
gern geschehen...

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Word 2010: Suchen und Ersetzen mit Querverweis
gelöst Frage von malikaMicrosoft Office10 Kommentare

Hallo, ich bräuchte einen Tipp. Wie kann man im Word 2010 nach einem bestimmten Text über die Funktion »Suchen ...

VB for Applications
VBS - Suchen und Ersetzen in Word 2010 in Kopfzeile
gelöst Frage von JuckieVB for Applications7 Kommentare

Hallo zusammen, ich stehe bei einem VBS ein wenig auf dem Schlauch. Ich habe ein VBS, welches in Verzeichnissen ...

Microsoft Office
BMP Bild mit Text aus Word Datei ersetzen
gelöst Frage von Timo0oMicrosoft Office16 Kommentare

Halli Hallo, ich habe eine kurze Frage, vielleicht kann mir dadurch ja jemand viel Arbeit ersparen! Undzwar habe ich ...

Microsoft Office
Speicherproblem mit Excel als CSV-Datei (Datumsfeld)
gelöst Frage von Gast2015Microsoft Office6 Kommentare

Hallo :-), Ich müsste euch mal wieder etwas fragen :-P und zwar muss ich eine Exceldatei mit einem Datumsfeld ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 15 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 20 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 20 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...

Blogs
Immer wiederkehrende PHP Fehlermeldung bei Wordpress UTF-8 - ASCII
gelöst Frage von vcdweltBlogs11 Kommentare

Hi, seit einiger Zeit wird mein error_log meines Wordpress Blogs mit immer der gleichen Fehlermeldung überschwemmt. 14-Dec-2017 08:18:05 UTC ...

Switche und Hubs
Redundante L2 LWL Leitung über 2 Standorte - Spanning Tree - HP Equipment
gelöst Frage von ResolvSwitche und Hubs10 Kommentare

Hallo, ich stehe vor der Herausforderung eine Redundante L2 LWL Leitung über 2 Standorte herzustellen. Grundsätzliches Switching Know How ...