minista
Goto Top

Word Dokumentvorlage automatisch aktualisieren

Hallo Zusammen

Ich nutze verschiedene Vorlagen in Word 2013. Hin und wieder gibt es Anpassungen bei den Schriftvorlagen. Diese sollten dementsprechend in den Subdokumenten, also jene Dokumente welche aufgrund der Vorlage erstellt wurden, aktualisiert werden. Ist der Hacken für die automatische Template Aktualisierung aktiv, funktioniert das wunderbar.

t13124f1

Die Problematik: Viele User vergessen diesen Hacken zu setzen wodurch keine Aktualisierung statt findet. Man muss dann jedes Mal mühsam den Link neu setzen, etc.
Gerne möchte ich dass bei Word der Hacken jeweils automatisch gesetzt ist wenn ein neues Word geöffnet wird.

Ich habe bereits ein Makro gefunden, welches als Lösung dienen würde, jedoch möchte ich dies gerne mit einem Registry-Key Eintrag lösen. Weiss jemand wie der geht?

Content-ID: 298458

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

Ausgedruckt am: 15.11.2024 um 21:11 Uhr

126919
126919 07.03.2016 aktualisiert um 13:43:19 Uhr
Goto Top
jedoch möchte ich dies gerne mit einem Registry-Key Eintrag lösen. Weiss jemand wie der geht?
Die Einstellung ist auf Document-Level-Ebene gesetzt, einen Registry-Eintrag kann es also dafür nicht geben.

Könnte man höchstens noch durch nachträgliches Bearbeiten der XML-Files innerhalb des Word-Dokuments modifizieren.

Gruß fk
emeriks
emeriks 07.03.2016 um 13:40:22 Uhr
Goto Top
Hi,
Ich habe bereits ein Makro gefunden, welches als Lösung dienen würde, jedoch möchte ich dies gerne mit einem Registry-Key Eintrag lösen. Weiss jemand wie der geht?
Das ist eine Dokument-Eigenschaft, welche im Dokument gespeichert ist. Sowas kann man nicht per Registry voreinstellen.

E.
minista
minista 07.03.2016 um 13:47:30 Uhr
Goto Top
XML-Files..... cool! Wie würde der Eintrag lauten?
126919
126919 07.03.2016 um 13:49:34 Uhr
Goto Top
Zitat von @minista:
XML-Files..... cool! Wie würde der Eintrag lauten?
muss ich erst mal nachsehen
emeriks
emeriks 07.03.2016 um 14:01:51 Uhr
Goto Top
muss ich erst mal nachsehen
Oder er selbst ...

Die DOCX sind nichts weiter als ZIP-Dateien. Wenn man diese extrahiert, dann werden ein paar XML ausgepackt. In einer davon müsste diese Einstellung auftauchen. Ändern und die Dateien wieder zippen, wieder zu DOCX umbenennen.
Das Ganze als PS. Sollte gehen.
126919
Lösung 126919 07.03.2016 aktualisiert um 16:38:55 Uhr
Goto Top
Zitat von @emeriks:
Die DOCX sind nichts weiter als ZIP-Dateien.
Aber auch nur zum Teil. Die Einstellung scheint binär hinterlegt zu sein soweit ich das im Moment sehe. In den Files ist nach einem Vergleich zischen zwei Versionen kein Unterschied erkennbar. Im binären Bereich jedoch schon, aber eine Regelmäßigkeit ist auf den ersten Blick nicht erkennbar.

Aber ein Aktualisieren aller Dokumente mit der Option
ActiveDocument.UpdateStylesOnOpen = True
ist ja mit einem Makro auch schnell erledigt.
colinardo
Lösung colinardo 07.03.2016 aktualisiert um 16:38:57 Uhr
Goto Top
Hallo zusammen.
Die Einstellung die ihr braucht ist in der XML-Datei word/settings.xml im Word-Dokument enthalten wenn man es als ZIP umbenennt und öffnet. Es ist ein leeres Element was hinzugefügt werden muss
<w:linkStyles/>

Folgendes Powershell-Skript könntest du benutzen um in einer Hand voll Dokumente die Einstellung zu ergänzen:

# Benötigt wird mindestens NET-Framework 4.5 und Powershell 3.0
if ($PSVersionTable.PSVersion.Major -lt 3){write-host "ERROR: Minimum Powershell Version 3.0 is required!" -F Yellow; return}   

# benötigte Assemblies laden
Add-Type -AssemblyName System.IO.Compression
Add-Type -AssemblyName System.IO.Compression.Filesystem

# Pfad zu den Dateien
$pathFiles = 'C:\Daten'  

$files = gci "$pathFiles\*.doc[xm]" -Recurse -File  
foreach ($file in $files){
    # Word-Dokument als ZIP-Datei im Update-Modus öffnen
    $zipfile = [System.IO.Compression.ZipFile]::Open($file.FullName,[System.IO.Compression.ZipArchiveMode]::Update)
    
    # Temporäre Extrahierungs-Pfade für die Dateien die geändert werden
    $pathSettingsFile = "$env:TEMP\settings.xml"  
    
    # Falls die temoporäre Datei existiert lösche sie
    if((Test-Path $pathSettingsFile)){del $pathSettingsFile -Force}
    
    # Einträge der benötigte Dateien aus dem Dokument holen
    $entry1 = $zipfile.Entries | ?{$_.Fullname -eq 'word/settings.xml'}  
    
    if ($entry1){
        # word/settings.xml extrahieren
        [System.IO.Compression.ZipFileExtensions]::ExtractToFile($entry1,$pathSettingsFile)

        [xml]$xml = gc $pathSettingsFile

        if ($xml.settings.linkStyles -eq $null){
            $xml.Settings.AppendChild($xml.CreateElement('w','linkStyles','http://schemas.openxmlformats.org/wordprocessingml/2006/main')) | out-null  
            $xml.Save($pathSettingsFile)
        
            # alte Settingsdatei aus der Word-Datei entfernen
            $entry1.Delete()

            # geänderte Dateien wieder hinzufügen
        [System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($zipfile,$pathSettingsFile,'word/settings.xml') | out-null  

            write-host "$($file.FullName) ==> Update durchgeführt." -ForegroundColor Green  
        }else{
            write-host "$($file.FullName) ==> Kein Update nötig." -ForegroundColor Gray  
        }
    }
    # Zipfile-Resourcen freigeben
    $zipfile.Dispose()
}
Grüße Uwe
126919
Lösung 126919 08.03.2016 um 08:37:58 Uhr
Goto Top
Wow, das Element hatte ich komplett übersehen. Top-Lösung face-smile

fk
minista
minista 15.11.2016 um 09:55:18 Uhr
Goto Top
Das mit dem <w:linkStyles/> funktioniert nicht. Anstelle kann man im XML File folgendes eintragen und der Hacken ist gesetzt:

<w:linkStyles w:val="true" />
colinardo
colinardo 15.11.2016 um 10:38:48 Uhr
Goto Top
Das mit dem <w:linkStyles/> funktioniert nicht.
Doch face-smile