Let op: Tweakers stopt per 2023 met Tweakblogs. In dit artikel leggen we uit waarom we hiervoor hebben gekozen.

Word : "Contact opnemen met..."

Door DaLass op maandag 13 juli 2020 08:25 - Reacties (9)
Categorie: Office, Views: 4.597

Recent werd ik door een collega gevraagd om eens mee te denken met een geval van traagheid bij het starten van Word. In de betreffende case was er sprake van een vertraging van +/- 1 minuut bij het openen van een ouder Word document welke al meer dan een half jaar geleden is aangemaakt. Bij het openen van het bestand was het mooie blauwe start-scherm van Word te zien, met onderin de volgende tekst:

Contact opnemen met \\SERVER01\Share$\Bedrijf\Templates

Dit scherm bleef ongeveer een minuut staan, waarna het document geopend werd. Wat opviel in het start-scherm was dat er verwezen werd naar SERVER01, welke al een half jaar niet meer bestaat en is gemigreerd naar SERVER02. Alle bestanden die op SERVER02 zijn aangemaakt, hebben ook geen problemen en worden gewoon snel geopend in Word. Tijd om even verder te kijken.

De documenten in kwestie zijn .DOCX bestanden, wat eigenlijk gewoon archieven zijn. Bij een voorbeeld document hebben we de extensie dan ook hernoemd naar .ZIP en zijn we gaan spitten in het archief om de verwijzing naar de betreffende template locatie te kunnen vinden. De verwijzing was terug te vinden in het bestand settings.xml.rels, te vinden in de map word\_rels van het archief. Hierin was het volgende te vinden:

code:
1
2
3
4
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
    <Relationship TargetMode="External" Target="file:///\\SERVER01\Share$\Bedrijf\Templates\Template.dotx" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/attachedTemplate" Id="rId1"/>
</Relationships>

Na het handmatig aanpassen van de template verwijzing naar de nieuwe locatie (\\SERVER02.domein.nl\Share\Bedrijf\Templates\Template.dotx) hebben we het archief weer terug hernoemd naar .DOCX om te kijken of de wijziging effect zou hebben, en met succes: Het bestand kon weer snel geopend worden en werd met de juiste template geladen.

Maar nu... De map in kwestie is een datamap van een applicatie die word documenten opslaat en bevat (inclusief submappen) enkele duizenden word documenten. Niet echt een klus om met de hand aan te gaan passen. Gelukkig waren wij niet de enige die tegen dit probleem zijn aangelopen en is er iemand geweest die daar een tooltje voor geschreven heeft, genaamd Word Template Corrector:




De tool moet je zelf even compilen (je kunt ook de binary aanschaffen en de ontwikkelaar supporten) met de instructies op bovenstaande website, en dan heb je een mooie executable genaamd wtc.exe die je kan helpen met het aanpassen van de template locatie in de .DOCX bestanden.

Het runnen van wtc.exe zonder verder input toont de info hoe je de applicatie kunt gebruiken:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
C:\Temp>wtc.exe
Word Template Corrector
Correcting wrong paths to templates in MS Office Word documents.
USE AT YOUR OWN RISK.

WTC 1.0.0.3
Don't panic!

ERROR(S):
  -d/--directory required option is missing.
  -o/--old required option is missing.
  -n/--new required option is missing.


  -d, --directory    Required. working directory.

  -o, --old          Required. The old part of the templates path to be
                     replaced.

  -n, --new          Required. The new (replacement) part of the templates
                     path.

  -r, --recursive    Recurse through subdirectories.

  -b, --nobackup     (Default: False) Do NOT create a backup (.bak) of each
                     changed document.

  -t, --dry-run      (Default: False) Do not change any files (for testing).

  -v, --verbose      (Default: False) Activates verbose error messages.

  -p, --preserve     (Default: False) Preserve permissions & dates

  --help             Display this help screen.


  Example: wtc -d \\server\share\documents -o \\oldserver\share\templates\ -n \\server\share\templates\ -r

