何年にもわたって、フィリップの会社は何千ものWord文書を開発してきました。彼らは最近、フィリップの部門の全員のために異なるサーバーとアップグレードされたコンピューターを使用するようにネットワークインフラストラクチャを変更しました。誰かがそれらの既存のドキュメントの1つを開くと、古いインフラストラクチャに存在していたが、使用できなくなったテンプレートを探します。これは、ドキュメントを開くのに長い時間がかかることを意味します。その後、不正なテンプレート参照を変更する可能性があります。フィリップが古いドキュメントをそれぞれ開く必要がある場合、それを行うには何日もかかるため、各ドキュメントを開かなくても、テンプレート参照をより効率的に変更する方法があるかどうか疑問に思います。

これは本当に面倒なことかもしれません—(オフィスでは)もっと悪いことはほとんどありません

コンピュータの画面を見つめるよりも、いくつかのプロセスが終了するのを待ちます。

何が起こっているのかというと、Wordはテンプレートが特定の場所にあると見なし、Windowsにその場所でテンプレートを取得するように要求します。

Windowsは、場所を繰り返し探しながら、忠実に準拠しようとします(そして試行します)。各試行はタイムアウトになり、この無駄な試行に費やされた合計時間は非常に顕著です。

解決策は、マクロを使用してディレクトリ内の各ドキュメントをロードし、そのドキュメントに添付されているテンプレートを変更することです。以下はそのようなマクロの例です:

Sub BatchTemplateChange()

Dim sPathToTemplates As String     Dim sPathToDocs As String     Dim sDoc As String     Dim dDoc As Document     Dim sNewTemplate As String     Dim i As Long

On Error Resume Next     Application.ScreenUpdating = False

sNewTemplate = "normal.dot"         'new template name     sPathToDocs = Options.DefaultFilePath(wdDocumentsPath) & "\"

sPathToTemplates = Options.DefaultFilePath(wdUserTemplatesPath) & "\"



sDoc = Dir(sPathToDocs & "*.doc")



While Len(sDoc) <> 0         Set dDoc = Documents.Open(FileName:=sPathToDocs & sDoc)

dDoc.AttachedTemplate = sPathToTemplates & sNewTemplate         dDoc.Close wdSaveChanges         sDoc = Dir         i = i + 1     Wend

Application.ScreenUpdating = True     MsgBox "Finished: " & i & " documents changed"

End Sub

マクロは各ドキュメントをデフォルトのドキュメントの場所にロードしますが、必ずしもロードが高速化されるわけではないことに注意してください。マクロを使用する利点は、マクロの実行を開始して、コンピューターから離れているときにマクロを機能させることができることです。

プログラマティックアプローチの追加のアイデアは、次のサイトにあります。

http://support.microsoft.com/kb/830561 http://www.edugeek.net/forums/scripts/35199-vba-script-change-word-document-template-location.html

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(11404)は、Microsoft Word 97、2000、2002、および2003に適用されます。Wordのリボンインターフェイス(Word 2007)用のこのヒントのバージョンを見つけることができます。以降)ここ: