-1

.doc ファイルが開かれたときに実行され、ファイル名に基づいてそのドキュメントのヘッダーを作成するマクロを追加する必要がある .doc Word ドキュメントが数百あります。これをバッチとして行う方法はありますか?各ドキュメントを個別に開き、Visual Basic --> Project --> This Document に入り、コードを含む .txt ファイルを挿入しました。複数のドキュメントに対してこれを行う簡単な方法はありますか?

4

2 に答える 2

1

学習課題として、これを VBE の Normal (Normal.dot テンプレート) の「ThisDocument」部分に入れます。

Word 文書を開いて、何が起こるか見てみましょう。

コードをすべてのファイルに入れる必要はないと思います。Normal.dot で Document_Open イベントを使用しても問題ないと思います。

開いたWord文書の参照として表示されることを確認してください。しかし、なぜ表示されないのかわかりません

すべてのファイルで絶対に必要な場合は実行できますが、問題は、コードに小さな変更を加えると、すべてをやり直す必要があることです。コードの考え方は、一度書いて何度も使用することです。

于 2015-03-06T04:20:44.413 に答える
0

他のドキュメントの 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 からこれを駆動します。

于 2018-05-21T15:12:21.630 に答える