첨부 된 문서를 Word 2002에서 및 Word 2003에서 열려고 오래 걸릴

기술 자료 번역 기술 자료 번역
기술 자료: 830561 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

현상

Microsoft Word 문서를 열 때 (*.doc) 파일을 문서 걸립니다 열 것으로 예상 하 고 긴. 예를 들어, 문서를 열려면 5-10 분 걸릴 수 있습니다.

원인

문서 서식 파일에 있는 경우이 문제가 발생할 수 있습니다. 첨부 되거나 연결 하 고 다음 조건 중 하나에:
  • 첨부 된 서식 파일, 해당 폴더 또는 공유가 됩니다. 없습니다.
  • 첨부 된 서식 파일을 이동 했습니다.
  • 첨부 된 서식 파일의 이름이 바뀌었습니다.
Word 서식 파일에 없는 경우 Windows XP 찾으려고 합니다. 누락 된 템플릿을 여러 번입니다. 누락 된 템플릿을 찾는 프로세스 Word 문서를 열 때 예상 보다 오래 걸릴 발생할 수 있습니다.

네트워크에서 연결을 끊을 때와 비교 하 여 네트워크에 연결 되어 있을 때 문서를 열 때 시간이 더 걸립니다.

해결 방법

작업을 이 문제를 해결 하는 컴퓨터에서 Windows xp 설치 중 하나를 사용 하 여 상황에 맞게 다음 방법.

방법 1: 새 위치에서 서식 파일을 첨부

Microsoft Word에서 문서를 엽니다. 문서가 열려 있는 때까지 대기 합니다. 후 문서가 열려 있는, 새 위치에서 서식 파일을 첨부 합니다. 또는 서식 파일을 Normal.dot 기본 서식으로 변경 합니다. 연결 하는 서식 파일을 다음이 단계를 수행 하십시오.
  1. 도구 메뉴를 클릭 서식 파일 및 추가 기능.
  2. 서식 파일 및 추가 기능 대화 상자에서 클릭 연결.
  3. 서식 파일 첨부 대화 상자에서 선택 다음을 클릭 하 고 원하는 서식 파일 열기.
  4. 서식 파일 및 추가 기능 대화 상자에서 클릭 확인.

맨 위로

방법 2: 사용자 지정 Visual Basic 응용 프로그램에서 전역 서식 파일에 첨부 된 서식 파일을 변경 하려면 새 문서를 열 때 (Normal.dot)

Microsoft는 명시적 또는 묵시적인 보증 없이 목적 으로만 프로그래밍 예제를 제공 합니다. 이 포함 되지만 상품성 또는 특정 목적에의 적합성의 묵시적된 보증에 국한 되지 않습니다. 이 문서에서는 만들려면 및 프로시저를 디버깅 하는 데 사용 되는 도구 및 여기서 설명 하는 프로그래밍 언어에 익숙한 가정 합니다. Microsoft 지원 엔지니어는 특정 프로시저의 기능을 설명할 수 있습니다. 그러나 추가 기능을 제공 하거나 특정 요구 사항에 맞도록 프로시저를 구성이 예제 수정 되지 않습니다.

사용자 지정 솔루션을 사용 하 여 연결 된 변경 하려면 기본 서식 파일 (Normal.dot) 때 새 문서 서식 파일 열.

참고 매크로 보안이 보통으로 설정 되어 있는지 확인 하거나 부족 합니다.

Microsoft Visual Basic 6에서 사용자 지정 솔루션을 만들기 위해 수행 합니다. 다음 단계:
  1. 새 Standard.exe 프로젝트를 엽니다.
  2. 사용자 폼에서 다음 구성 요소를 추가 합니다.
    • 하나의 목록 상자
    • 두 개의 텍스트 상자
    • 네 개의 명령 단추
    • 두 개의 레이블
  3. Microsoft 스크립팅 런타임 참조를 설정 합니다. (Scrun.dll)입니다.
  4. 복사 및 사용자 폼에 다음 코드를 붙여넣습니다.
    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
    
    표준 모듈에 다음 코드를 추가 합니다.
    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
    

맨 위로

