テンプレートが添付されている文書を 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 プログラミングの例は、表されるまたは暗黙の保証も提供します。これには、市場性または特定目的への適合性その他に対する暗黙的な保証についても含まれます。この資料は、例示されているプログラミング言語を作成したり、プロシージャをデバッグするために使用されるツールに精通しているユーザーを想定して作成されています。マイクロソフトのサポート エンジニアは、特定のプロシージャの機能について説明することができます。ただし、機能の追加、または個別案件への対応を目的としたプロシージャ作成のためにこれらの例を修正することはありません。

カスタム ソリューションを使用して、関連付けられている変更するのにはテンプレートを全文書対象のテンプレート (Normal.dot) は、新しい文書になったら開きます。

メモ マクロ セキュリティを [中] に設定されていることを確認してくださいか低い。

Microsoft Visual Basic 6 でカスタム ソリューションを作成するのには、実行します。以下の手順します。
  1. 新しい Standard.exe プロジェクトを開きます。
  2. ユーザー フォームでは、次のコンポーネントを追加します。
    • 1 つのリスト ボックス
    • 2 つのテキスト ボックス
    • 4 つのコマンド ボタン
    • 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 プログラミングの例は、表されるまたは暗黙の保証も提供します。これには、市場性または特定目的への適合性その他に対する暗黙的な保証についても含まれます。この資料は、例示されているプログラミング言語を作成したり、プロシージャをデバッグするために使用されるツールに精通しているユーザーを想定して作成されています。マイクロソフトのサポート エンジニアは、特定のプロシージャの機能について説明することができます。ただし、機能の追加、または個別案件への対応を目的としたプロシージャ作成のためにこれらの例を修正することはありません。

すべてのドキュメントの次のマクロをループします。フォルダーの変更を新しいサーバーに古いサーバー名という名前のテンプレートの場所。このマクロは場合にのみ動作するテンプレートのパス同じです。
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) を変更するマクロを作成します。

Microsoft プログラミングの例は、表されるまたは暗黙の保証も提供します。これには、市場性または特定目的への適合性その他に対する暗黙的な保証についても含まれます。この資料は、例示されているプログラミング言語を作成したり、プロシージャをデバッグするために使用されるツールに精通しているユーザーを想定して作成されています。マイクロソフトのサポート エンジニアは、特定のプロシージャの機能について説明することができます。ただし、機能の追加、または個別案件への対応を目的としたプロシージャ作成のためにこれらの例を修正することはありません。

次のマクロをループ処理します。フォルダー内のドキュメントや、旧いサーバ名でグローバル テンプレートの変更全文書対象)。

メモ ドキュメントではパスワード保護されている場合は、テンプレートをします。変更して、コードは失敗します。
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 エントリを作成すると、テンプレートのパスに記載されている、同じフォルダー構造を作成し、テンプレートをそのフォルダーにコピーします。

状況

マイクロソフトでは、この問題をこの資料の「対象製品」として記載されているマイクロソフト製品の問題として認識しています。

プロパティ

文書番号: 830561 - 最終更新日: 2013年5月20日 - リビジョン: 8.0
この資料は以下の製品について記述したものです。
  • Microsoft Word 2002?を以下の環境でお使いの場合
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional
キーワード:?
kbperformance kbtshoot kbprb kbmt KB830561 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:830561
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

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