非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Excelマクロを外部ファイルにして複数ブックから利用できるようにする

      2016/06/11

広告

 

Excelマクロは便利なのですが、ブックファイルの中にプログラムを仕込むので、基本使うマクロはそのファイル内に記述します。ここで問題になるのが、プログラムの最新管理。同じ内容のプログラムでもファイルごとに保存しているので、プログラムを修正する場合にすべてのファイルに対して修正しなければなりません。この工数がマクロの最大の欠点となります。

会社で、同じマクロを入れたファイルがコピーにコピーを重ねて増殖し、今度はそれを修正することになって、えらい苦労したことがあります。そうならないためにも、サクッと最新プログラムに更新できるよう、あらかじめ仕掛けておく必要があります。

そのプログラムがこちら。

Sub replaceModule()
   ModuleNames = “Module1, Module2”
   PathName = “F:\Users\***\test”
   Dim FileNames As Variant
   FileNames = Split(ModuleNames, “,”)
   For Each cmp In ThisWorkbook.VBProject.VBComponents
      If InStr(ModuleNames, cmp.Name) > 0 Then
         ThisWorkbook.VBProject.VBComponents.Remove cmp
      End If
   Next cmp
   For i = 0 To UBound(FileNames)
      file_path = PathName & “\” & Trim(FileNames(i)) & “.bas
      If Dir(file_path) = “” Then
         MsgBox (file_path & ” は存在しません。スキップします。”)
      Else
         ThisWorkbook.VBProject.VBComponents.Import file_path
      End If
   Next i
End Sub

 

最初の2行で、

  • ModuleNames :更新するモジュール名。カンマ区切りで指定
  • PathName :最新のプログラムが置かれる共有フォルダのパス

を指定します。

あとは、指定した共有フォルダに、Module1.bas, Module2.bas というマクロファイルを置けばOKです。管理者はこの2つのファイルを最新にした後、各ユーザー側で、replaceModule()を実行すれば最新ファイルにリプレイスされます。
 

ガジェット系ブログもよろしく

すまたすログ

ガジェット系ブログです。主にChromebookの情報やMyマシンのASUS Flip C434TAのレビューなどを書いています。その他IT機器のアプリのレビュー、たまに100円ショップなど。


スポンサーリンク

 - VBA