Dokumente, die Vorlagen angefügt haben, dauert eine längere Zeit in Word 2002 und Word 2003 geöffnet

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 830561 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Beim Öffnen einer Microsoft Word-Dokument (* .doc)-Datei, das Dokument möglicherweise übermäßig lange Zeit zum Öffnen braucht. Das Dokument kann z. B. 5 bis 10 Minuten zum Öffnen braucht.

Ursache

Dieses Symptom kann auftreten, wenn das Dokument eine Vorlage verknüpft ist und eine der folgenden Bedingungen erfüllt ist:
  • Der damit verbundenen Vorlage, einen Ordner oder die Freigabe Ismissing.
  • Die zugeordnete Vorlage wurde verschoben.
  • Die zugeordnete Vorlage wurde umbenannt.
Wenn eine Word-Vorlage fehlt, versucht Windows XP, die fehlende Vorlage mehrmals gesucht werden soll. Der Prozess der Suche nach einer fehlenden Vorlage möglicherweise länger dauern als erwartet, öffnen Sie ein Word-Dokument.

Es dauert länger, um das Dokument zu öffnen, wenn Sie verbunden sind, zu einem Netzwerk, im Vergleich zu, wenn Sie vom Netzwerk getrennt sind.

Lösung

Um, um dieses Problem auf einem Computer mit Windows XP arbeiten, verwenden Sie je nach Ihrer Situation eine der folgenden Methoden:

Methode 1: Zuordnen der Vorlage von einem neuen Speicherort

Öffnen Sie das Dokument in Microsoft Word. Warten Sie, bis das Dokument geöffnet ist. Nachdem das Dokument geöffnet ist, ordnen Sie die Vorlage vom neuen Speicherort. Oder ändern Sie die Vorlage in die globale Vorlage "Normal.dot". Um die Vorlage hinzuzufügen, gehen Sie folgendermaßen vor:
  1. Klicken Sie im Menü Extras auf denVorlagenund-Add-ins.
  2. Klicken Sie im Dialogfeld Vorlagen und Add-InsAnfügen.
  3. Klicken Sie im Dialogfeld Vorlage verbinden Siedie Vorlage, die Sie möchten, und klicken Sie dann auf Öffnen.
  4. Klicken Sie im Dialogfeld Vorlagen und Add-Ins klicken Sie auf OK.

Zurück zum Anfang

Methode 2: Verwenden einer einfachen Anwendung des CustomVisual auf die zugeordnete Vorlage beim Öffnen eines neuen Dokuments in die globale Vorlage (Normal.dot) zu ändern

Die Programmierbeispiele von Microsoft dienen lediglich der Veranschaulichung und enthalten weder eine ausdrückliche noch implizite Gewährleistung. Dies schließt, jedoch nicht beschränkt darauf, enthaltene Garantien der allgemeinen Gebrauchstauglichkeit oder der Eignung für einen bestimmten Zweck ein. In diesem Artikel wird davon ausgegangen, dass Sie mit der Programmiersprache und den Werkzeugen, die zum Erstellen und Debuggen von Prozeduren verwendet werden, vertraut sind. Microsoft-Supportmitarbeiter können der Erläuterung der Funktionalität bestimmter Prozeduren helfen. Jedoch werden sie lediglich exemplarisch um eine erweiterte Funktionalität oder Prozeduren entwickeln, Ihre spezifischen Anforderungen zugeschnitten.

Verwenden Sie eine benutzerdefinierte Lösung, um die zugeordnete Vorlage beim Öffnen eines neuen Dokuments in die globale Vorlage (Normal.dot) zu ändern.

Hinweis Stellen Sie sicher, dass die Sicherheitsstufe für Makros auf Mittel oder niedrig festgelegt ist.

