Documenten met sjablonen aangehechte duurt lang geopend in Word 2002 en Word 2003

BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.

De Engelstalige versie van dit artikel is de volgende:830561
Dit artikel is gearchiveerd. Het wordt aangeboden in de huidige vorm en wordt niet meer bijgewerkt.
Symptomen
Wanneer u een Microsoft Word-Document opent (* .doc) bestand duurt langer dan verwacht om te openen. Zo duurt 5 tot 10 minuten te openen.
Oorzaak
Dit probleem kan optreden als het document een sjabloon heeft gekoppeld en een van de volgende voorwaarden is voldaan:
  • De gekoppelde sjabloon, de map of de share is ontbreekt.
  • De gekoppelde sjabloon is verplaatst.
  • De gekoppelde sjabloon is gewijzigd.
Wanneer een Word-sjabloon ontbreekt, probeert Windows XP zoeken de ontbrekende sjabloon meerdere keren. Het proces van ontbrekende sjabloon zoeken Dit kan langer duren dan verwacht te openen in een Word-document.

Het duurt langer wanneer u met een netwerk verbonden bent wanneer u het netwerk verbroken vergeleken met het document opent.
Oplossing
Werken u kunt dit probleem op een computer met Windows XP is geïnstalleerd met een van de de volgende methoden, afhankelijk van uw situatie:

Methode 1: De sjabloon koppelen vanuit een nieuwe locatie

Open het document in Microsoft Word. Wacht totdat het document geopend is. Na het document is geopend, de sjabloon koppelen vanaf de nieuwe locatie. Of de algemene sjabloon Normal.dot wijzigen in de sjabloon. Koppelen de sjabloon, als volgt:
  1. Op deExtramenu, klik opSjablonen en invoegtoepassingen.
  2. In deSjablonen en invoegtoepassingenhet dialoogvenster Klik opKoppelen.
  3. In deSjabloon koppelendialoogvenster selecteren de sjabloon die u wilt gebruiken en klik vervolgens opOpen.
  4. In deSjablonen en invoegtoepassingenhet dialoogvenster Klik opOK.

naar boven

Methode 2: Gebruik een aangepaste Visual Basic-toepassing de gekoppelde sjabloon in de algemene sjabloon wijzigen (Normal.dot) wanneer een nieuw document geopend

Microsoft biedt programming voorbeelden ter illustratie, zonder expliciete of impliciete garantie. Dit omvat, maar is niet beperkt tot impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal wordt aangetoond en de hulpmiddelen maken en procedures voor foutopsporing worden gebruikt. Ondersteuningstechnici van Microsoft kunt de functionaliteit van een bepaalde procedure uitgelegd. Zij zal deze voorbeelden om extra functionaliteit of procedures uw specifieke behoeften te bouwen echter niet wijzigen.

Gebruik een aangepaste oplossing de bijgevoegde wijzigen de algemene sjabloon (Normal.dot) wanneer een nieuw document sjabloon geopend.

OpmerkingZorg ervoor dat de macrobeveiliging is ingesteld op Gemiddeld of laag.

