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

Mitglied: killtec

killtec (Level 3) - Jetzt verbinden

03.09.2013, aktualisiert 15:40 Uhr, 1959 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
Batch & Shell
Datei nach Erstellungsdatum verschieben
Frage von Kugelschreiber1Batch & Shell2 Kommentare

Hallo, ich möchte über eine Batch-Datei Dateien, die älter als 20 Tage sind, in einen anderen Ordner verschieben. Dabei ...

Microsoft Office
Auto Vervollständigen
gelöst Frage von AndreasFredersdorfMicrosoft Office5 Kommentare

Hallo, ich habe zwei Fragen: 1) Microsoft Excel 2007: AutoVervollständigen ist gesetzt, Hochkomma in der ersten Zelle gesetzt. Funktioniert ...

PHP
Regex: auto link
gelöst Frage von BadgerPHP4 Kommentare

Hallo Leute, mittels folgenden Code durchsuche ich einen String und erzeuge klickbare Links: Den Code selbst habe ich nach ...

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
Datenschutz

SiSyPHuS Win10: Analyse der Telemetriekomponenten in Windows 10

Tipp von freesolo vor 1 TagDatenschutz1 Kommentar

Alle die sich detailliert für die Datensammlung interessieren die unter Windows 10 stattfindet, sollten sich folgende Analyse des BSI ...

Sicherheit
Adminrechte dank Intel-Grafikkarte
Information von DerWoWusste vor 1 TagSicherheit1 Kommentar

ist das Advisory, welches beschreibt, welche Intel HD Graphics Modelle Sicherheitslücken haben, mit denen sich schwache Nutzer zu Admins ...

Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 2 TagenInternet1 Kommentar

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 3 TagenWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Heiß diskutierte Inhalte
Microsoft Office
Sharepoint 2016 mag keine Umlaute in .docx-Titeln
gelöst Frage von DerWoWussteMicrosoft Office14 Kommentare

Moin Kollegen. Nutzt hier jemand Sharepoint? Könnt Ihr, unabhängig von der Sharepointversion, bitte einen Test machen? Ladet ein .docx ...

Router & Routing
Lancom-VPN-Client
Frage von FM28880Router & Routing14 Kommentare

Hallo zusammen, ich habe heute zwei Rechner mit einem Lancom VPN-Client eingerichtet. Die VPN-Verbindung wird aufgebaut und steht. Jedoch ...

Basic
VBS soll alle Ordner auswählen, die im Startmenu angezeigt werden
Frage von Senseless-CreatureBasic12 Kommentare

Guten Morgen - gibt es eine Möglichkeit, per VBS das Startmenu in Win10 zu modifizieren? Ich beherrsche VBS mittlerweile ...

Hyper-V
Hyper-V Manager startet, jedoch keine VM
Frage von NaleorHyper-V11 Kommentare

Hallo zusammen, auf meinem Windows 10 (Build 1703) Notebook von der Arbeit scheint Hyper-V plötzliche nicht mehr zu funktionieren. ...