Um die benutzerdefinierte Lösung in Microsoft Visual Basic 6 zu erstellen, gehen Sie folgendermaßen vor:
  1. Öffnen Sie ein neues Projekt Standard.exe.
  2. Fügen Sie in einem Benutzerformular die folgenden Komponenten:
    • Ein Listenfeld
    • Zwei Textfelder
    • Vier Befehlsschaltflächen
    • Zwei Bezeichnungen
  3. Legen Sie einen Verweis auf die Microsoft Scripting-Runtime(Scrun.dll).
  4. Kopieren Sie und fügen Sie den folgenden Code in einem Formular:
    Option Explicit
    
    Private Const BIF_RETURNONLYFSDIRS = 1
    Private Const BIF_DONTGOBELOWDOMAIN = 2
    Private Const MAX_PATH = 260
    Private Declare Function SHBrowseForFolder Lib "shell32" _
       (lpbi As BrowseInfo) As Long
    Private Declare Function SHGetPathFromIDList Lib "shell32" _
       (ByVal pidList As Long, _
       ByVal lpBuffer As String) As Long
    Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" _
       (ByVal lpString1 As String, ByVal _
       lpString2 As String) As Long
    
    Private Type BrowseInfo
       hWndOwner      As Long
       pIDLRoot       As Long
       pszDisplayName As Long
       lpszTitle      As Long
       ulFlags        As Long
       lpfnCallback   As Long
       lParam         As Long
       iImage         As Long
    End Type
    
    Public fso As New FileSystemObject
    Dim fld As Folder
    
    Private Sub cmdEnd_Click()
       End
    End Sub
    
    Private Sub cmdSource_Click()
       ' Opens a Treeview control that displays the directories in a computer.
    
       Dim lpIDList As Long
       Dim sBuffer As String
       Dim szTitle As String
       Dim tBrowseInfo As BrowseInfo
    
       szTitle = "This is the title"
       With tBrowseInfo
          .hWndOwner = Me.hWnd
          .lpszTitle = lstrcat(szTitle, "")
          .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
       End With
    
       lpIDList = SHBrowseForFolder(tBrowseInfo)
       If (lpIDList) Then
          sBuffer = Space(MAX_PATH)
          SHGetPathFromIDList lpIDList, sBuffer
          sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
          frmFSO.txtSearch.Text = sBuffer
       End If
    End Sub
    
    Private Sub cmdTarget_Click()
    
       ' Opens a Treeview control that displays the directories in a computer.
    
        Dim lpIDList As Long
        Dim sBuffer As String
        Dim szTitle As String
        Dim tBrowseInfo As BrowseInfo
    
        szTitle = "This is the title"
        With tBrowseInfo
           .hWndOwner = Me.hWnd
           .lpszTitle = lstrcat(szTitle, "")
           .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
        End With
    
        lpIDList = SHBrowseForFolder(tBrowseInfo)
    
        If (lpIDList) Then
           sBuffer = Space(MAX_PATH)
           SHGetPathFromIDList lpIDList, sBuffer
           sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
        End If
    End Sub
    
    Private Sub Command1_Click()
       Dim nDirs As Long, nFiles As Long, lSize As Currency
       Dim sDir As String, sSrchString As String
       Dim nTime
       Dim ntime2
       Dim nOk As Integer
       Dim fileNumber As Integer
       Dim oWord As Object
       Dim strServer As String
       Set oWord = CreateObject("Word.Application")
       strServer = txtOldServer.Text
       nTime = Time()
       fileNumber = FreeFile
           
       List1.Clear
           
       Open "C:\ChangeTemplate.log" For Append As #fileNumber
       Write #fileNumber, "Start:" & " " & nTime
       Close #fileNumber
                     
       'Enter the top-level directory to start the search.
       sDir = txtSearch.Text
     
      'Enter the type of files, such as *.doc for Word documents
      sSrchString = "*.doc"
       
      MousePointer = vbHourglass
    
     'The label shows the current subfolder being searched.
      Label1.Caption = "Searching Folder: " & vbCrLf & UCase(sDir) & "..."
      lSize = FindFile(sDir, sSrchString, nDirs, nFiles, strServer, oWord)
      MousePointer = vbDefault
      ntime2 = Time()
      'Opens text file to show the stop time and the total numbers of
      'files that were found.
      Open "C:\ChangeTemplate.log" For Append As #fileNumber
      Write #fileNumber, "Stop:" & " " & ntime2 & " " & _
         "Time to Complete the Changes: " & _
         Format(ntime2 - nTime, "nn:ss") & vbCrLf _
         & Str(nFiles) & " files found in" & Str(nDirs) & _
         " directories"
      Close #fileNumber
      ' Debug.Print "Stop:" & " " & ntime2
      Label1.Caption = "Done"
      If Label1.Caption = "Done" Then Command2.Enabled = True
         MsgBox "Done"
         oWord.Quit
         Set oWord = Nothing
    End Sub
    
    Private Function FindFile(ByVal sFol As String, sFile As String, _
       nDirs As Long, nFiles As Long, strOServer As String, oWrd As Object) _
          As Currency
       Dim tFld As Folder, tFil As File, FileName As String
       Dim strFileName As String
       Dim fileNumber As Integer
          
       On Error GoTo Catch
         
       Set fld = fso.GetFolder(sFol)
       FileName = Dir(fso.BuildPath(fld.Path, sFile), vbNormal Or _
          vbHidden Or vbSystem Or vbReadOnly)
       While Len(FileName) <> 0
          FindFile = FindFile + FileLen(fso.BuildPath(fld.Path, FileName))
          nFiles = nFiles + 1
          List1.AddItem fso.BuildPath(fld.Path, FileName)  ' Load ListBox
          strFileName = fld.Path & "\" & FileName
          '==
            
          ChangeTemplate strFileName, strOServer, oWrd
          FileName = Dir()  ' Get next file
          DoEvents
       Wend
       Label1 = "Searching " & vbCrLf & fld.Path & "..."
       nDirs = nDirs + 1
    
       If fld.SubFolders.Count > 0 Then
          For Each tFld In fld.SubFolders
             DoEvents
             FindFile = FindFile + FindFile(tFld.Path, sFile, nDirs, nFiles, _
                strOServer, oWrd)
          Next
       End If
    Exit Function
    
    Catch:     FileName = ""
        
       If Err.Number = 76 Then
          MsgBox "This is not a valid path statement" & vbCrLf & _
             "The program will end!"
          End
       End If
       Debug.Print Err.Description
       fileNumber = FreeFile
    
       'Writes the error description and number to the log file.
       Open "C:\ChangeTemplate.log" For Append As #fileNumber
       Write #fileNumber, Err.Description & " " & Err.Number
       Close #fileNumber
       Resume Next
    End Function
    
    Private Sub Command2_Click()
        'Use this to view the log file.
        Shell "notepad.exe c:\ChangeTemplate.log", 1
    End Sub
    
    Fügen Sie in einem Standardmodul den folgenden Code hinzu:
    Sub ChangeTemplate(SourceFile As String, strServer As String, objWord As Object)
    
       Dim dlgTemplates As Dialog
       Dim strTemp As String
       Dim strpath As String
       Dim objtemplate As String
       Dim dlgTemplate As Object
       Dim x As Integer
       Dim fNumber As Integer
       Dim objDoc As Object
       
       fNumber = FreeFile
          
       objWord.Visible = False
       strTemp = SourceFile
    
       'This function determines if the document is password protected or Read Only.
       If OpenDocument(objWord, strTemp) = True Then
          'This assumes that there is only one document opened. It may have to be adjusted
          'to look for additional document being opened.
           Set objDoc = objWord.Documents(1)
           'Dialogs 87 is the Templates and Addins dialog
           Set dlgTemplates = objWord.Dialogs(87)
           objtemplate = objWord.Dialogs(87).Template
    
           'parse out the server name from the fullname of the attached template
    
           If Mid(objtemplate, 2, 1) = ":" Or Left(objtemplate, 2) = "\\" Then
              x = InStr(3, objtemplate, "\")
              strTemp = Mid(objtemplate, 3, x - 3)
              'if the parse name is the same as the stated server then
              'change the attached template to the Normal
    
              If strTemp = strServer Then
                 objDoc.AttachedTemplate = "Normal.dot"
                 'write to a log file the file name and location
                 Open "C:\ChangeTemplate.log" For Append As #fNumber
                 Write #fNumber, "Document: " & objDoc.fullName & _
                 "Attached template changed to Normal.dot"
                 Close #fNumber
              End If
           End If
                
         'After the template  is changed, the document is saved and closed.
                
          objDoc.Save
          objDoc.Close
             Else
          'Enter into the log file files that are not opened.
          Open "C:\ChangeTemplate.log" For Append As #fNumber
          Write #fNumber, "Document:  " & SourceFile & "  not opened! it's 
          Read Only or Password Protected"
          Close #fNumber
       End If
    
    End Sub
    Function OpenDocument(ByRef objWord As Object, ByVal sDoc As String) As Boolean
    'Arguments:
    ' objWord - a valid Word Application object.
    ' sDoc    - the complete path and file name of the document to open in Word.
    '
    'Opens the document specified by the sDoc variable.
    'This function returns True if the document is opened and is read/write.
    'Else, this function returns False if the document cannot be opened
    'or if the document is opened read-only because of the "read-only recommended" setting 
    'in the document.
    'Therefore only if this function returns True if you try  to modify the document.
    'If False is returned, log the sDoc into a text file and alert the user
    'of the list of file(s) that could not be processed by the batch routine.
        On Error GoTo EH
        Dim oDoc As Object
        Set oDoc = objWord.Documents.Open( _
            FileName:=sDoc, _
            ReadOnly:=False, _
            PasswordDocument:="?#nonsense@$", _
            WritePasswordDocument:="?#nonsense@$")
        If oDoc.ReadOnly = True Then
            OpenDocument = False
        Else
            OpenDocument = True
        End If
    CleanUp:
        On Error Resume Next
        Set oDoc = Nothing
        Exit Function
    
    EH:
        'There was an error opening the file. Return False
        OpenDocument = False
        Resume CleanUp
    End Function
    

Zurück zum Anfang

Methode 3: Erstellen Sie Microsoft Visual Basic for Applications (VBA)-Makro, die durchlaufen alle Thedocuments in einem Ordner und ändert den alten Servernamen mit dem neuen Servernamen

Die Programmierbeispiele von Microsoft dienen lediglich der Veranschaulichung und enthalten weder eine ausdrückliche noch implizite Gewährleistung. Dies schließt, jedoch nicht beschränkt darauf, enthaltene Garantien der allgemeinen Gebrauchstauglichkeit oder der Eignung für einen bestimmten Zweck ein. In diesem Artikel wird davon ausgegangen, dass Sie mit der Programmiersprache und den Werkzeugen, die zum Erstellen und Debuggen von Prozeduren verwendet werden, vertraut sind. Microsoft-Supportmitarbeiter können der Erläuterung der Funktionalität bestimmter Prozeduren helfen. Jedoch werden sie lediglich exemplarisch um eine erweiterte Funktionalität oder Prozeduren entwickeln, Ihre spezifischen Anforderungen zugeschnitten.

Das folgende Makro durchsucht alle Dokumente in einem Ordner und ändert den alten Servernamen durch den neuen Servernamen für den Speicherort der Vorlagen. Dieses Makro funktioniert nur, wenn der Pfad für die Vorlagen gleich ist.
Sub Test()
   Dim strFilePath As String 
   Dim strPath As String
   Dim intCounter As Integer
   Dim strFileName As String
   Dim OldServer As String
   Dim NewServer As String
   Dim objDoc As Document
   Dim objTemplate As Template
   Dim dlgTemplate As Dialog  

   OldServer = "<\\rsnj01\vol1>" 
   NewServer = "<\\rsnyc1p\vol3>" 
   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, 13)) = LCase(OldServer) Then        
            objDoc.AttachedTemplate = NewServer & Mid(strPath, 14)    
        End If    
         strFileName = Dir()    
         objDoc.Save                  
         objDoc.Close
      Loop  
   Set objDoc = Nothing
   Set objTemplate = Nothing
   Set dlgTemplate = Nothing  

