mad-eye
Goto Top

Vorlagendatei hat den Server gewechselt - Word lädt ewig

Hallo erst mal,

und zwar haben wir in unserer Firma die Vorlagendateien von einem relativ alten Server auf einen anderen umgezogen. Zugriff ist auch sehr schnell und an sich funktioniert auch alles Problemlos. Jetzt ist allerdings ein Problem aufgetaucht, bei dem wir selbst nach stundenlangem Suchen zu keiner Lösung gekommen sind.

Als wir den alten Server abgeschaltet haben hatten fast alle unsere Word-Dokumente auf einmal eine Ladezeit Jenseits von Gut und Böse in Office 2003.

Zur Untersuchung des Problems haben wir die Dateien mit einer Office 2007 Installation geöffnet und siehe da er Versucht die Vorlagendatei noch auf dem alten Server zu holen. Das komische daran ist das die Freigabe auf die Word zugreifen will schon seit etwa 2 Wochen vor Ausschalten des Servers entfernt wurde. Also Server einfach wieder angeschaltet und seit dem läuft’s auch wieder flott.

So das kann aber doch keine endgültige Lösung sein einen Server am Laufen zu haben nur das er läuft. Gibt es einen Weg die Vorlagendatei per Script oder ähnliches automatisiert umzustellen oder gar aus dem Dokument zu entfernen?

Eine Änderung von Hand würde zwar funktionieren aber bei mehreren Tausend betroffenen Dateien keine Alternative.

Vieleicht hat ja einer von euch schon einmal dieses Problem gehabt oder eine gute Idee dazu, wäre sehr Dankbar.

MfG
Mad-Eye

Content-ID: 82940

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

Ausgedruckt am: 05.11.2024 um 02:11 Uhr

Logan000
Logan000 12.03.2008 um 13:50:29 Uhr
Goto Top
Folgendes VBS Skript sollte alle Docs aus einem Quellverz. öffnen.
den Inhalt in ein Neues Doc kopieren
und dieses mit altem namen in einem Zielverz speichern.

Const WINDOW_HANDLE = 0
Const OPTIONS = 0
Const FILE_NAME = 0

Set objFso = CreateObject("Scripting.FileSystemObject")  
Set objShell = CreateObject("Shell.Application")  
Set objWord = CreateObject("Word.Application")  

Set objSourceFolder = SelectFolder("Wählen Sie den Quellordner:")  
szSourcePath = objSourceFolder.self.Path

' Anwender Ziel ordner auswählen lassen   
Set objDestFolder = SelectFolder("Wählen Sie den Zielordner:")  
szDestPath = objDestFolder.self.Path