C:\Temp>

Goed, laten we eens een dry run doen op een originele versie van het document:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C:\Temp>wtc.exe -d "C:\Temp\Docs" -o \\SERVER01\Share$\Bedrijf\Templates\Template.dotx -n \\SERVER02.domein.nl\Share\Bedrijf\Templates\Template.dotx -t -p
Directory   : C:\Temp\Docs
Search for  : \\SERVER01\Share$\Bedrijf\Templates\Template.dotx
Replace with: \\SERVER02.domein.nl\Share\Bedrijf\Templates\Template.dotx
no Backups  : False
Recursive   : False
Preserve    : True
Dry run     : True
AFFECTED C:\Temp\Docs\Testdocument.docx
1 file(s) scanned
1 file(s) affected and need correction
0 error(s) occured
Runtime 00:00:00.04

C:\Temp>

De dry-run is goed gegaan, maar de locatie van de template is te specifiek, want op de share is er sprake van meerdere templates. Het liefst vervangen we dus alleen het begin van de share, aangezien alleen de servernaam en de sharenaam zijn gewijzigd en de rest van de template locatie(s) gelijk gebleven zijn.

Nogmaals een dry-run, alleen wat algemener:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C:\Temp>wtc.exe -d "C:\Temp\Docs" -o \\SERVER01\Share$\ -n \\SERVER02.domein.nl\Share\ -t -p
Directory   : C:\Temp\Docs
Search for  : \\SERVER01\Share$\
Replace with: \\SERVER02.domein.nl\Share\
no Backups  : False
Recursive   : False
Preserve    : True
Dry run     : True
AFFECTED C:\Temp\Docs\Testdocument.docx
1 file(s) scanned
1 file(s) affected and need correction
0 error(s) occured
Runtime 00:00:00.04

C:\Temp>

Nice, dat werkt ook. Ok, dan eens geen dry-run, maar een daadwerkelijke aanpassing:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C:\Temp>wtc.exe -d "C:\Temp\Docs" -o \\SERVER01\Share$\ -n \\SERVER02.domein.nl\Share\ -p
Directory   : C:\Temp\Docs
Search for  : \\SERVER01\Share$\
Replace with: \\SERVER02.domein.nl\Share\
no Backups  : False
Recursive   : False
Preserve    : True
Dry run     : False
CHANGED C:\Temp\Docs\Testdocument.docx
1 file(s) scanned
1 file(s) corrected
0 error(s) occured
Runtime 00:00:00.06

C:\Temp>

Een controle in de .DOCX laat zien dat het bestand settings.xml.rels netjes is aangepast naar de nieuwe locatie en het word document kan ook zonder problemen en snel geopend worden. Voor de uiteindelijke uitvoer op de locatie van de bestanden passen we nog de volgende wijzigingen toe:
  • Voor de dry-run:
    wtc.exe -d "<ROOT_DOCX_BESTANDEN>" -o \\SERVER01\Share$\ -n \\SERVER02.domein.nl\Share\ -t -r -p
    (-r toegevoegd, zodat ook de submappen meegepakt worden).
  • Extra backup draaien van de locatie van de DOCX bestanden, alvorens we daadwerkelijke aanpassing uitvoeren.
  • Voor de aanpassing:
    wtc.exe -d "<ROOT_DOCX_BESTANDEN>" -o \\SERVER01\Share$\ -n \\SERVER02.domein.nl\Share\ -r -b -p
    (-t verwijderd, het is geen dry-run meer. -b toegevoegd, het proces hoeft geen .bak te maken van elk aangepast document, daar hebben we al een backup voor).
Het uiteindelijke resultaat:
Met minimale inspanning alle documenten van de klant aangepast, zodat deze weer snel en met de juiste template verwijzing(en) geopend kunnen worden.




Voor het oplossen zijn de volgende bronnen gebruikt: