【Python】VBAのコメントを一括削除する【雑記】

スポンサーリンク
スポンサーリンク

Pythonコード

以下のコードを「Delete_vba_comment.py」として保存。

import sys

def main():
    #引数の確認
    args = sys.argv
    if(len(args) < 2):
        print("引数:対象ファイルパス")
        return False

    Delete_vba_comment(args[1])

def Delete_vba_comment(input_path):
    #出力用データ
    output_list = list()

    #データ読み込み
    input_file = open(input_path, "r")
    input_list = input_file.readlines()
    input_file.close()

    test = 0

    #データの分類
    for data in input_list:
        split_data = data.split("'", 1)
        output_list.append(split_data[0])
        #改行コードを消した場合
        if len(split_data) == 2:
            output_list.append("\n")

    #データの出力
    output_file = open(input_path + "_delete_comment.bas", "w", encoding="utf-8")
    for data in output_list:
        output_file.writelines(data)
    output_file.close()


if __name__ == "__main__":
    main()

動作確認

以下のような「sample.bas」を用意する。

'テスト用関数
Sub TestFunc()
    Range("A1") = "Test"    'A1セルにTestを挿入
    Range("B1") = "Func"    'B1セルにFuncを挿入

End Sub

pythonファイルとテキストファイルが同じディレクトリにあるとして、次のように実行する。

python .\Delete_vba_comment.py .\sample.bas

実行すると「sample.bas_delete_comment.bas」というファイルが作成され、内容は次のようになる。

Sub TestFunc()
    Range("A1") = "Test"    
    Range("B1") = "Func"
    
End Sub

最後に

コメントが要らないというニッチな要望でした。

空行等は残して、ただコメントだけが消えるのでいい感じ。

ちなみに32行目のファイル名をinput_pathだけにすれば、入力ファイルがそのまま置き換わります。

コメント

タイトルとURLをコピーしました