Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Office 2010, Word Verknüpfte Vorlage per VBA entfernen

Frage Microsoft Microsoft Office

Mitglied: pixel24

pixel24 (Level 1) - Jetzt verbinden

18.01.2014 um 09:33 Uhr, 6876 Aufrufe, 13 Kommentare

Hallo zusammen,

wir haben in vielen Dokumenten in Word eine Vorlagen-Verknüpung (Datei -> Optionen -> AddIns -> Vorlagen enthalten die nicht mehr relevant sind und entfernt werden müssen.

Diese zeigen auf einen alten Server der nicht mehr existiert und deshalb dauert das öffnen der Dokumente eine kleine Ewigkeit. Diese Verknüpfungen sehen in etwa so aus:

\\192.168.3.1\daten\WBS\Personal\Arbeitsvertraege EUR\die_alte_vorlage.dotx

Nun ist es nicht machbar alle Dokumente per Hand zu öffen und diese Verknüpfung zu entfernen. Bei Microsoft habe ich hierzu folgenden Artikel bzw. Lösung mittels VBA gefunden:

http://support.microsoft.com/?kbid=830561#4

Habe darin also lediglich die Variable OldServer entsprechend angepasst:


Sub Test()
Dim strFilePath As String
Dim strPath As String
Dim intCounter As Integer
Dim strFileName As String
Dim OldServer As String
Dim objDoc As Document
Dim objTemplate As Template
Dim dlgTemplate As Dialog
Dim nServer As Integer

'hardcode the name of the old server.

OldServer = "{192.168.3.1}"
nServer = Len(OldServer)
strFilePath = InputBox("What is the folder location that you want to use?")

If Right(strFilePath, 1) <> "\" Then strFilePath = strFilePath & "\"

strFileName = Dir(strFilePath & "*.doc")
Do While strFileName <> ""
Set objDoc = Documents.Open(strFilePath & strFileName)
Set objTemplate = objDoc.AttachedTemplate
Set dlgTemplate = Dialogs(wdDialogToolsTemplates)
strPath = dlgTemplate.Template

If LCase(Left(strPath, nServer)) = LCase(OldServer) Then
objDoc.AttachedTemplate = NormalTemplate
End If

strFileName = Dir()
objDoc.Save
objDoc.Close
Loop

Set objDoc = Nothing
Set objTemplate = Nothing
Set dlgTemplate = Nothing

End Sub

Wenn ich das Skript starte wir der Pfad abgefragt und es werden auch die Dokumente geöffnet und wieder geschlossen aber danach ist die Verknüpfung noch immer enthalten. Was mache ich falsch?

Viele Grüße
pixel24
Mitglied: colinardo
LÖSUNG 18.01.2014, aktualisiert 28.05.2014
Hallo pixel24,
hatte hier dazu schon mal ein ähnliches VBS-Script gespostet, das den Servernamen im Template durch einen anderen ersetzt. Habe es dir nun so angepasst das es das verknüpfte Template auf die Normal.dotm zurücksetzt. Das Script durchläuft einen Ordner rekursiv und ändert alle Word-Dokumente mit den Endungen *.doc / *.docx / *.docm. Ob rekursiv oder nicht lässt sich mit dem zweiten Parameter in Zeile 14 ändern (True in False ändern)
In Zeile 2 muss der Pfad zum Root-Ordner der durchsucht werden soll angegeben werden, in Zeile 4 ein Pfad zu einer Log-Datei die im Fehlerfall die betreffenden Dokumente auflistet, und in Zeile 6 der Servername welcher im Template vorkommen muss damit die Vorlage zurückgesetzt wird.
VBS-Script
01.
'Pfad zu den Dokumenten 
02.
Const strPathDocs = "E:\docs" 
03.
'Logfile für eventuell auftretende Fehler 
04.
Const strPathLogfile = "E:\docs\logfile.txt" 
05.
'Alter Servername  
06.
strOldServer = "\\192.168.3.1"  
07.
 
08.
Set fso = Wscript.CreateObject("Scripting.Filesystemobject") 
09.
Set objWord = WScript.CreateObject("Word.Application") 
10.
'Wenn das ganze unsichtbar ablaufen soll nächste Zeile auf false setzen 
11.
objWord.Visible = True 
12.
objWord.DisplayAlerts = 0 
13.
'Im Ordner Rekursiv alle Word-Dokumente verarbeiten 
14.
parseFolders fso.GetFolder(strPathDocs), True 
15.
objWord.DisplayAlerts = -1 
16.
objWord.Quit True 
17.
Set fso = Nothing 
18.
Set objWord = Nothing 
19.
 
20.
Function parseFolders(fldr, boolRecursion) 
21.
     
22.
    For Each file In fldr.Files 
23.
   		'Verarbeite nur Dateien mit den Endungen *.doc, *.docx, *.docm  
24.
        If LCase(Right(file.Name, 3)) = "doc" Or LCase(Right(file.Name, 4)) = "docx" Or LCase(Right(file.Name, 4)) = "docm" Then 
25.
            On Error Resume Next 
26.
            Set objDoc = objWord.Documents.Open(file.Path) 
27.
            If Err.Number <> 0 Then 
28.
            	Set objLog = fso.OpenTextFile(strPathLogfile,3,True) 
29.
            	objLog.WriteLine("Fehler beim öffnen der Datei: -> " & file.Path) 
30.
            	objLog.Close 
31.
            Else 
32.
		Set dlgTemplate = objWord.Dialogs(87) 
33.
		If Instr(1,dlgTemplate.Template, strOldServer,1) then 
34.
                        objDoc.RemoveDocumentInformation (9) 
35.
			objDoc.Save 
36.
			objDoc.Close True 
37.
		else 
38.
			objDoc.Close False 
39.
		End if 
40.
            End If 
41.
        End If 
42.
    Next 
43.
     
44.
    If boolRecursion Then 
45.
		For Each subFolder in fldr.SubFolders 
46.
			parseFolders subFolder, True 
47.
		Next 
48.
	End If 
49.
End Function
Grüße Uwe
Bitte warten ..
Mitglied: pixel24
18.01.2014 um 10:34 Uhr
ich bin absolut nicht bewandert in VBA/Makros. Das Skript was ich von der MS-Seite habe fänt mit 'Sub Test' an und endet mit 'End Sub'. Dass scheint der Name des Makros zu sein. Bei deinem Skript ist es 'Function. Bau ich da ein Sub drum herum?
Bitte warten ..
Mitglied: colinardo
LÖSUNG 18.01.2014, aktualisiert 27.01.2014
Zitat von pixel24:

ich bin absolut nicht bewandert in VBA/Makros. Das Skript was ich von der MS-Seite habe fänt mit 'Sub Test' an und
endet mit 'End Sub'. Dass scheint der Name des Makros zu sein. Bei deinem Skript ist es 'Function. Bau ich da ein
Sub drum herum?
Das ist ein VBS-Script, welches du nicht in ein Word-VBA-Projekt einbaust sondern in eine Textdatei mit der Endung *.vbs einfügst und es dann per Doppelklick startest.

Grüße Uwe
Bitte warten ..
Mitglied: pixel24
22.01.2014 um 07:18 Uhr
Hallo,

habe also die Datei als test.vbs gespeichert und die Die Pfade angepasst. Wenn ich es ausführe wird auch das Dokument (zum testen nur eines) welches im Pfad liegt geöffnet und anschließend wieder geschlossen.

Wenn ich jedoch anschließend versuche dieses Dokument ganz normal zu öffnen erscheint wieder:

Kontaktaufnahme: \\192.168.3.1\daten\WBS\Personal\Arbeitsvertraege EUR\die_alte_vorlage.dotx

also ist die Vorlage nach wie vor enthalten. Woran kann das liegen?

Viele Grüße
pixel24
Bitte warten ..
Mitglied: colinardo
LÖSUNG 22.01.2014, aktualisiert 27.01.2014
poste mal ein Link zur Datei, du kannst ja alles private daraus entfernen ...
Bitte warten ..
Mitglied: colinardo
LÖSUNG 25.01.2014, aktualisiert 27.01.2014
OK, zuerst mal solltet Ihr sicherstellen das der alte Serverpfad vorübergehend wieder erreichbar ist damit der Batchvorgang schneller vonstatten geht und Word nicht unendlich auf die verknüpfte Vorlage wartet.
Habe den obigen Code geringfügig angepasst, sollte damit jetzt einwandfrei laufen; habe es mit deinem Dokument positiv getestet.

Grüße Uwe
Bitte warten ..
Mitglied: pixel24
25.01.2014 um 11:43 Uhr
Den alten Server-Pfad zur Verfügung stellen wäre nur schwer möglich da das neue Netz in einem ganz anderen Bereich (Netmask) liegt. Die Zeit wäre nicht so tragisch da ich es in Häppchen jeweils über's Wochenende laufen lassen würde.

Klappt es trotzdem, auch wenn der alte Pfad nicht erreichbar ist?
Bitte warten ..
Mitglied: colinardo
LÖSUNG 25.01.2014, aktualisiert 27.01.2014
Zitat von pixel24:
Den alten Server-Pfad zur Verfügung stellen wäre nur schwer möglich da das neue Netz in einem ganz anderen Bereich
(Netmask) liegt.
Klappt es trotzdem, auch wenn der alte Pfad nicht erreichbar ist?
ja, aber eben langsamer.
Du kannst doch via Hosts-Datei den Pfad entsprechend auf einen anderen Server umbiegen wo die alten Vorlagen liegen, das ist doch kein Problem ....

z.B. so auf die 192.168.1.3 auf die 10.10.20.4 umbiegen:
Hosts-File
10.10.20.4    192.168.1.3
Bitte warten ..
Mitglied: pixel24
27.01.2014 um 09:43 Uhr
ok, dass ich die Hosts-Datei auch zur IP-IP - Suflösung nutzen kann wusste ich nicht. Danke , für den Hinweis. Wieder etwas gelernt.

Zum Skript. Ich fehlerfrei durch gelaufen.

VIELEN HERZLICHEN DANK!!
Bitte warten ..
Mitglied: frankmann2
30.03.2015 um 13:49 Uhr
Vielen Dank, hatte das gleiche Problem - HATTE
Gruß
Frank
Bitte warten ..
Mitglied: colinardo
30.03.2015, aktualisiert um 14:01 Uhr
Zitat von frankmann2:
Vielen Dank, hatte das gleiche Problem - HATTE
Hallo Frank,
falls es dich noch interessiert, ich hatte dazu auch eine Powershell-Version entwickelt die auch ohne das einzelne Öffnen der Dateien auskommt.
Pfad der Dokumentenvorlage mit einem Powershell Script ändern?

Grüße Uwe
Bitte warten ..
Mitglied: frankmann2
30.03.2015 um 15:44 Uhr
Hallo Uwe,
werde ich morgen ausproblieren.Hast mir sehr geholfen, Danke.

Grüße Frank
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Microsoft Office
Word Ansicht - Windows 7 Office 2013 zu Windows 10 Office 2010 (6)

Frage von jojo0411 zum Thema Microsoft Office ...

Outlook & Mail
Freigegebenes Postfach - Exchange 2013 - Office 2010-2013-2016 (6)

Frage von ATLaptop zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...