kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

データと処理のファイル分割(アドイン)

マクロを作り、それを使っていると、マクロを更新したい場合が出てきます。対象ファイルを一人で使っている分には問題ないのですが、複数の人と共有している場合、ファイルを書き換えるタイミングが難しかったりします。

こんなとき、マクロ部分を別ファイルにしておけば、マクロの更新が容易に出来ますね。

マクロ部分をアドインとして別ファイルにする方法をメモしておきます。

データとマクロが混在した1つのExcelファイルを、アドイン用ファイルと、データ用ファイルに分割する方法を説明します。

1.アドイン用ファイル

1−1.元のExcelファイルから、マクロ部分を抜き出し、アドイン用ファイルとして保存します。このとき、ファイル名の拡張子は、".xla"とします。

1−2.Visual Basic Editor で、上記で作成したアドイン用ファイルの"ThisWorkbook"を選択し、プロパティの"IsAddin"を"True"にします。

2.データ用ファイル

2−1.元のExcelファイルから、データ部分(つまりデータの記述されたシート)を抜き出し、別ファイルとして保存します。このとき、ファイル名の拡張子は、".xls"のままです。

2−2.アドイン用ファイルのマクロを呼び出すためのマクロを作成します。次に例を記述します。

Sub Macro1()
    Dim addinFilename As String
    Dim errFlag As Boolean
    
    addinFilename = "アドイン用ファイル.xla"
    errFlag = False
    
    On Error GoTo Open_AddinError
    Application.Run macro:=addinFilename & "!アドイン用ファイルのマクロ"
    
    Exit Sub

' アドインが開かれていない時の処理
Open_AddinError:
    If errFlag = False Then
        errFlag = True
        Application.Workbooks.Open Filename:=ThisWorkbook.Path & "\" & addinFilename
        ' エラー行へ復帰する。
        Resume
    End If
End Sub

ここで、"アドイン用ファイル.xla"、"アドイン用ファイルのマクロ"の部分は、適宜変更する必要があります。

以上、メモ程度に書いてみました。