방법 3: 만들기는 Microsoft Visual Basic for Applications (VBA) 매크로 통해 모든 루프는 폴더에 문서 및 새 서버와 기존 서버 이름을 변경 합니다. 이름

Microsoft는 명시적 또는 묵시적인 보증 없이 목적 으로만 프로그래밍 예제를 제공 합니다. 이 포함 되지만 상품성 또는 특정 목적에의 적합성의 묵시적된 보증에 국한 되지 않습니다. 이 문서에서는 만들려면 및 프로시저를 디버깅 하는 데 사용 되는 도구 및 여기서 설명 하는 프로그래밍 언어에 익숙한 가정 합니다. Microsoft 지원 엔지니어는 특정 프로시저의 기능을 설명할 수 있습니다. 그러나 추가 기능을 제공 하거나 특정 요구 사항에 맞도록 프로시저를 구성이 예제 수정 되지 않습니다.

다음 매크로 통해 모든 문서를 반복 새 서버와 기존 서버 이름의 이름을 폴더 및 변경 내용에는 서식 파일의 위치입니다. 경우에이 매크로 사용할 서식 파일의 경로 동일합니다.
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

맨 위로

방법 4: 폴더의 모든 문서를 반복 하 고 이전 서버 이름으로 기본 서식 파일 (Normal.dot)을 변경 하는 VBA 매크로를 만듭니다.

Microsoft는 명시적 또는 묵시적인 보증 없이 목적 으로만 프로그래밍 예제를 제공 합니다. 이 포함 되지만 상품성 또는 특정 목적에의 적합성의 묵시적된 보증에 국한 되지 않습니다. 이 문서에서는 만들려면 및 프로시저를 디버깅 하는 데 사용 되는 도구 및 여기서 설명 하는 프로그래밍 언어에 익숙한 가정 합니다. Microsoft 지원 엔지니어는 특정 프로시저의 기능을 설명할 수 있습니다. 그러나 추가 기능을 제공 하거나 특정 요구 사항에 맞도록 프로시저를 구성이 예제 수정 되지 않습니다.

다음 매크로 통해 모든 루프는 폴더에 문서 및 기본 서식 파일의 기존 서버 이름을 변경 합니다. (Normal.dot)입니다.

참고 문서는 암호로 되어 있으면 서식 파일 수 있습니다. 변경 되지 및 코드가 실패 합니다.
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


다시는 위

방법 5: 서버, 공유 또는 폴더를 원래 이름으로

서버, 공유 또는 템플릿이 들어 있는 폴더 이름이 변경 되거나 이동 된 경우, 서버, 공유 또는 폴더 이름을 다시 원래 이름으로 이름을 바꿉니다.

기존 서버를 더 이상 존재 하지 않는 경우 이전 서버 이름으로 DNS 항목을 만들 수 있습니다. 이전 DNS 서버 이름 항목이 있으면 템플릿 경로에 나열 된 대로 동일한 폴더 구조를 생성 하 고 해당 폴더에 서식 파일을 복사 수 있습니다.

현재 상태

Microsoft는 "적용 대상" 절에 나열된 제품에서 문제가 있음을 확인했습니다.

속성

기술 자료: 830561 - 마지막 검토: 2013년 5월 20일 월요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Word 2002 Standard Edition?을(를) 다음과 함께 사용했을 때
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional
키워드:?
kbperformance kbtshoot kbprb kbmt KB830561 KbMtko
기계 번역된 문서
이 문서는 Microsoft 기계 번역 소프트웨어를 이용하여 번역되었으며 Microsoft Community에 의한 Community Translation Framework(CTF) 기술 혹은 사람이 번역한 내용에 의하여 사후 편집될 수 있습니다. Microsoft는 Knowledge Base에 있는 모든 문서에 다양한 언어로 접근할 수 있도록 하기 위하여 기계 번역, 사람에 의한 번역 및 커뮤니티가 편집한 내용을 모두 제공합니다. 번역된 문서는 어휘, 구문 및/혹은 문법에 오류가 있을 수 있습니다. Microsoft는 번역 오류로 인한 부정확성, 오류 및/또는 손해와 이를 고객이 사용하는 데에 대하여 책임을 지지 않습니다.
이 문서의 영문 버전 보기:830561

피드백 보내기

 

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