' Alle Files Durchgehen  
For Each strFileName in objSourceFolder.Items
	' Dateinamen holen  
	szFilename = objSourceFolder.GetDetailsOf (strFileName, FILE_NAME)
	If Ucase(Right(szFilename,4)) = ".DOC" Then	' Nur Word Docs  
		call CopyText(szSourcePath & "\" & szFilename, szDestPath & "\" & szFilename)  
	end if
Next

objWord.quit

Function CopyText(szFullDockSourcePath,szFullDockDestPath)
	objWord.visible = true ' Nur zum Testen  
	Set objDocOld = objWord.Documents.Open(szFullDockSourcePath)	
	Set objSelectionOld = objWord.Selection					
	objSelectionOld.WholeStory								
	objSelectionOld.Copy					
	Set objDocNew = objWord.Documents.Add()					
	Set objSelectionNew = objWord.Selection					
	objSelectionNew.paste		
	objDocNew.SaveAs szFullDockDestPath, 107, False, "", True, "", False,False, False, False, False  
	on error resume next
	objDocOld.close
	objDocNew.close
end function

Function SelectFolder(szText)	
	Set objFolder = objShell.BrowseForFolder(WINDOW_HANDLE, szText, OPTIONS, "")   
	Set SelectFolder = objFolder
end Function
Mad-Eye
Mad-Eye 12.03.2008 um 14:01:34 Uhr
Goto Top
Leider erhalte ich auf 3 Rechnern immer die Fehlermeldung

Skript: C:\Test.vbs
Zeile: 36
Zeichen: 2
Fehler: Wert nicht im Definitionsbereich
Code: 800A1200
Quelle Microsoft Word

Sagt dir das was Logan? Oder hat noch jemand anderes eine Idee?
17243
17243 12.03.2008 um 20:46:26 Uhr
Goto Top
Hi Mad-Eye

Das ist ein bekanntes Problem.
Microsoft bietet das Tool RHD (Remove Hidden Data) welches noch mehr kann als diesen Fehler beheben. Man kann das Programm via CMD auch über mehrere Dateien rattern lassen.
Nachteil: Die neu erstellten Word-Dateien haben per default die Funktion "Schreibschutz empfehlen" aktiviert. Dies führt dazu, dass beim Öffnen eine Schreibschutz-Abfrage erscheint. Somit ist dieses Tool für Firmen unbrauchbar.

Auch ich bin seit langem auf der Suche nach einer massentauglichen Lösung. Werde mit das Script von Logan000 angucken. thx

gretz drop

btw: die Ladezeiten betragen 30 Sekunden. In dieser Zeit sucht er den Server und läuft danach in ein TimeOut
Logan000
Logan000 13.03.2008 um 08:54:19 Uhr
Goto Top
Versuchs mal so:
        ...
        Function CopyText(szFullDockSourcePath,szFullDockDestPath)
        ...
        objSelectionNew.paste		
	objDocNew.SaveAs szFullDockDestPath, , False, "", True, "", False,False, False, False, False  
	on error resume next
        .....
Mad-Eye
Mad-Eye 13.03.2008 um 09:38:12 Uhr
Goto Top
Hallo,

das Script funktioniert mit der geänderten Zeile, allerdings habe ich zum Test ein paar Word-Dateien konvertiert und dabei habe ich festgestellt das die Formatierung teilweise flöten geht.

Gerade bei Tabellen ändert sich die Höhe der Zeilen bei uns, ansonsten echt eine feine Sache. Nur dadurch ist es in unserem Fall komplett unbrauchbar.

Nun ein paar weitere Gedanken zu Workarounds:

Kann man vieleicht den Time-out auf 1 Sekunde setzten?

einfach einen DNS-Eintrag erstellen der den alten Namen des Servers auf einen bestehenden Übersetzt? Weil Trotz das die Vorlagendatei nicht vorhanden ist geht die Datei fast sofort auf wenn der Server erreichbar ist.

Hoffentlich kommen wir irgendwann auf eine etwas sauberere Lösung

Servus
Mad-Eye
32393
32393 27.03.2008 um 15:46:59 Uhr
Goto Top
Hallo zusammen,

also ich hab genau das gleiche Problem. Kann man den Server, auf den das Dokument zugreift, irgendwo herrauslesen? Bin mir nämlich nicht sicher welcher genau das ist...

Danke
Grüße
Mad-Eye
Mad-Eye 28.03.2008 um 07:09:48 Uhr
Goto Top
Ja wenn man das Dokument zum Beispiel mit Office 2007 öffnet sieht man ganz unten im Fenster welche Vorlage er laden will.
Mad-Eye
Mad-Eye 04.03.2009 um 15:38:33 Uhr
Goto Top
Lösung: Wir haben es mit einem gefälschten DNS Eintrag gelöst bis das Office 2007 Rollout bei uns fertig war.

Der Sauberkeit halber als gelöst markiert^^
bjoernanger
bjoernanger 06.04.2010 um 16:38:11 Uhr
Goto Top
Hallo,

schön, das ihr das gelöst habt. Aber diese Option haben wir leider nicht, da wir den Server endgültig loswerden wollen.

Hat vielleicht jemand inzwischen eine andere Lösung gefunden?
Ich bin für jede Hilfe dankbar.

Gruß
bjoernanger
bjoernanger 08.04.2010 um 10:19:32 Uhr
Goto Top
Hallo zusammen,

ich habe inzwischen eine Interessante Lösung gefunden. Jetzt haben wir allerdings das Problem, das mit dem Script nur ein Verzeichnis abgearbeitet wird. Kann jemand das so "tunen" das es rekuriv alle Unterverzeichnisse abarbeitet :

Hier das Script
Sub RemoveTemplatePathBatch()
Dim Dateiname As String, Verzeichnis As String
Verzeichnis = "<Verzeichnis das bearbeitet werden soll>"  
Dateiname = Dir(Verzeichnis & "*.doc", vbDirectory)  
Do While Dateiname <> ""  
' Dokument öffnen:  
Documents.Open FileName:=Verzeichnis & Dateiname
RemoveTemplatePath
'Aktionen am Dokument ausführen  

Dateiname = Dir
Loop
End Sub

Sub RemoveTemplatePath()
Dim OrigVorlage As String
Dim path As String
Dim AlterServer As String
Dim NeuerServer As String
Dim lenServer As Integer

AlterServer = "<alter Server>"  
NeuerServer = "<neuer Server>"  
lenServer = Len(AlterServer)
With Dialogs(wdDialogToolsTemplates)
    path = .Template
End With
    With ActiveDocument
    ' Prüfung, ob die Vorlageninfo im Dokument tatsächlich auf den  
    ' nicht mehr vorhandenen Server zeigt:  
    If Mid(path, 1, 9) = Mid(AlterServer, 1, 9) Then
        ' Ermittlung des ursprünglichen Vorlagennamens:  
        OrigVorlage = Mid(path, lenServer + 1, Len(path) - lenServer + 1)
        ' Weise Vorlage mit gleichem Namen im neuen Vorlagenpfad zu:  
        .AttachedTemplate = NeuerServer & OrigVorlage
        ' Aktuelles Dokument als nicht gespeichet markieren:  
        .Saved = False
        ' Änderungen speichern und Dokument schließen:  
        .Close SaveChanges:=wdSaveChanges, _
        OriginalFormat:=wdOriginalDocumentFormat
    Else
        ' Falls die Vorlage nicht auf dem nicht mehr vorhandenen Server liegt:  
        ' Dokument wieder schließen:  
        ActiveDocument.Saved = True
        ActiveDocument.Close
    End If
End With
End Sub


Das Script stammt von http://support.microsoft.com/kb/509511/de

Ich bin für jede Hilfe dankbar.
Mad-Eye
Mad-Eye 08.04.2010 um 11:15:13 Uhr
Goto Top
Könnt Ihr nicht trotzdem den DNS Eintrag fälschen? Also Server Weg DNS-Eintrag auf einen bestehenden?
bjoernanger
bjoernanger 08.04.2010 um 15:28:47 Uhr
Goto Top
Ja, generell könnten wir das machen und ich hab bei ein paar Benutzern einen Eintrag in die hosts-Datei gemacht. Damit funktioniert's. Allerdings bin ich kein Freund solcher Sachen.

Ich halte das Script für die bessere Lösung, weil damit nicht das Symptom sondern die Ursache bekämpft wird.