.doc ファイルが開かれたときに実行され、ファイル名に基づいてそのドキュメントのヘッダーを作成するマクロを追加する必要がある .doc Word ドキュメントが数百あります。これをバッチとして行う方法はありますか?各ドキュメントを個別に開き、Visual Basic --> Project --> This Document に入り、コードを含む .txt ファイルを挿入しました。複数のドキュメントに対してこれを行う簡単な方法はありますか?
2 に答える
学習課題として、これを VBE の Normal (Normal.dot テンプレート) の「ThisDocument」部分に入れます。
Word 文書を開いて、何が起こるか見てみましょう。
コードをすべてのファイルに入れる必要はないと思います。Normal.dot で Document_Open イベントを使用しても問題ないと思います。
開いたWord文書の参照として表示されることを確認してください。しかし、なぜ表示されないのかわかりません
すべてのファイルで絶対に必要な場合は実行できますが、問題は、コードに小さな変更を加えると、すべてをやり直す必要があることです。コードの考え方は、一度書いて何度も使用することです。
他のドキュメントの VBA コードを変更する VBA コードを記述できますが、セキュリティ センターのオプションで「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」必要があります。これにより、悪意のある VBA コードを含む Word ドキュメントをダウンロードすると、ウイルス コードに感染する可能性があります。あなたがやりたいことは、本質的に、VBA ウイルスを書くことです。これには正当な理由と悪意のある理由があります。これらの手法の使用に関する倫理はユーザーに委ねます。知識そのものが悪意を持っているわけではありません。
ドキュメントをループして .docm ファイルとして保存するには、独自のコードを記述する必要があります。
Sub ReplaceCode()
Set oDoc = ActiveDocument
Set oComponents = oDoc.VBProject.VBComponents
For i = oComponents.Count To 1 Step -1
If oComponents(i).Type = 100 And oComponents(i).Name = "ThisDocument" Then
With oComponents(i).CodeModule
.DeleteLines 1, .CountOfLines
.AddFromFile "C:\ThisDocument.cls"
End With
End If
Next i
End Sub
また、VBA からエクスポートしてコード ファイルを作成する場合は、.cls ファイルの先頭からこれを削除する必要があります。
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
個人的には、更新するファイルまたは場所のリストを保持するためにワークシートを使用し、更新されたファイルのリストを入力するコード用の別のシートを使用して、Excel からこれを駆動します。