0
0

Pythonを使ってWord文書からマクロを一括削除する方法

Posted at

Word文書は最も一般的な電子文書形式の一つとして、内容を共有するためのツールとしてよく使用されます。これらの文書はネットワークやデバイス間で転送されるため、その安全性も重要です。マクロは、Word文書に埋め込むことができるVBAのミニプログラムで、自動化操作を実行するために使用されます。マクロは作業効率を向上させることができますが、悪意のある行為者がマクロを利用してユーザーのコンピュータで有害なコードを実行する可能性があるため、大きなセキュリティリスクも伴います。この記事では、Pythonを使ってWord文書からマクロを一括検出して削除する方法を紹介します。

この記事で使用する方法にはSpire.Doc for Pythonが必要です。PyPIからインストールできます:pip install Spire.Doc

無料ライセンスの申請

PythonでWord文書のマクロを検出して削除する方法

Document.IsContainMacroプロパティを使用してWord文書にマクロが含まれているかどうかを検出し、結果がTrueの場合はDocument.ClearMacros()メソッドを使用してマクロを削除できます。
以下は操作手順です。

  1. DocumentFileFormatモジュールをインポートします。
  2. Documentのインスタンスを作成します。
  3. Document.LoadFromFile()メソッドを使用してWord文書を読み込みます。
  4. Document.IsContainMacroプロパティを使用して文書にマクロが含まれているかを確認し、マクロが含まれている場合はDocument.ClearMacros()メソッドを使用してマクロを削除します。
  5. Document.LoadFromFile(string: fileName, FileFormat.Docm)を使用して文書を保存します。
  6. リソースを解放します。

コード例

from spire.doc import Document, FileFormat

# Documentクラスのインスタンスを作成
doc = Document()

# Word文書を読み込む
doc.LoadFromFile("Sample.docm")

# マクロを検出して削除
if doc.IsContainMacro:
    doc.ClearMacros()

# 文書を保存
doc.SaveToFile("output/DocmToDocx.docm", FileFormat.Docm)
doc.Close()

PythonでDOCM文書をDOCX形式に変換してすべてのマクロを削除する方法

マクロが含まれているDOCMファイルを直接DOCXファイルに変換して、文書内のすべてのマクロを削除することもできます。
以下は操作手順です。

  1. DocumentFileFormatモジュールをインポートします。
  2. Documentのインスタンスを作成します。
  3. Document.LoadFromFile()メソッドを使用してWord文書を読み込みます。
  4. Document.LoadFromFile(string: fileName, FileFormat.Docx)を使用して文書をDOCX形式で保存します。
  5. リソースを解放します。

コード例

from spire.doc import Document, FileFormat

# Documentクラスのインスタンスを作成
doc = Document()

# Word文書を読み込む
doc.LoadFromFile("Sample.docm")

# 文書を保存
doc.SaveToFile("output/DocmToDocx.docx", FileFormat.Docx)
doc.Close()

この記事では、Pythonを使ってWord文書からマクロを削除する方法を示しました。

さらに多くのWord文書処理のコツについては、Spire.Doc for Pythonのチュートリアルをご覧ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0