Python の oletools で日本語の VBA を出力する方法
VBA はどこにある? 以下の記事がとても参考になる。 実務であまり役に立たないVBAの内部の話 - Qiita マクロの実体は vbaProject.bin というバイナリファイルの中にあるらしく、これを解析すると VBA を取得することができる。 このファイルは Compound File Binary Format というファイル形式で仕様は効果されているらしい。 時間があるときに確認してみたい。 [MS-CFB]: Compound File Binary File Format oletools で VBA を出力する方法 vbaProject.bin を自分で解析して VBA を出力するのは大変なので oletools というライブラリを使用する。 このライブラリは olefile というパーサを使いやすくしたもの。 ただし、このライブラリで VBA を出力すると以下の記事にもあるように日本語は文字化けをしてしまう。 ExcelマクロのVBAソースコードをAzure DevOpsでバージョン管理する方法 この記事では extract_macros を自作することで対応をしていたが、以下のように bytes2str を置き換えることでも日本語することができた。 記述量も少なく手軽に実行できるので記事にしておく。 import os import oletools.olevba as vba # ------------------------------------------------------------------ # 定数 OUT_DIR = "./out" """出力するフォルダ""" # ------------------------------------------------------------------ # 日本語出力用の設定 def _bytes2str ( bytes_string : bytes , encoding = "utf-8" ): # ShiftJis でデコードする return bytes_strin...