Volg de aangepaste oplossing maken in Microsoft Visual Basic 6, deze stappen:
  1. Open een nieuw project Standard.exe.
  2. Op een formulier toevoegen de volgende onderdelen:
    • Een keuzelijst
    • Twee tekstvakken
    • Vier opdrachtknoppen
    • Twee labels
  3. Een verwijzing instellen naar de Microsoft Scripting Runtime (Scrun.dll).
  4. Kopieer en plak de volgende code in een formulier:
    Option ExplicitPrivate Const BIF_RETURNONLYFSDIRS = 1Private Const BIF_DONTGOBELOWDOMAIN = 2Private Const MAX_PATH = 260Private Declare Function SHBrowseForFolder Lib "shell32" _   (lpbi As BrowseInfo) As LongPrivate Declare Function SHGetPathFromIDList Lib "shell32" _   (ByVal pidList As Long, _   ByVal lpBuffer As String) As LongPrivate Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" _   (ByVal lpString1 As String, ByVal _   lpString2 As String) As LongPrivate 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 LongEnd TypePublic fso As New FileSystemObjectDim fld As FolderPrivate Sub cmdEnd_Click()   EndEnd SubPrivate 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 IfEnd SubPrivate 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 IfEnd SubPrivate 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 = NothingEnd SubPrivate 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 IfExit FunctionCatch:     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 NextEnd FunctionPrivate Sub Command2_Click()    'Use this to view the log file.    Shell "notepad.exe c:\ChangeTemplate.log", 1End Sub
    Voeg de volgende code in een standaardmodule:
    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 IfEnd SubFunction 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 IfCleanUp:    On Error Resume Next    Set oDoc = Nothing    Exit FunctionEH:    'There was an error opening the file. Return False    OpenDocument = False    Resume CleanUpEnd Function

naar boven

Methode 3: Maak een Microsoft Visual Basic for Applications (VBA)-macro die alle doorlopen de documenten in een map en wijzigt de naam van de oude server met de nieuwe server naam

Microsoft biedt programming voorbeelden ter illustratie, zonder expliciete of impliciete garantie. Dit omvat, maar is niet beperkt tot impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal wordt aangetoond en de hulpmiddelen maken en procedures voor foutopsporing worden gebruikt. Ondersteuningstechnici van Microsoft kunt de functionaliteit van een bepaalde procedure uitgelegd. Zij zal deze voorbeelden om extra functionaliteit of procedures uw specifieke behoeften te bouwen echter niet wijzigen.

De volgende macro alle documenten doorlopen in een map en wijzigingen in de oude servernaam van de met de nieuwe server een naam voor de locatie van sjablonen. Deze macro werkt alleen als het pad voor sjablonen is hetzelfde.
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

naar boven

Methode 4: Maak een VBA-macro die alle documenten in een map doorlopen en de oude servernaam van de met de algemene sjabloon (Normal.dot) wijzigen

Microsoft biedt programming voorbeelden ter illustratie, zonder expliciete of impliciete garantie. Dit omvat, maar is niet beperkt tot impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal wordt aangetoond en de hulpmiddelen maken en procedures voor foutopsporing worden gebruikt. Ondersteuningstechnici van Microsoft kunt de functionaliteit van een bepaalde procedure uitgelegd. Zij zal deze voorbeelden om extra functionaliteit of procedures uw specifieke behoeften te bouwen echter niet wijzigen.

De volgende macro doorloopt alle de documenten in een map en de oude servernaam van de met de algemene sjabloon wijzigen (Normal.dot).

OpmerkingAls een document beveiligd met een wachtwoord is, wordt de sjabloon niet gewijzigd en de code niet.
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


terug naar de Top

Methode 5: De server, het aandeel of de map naar de oorspronkelijke naam wijzigen

Als de server, het aandeel of de map waarin de sjabloon is verplaatst of hernoemd, wijzigt u de server, het aandeel of de map naar de oorspronkelijke naam.

Als de oude server niet meer bestaat, kunt u DNS-vermelding maken met oude servernaam. Wanneer de oude servernaam DNS-vermelding, kunt u dezelfde mapstructuur maken zoals vermeld in het sjabloonpad van de en de sjabloon kopiëren naar die map.terug naar de Top
Status
Microsoft heeft bevestigd dat dit probleem in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op' is.
langzaam

Waarschuwing: dit artikel is automatisch vertaald

Eigenschappen

Artikel-id: 830561 - Laatst bijgewerkt: 12/08/2015 05:08:04 - Revisie: 2.0

Microsoft Word 2002 Standard Edition

  • kbnosurvey kbarchive kbperformance kbtshoot kbprb kbmt KB830561 KbMtnl
Feedback