End Sub

Zurück zum Anfang

Methode 4: Erstellen eines VBA-Makros, das in einer Schleife durch alle Dokumente in einem Ordner und ändert den alten Servernamen durch die globale Vorlage (Normal.dot)

Die Programmierbeispiele von Microsoft dienen lediglich der Veranschaulichung und enthalten weder eine ausdrückliche noch implizite Gewährleistung. Dies schließt, jedoch nicht beschränkt darauf, enthaltene Garantien der allgemeinen Gebrauchstauglichkeit oder der Eignung für einen bestimmten Zweck ein. In diesem Artikel wird davon ausgegangen, dass Sie mit der Programmiersprache und den Werkzeugen, die zum Erstellen und Debuggen von Prozeduren verwendet werden, vertraut sind. Microsoft-Supportmitarbeiter können der Erläuterung der Funktionalität bestimmter Prozeduren helfen. Jedoch werden sie lediglich exemplarisch um eine erweiterte Funktionalität oder Prozeduren entwickeln, Ihre spezifischen Anforderungen zugeschnitten.

Das folgende Makro durchsucht alle Dokumente in einem Ordner und ändert den alten Servernamen durch die globale Vorlage (Normal.dot).

Hinweis Ist ein Dokument in irgendeiner Form kennwortgeschützt, wird die Vorlage nicht geändert werden, und der Code bleibt wirkungslos.
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 = "{enter the name of the Old Server}"

    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


Zurück zum Anfang

Methode 5: Benennen Sie den Server, die Freigabe oder den Ordner in den ursprünglichen Namen um.

Wenn der Server, die Freigabe oder der Ordner mit der Vorlage verschoben oder umbenannt wurde, benennen Sie die Server, die Freigabe oder der Ordner wieder in den ursprünglichen Namen.

Wenn der ALTER Server nicht mehr vorhanden ist, können Sie den DNS-Eintrag mit alten Servernamen erstellen. Haben Sie den alten DNS-Eintrag für Servername können Sie erstellen die gleiche Ordnerstruktur wie Vorlagenpfad und die Vorlage in diesen Ordner kopieren.

Status

Microsoft hat bestätigt, dass dieses Problem auf die im Abschnitt "Gilt für" aufgeführten Microsoft-Produkten zutrifft.

Eigenschaften

Artikel-ID: 830561 - Geändert am: Samstag, 23. November 2013 - Version: 2.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Word 2002 Standard Edition, wenn verwendet mit:
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional
Keywords: 
kbperformance kbtshoot kbprb kbmt KB830561 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 830561
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com