業務で複数人が使うマクロはアドインを作って配布すると便利だ。アドインのリボンにマクロを登録しておけば、だれでも簡単に利用することができる。
ただ、そのアドイン自身を更新しようと思ったら、また配布しなおして利用者全員に再登録してもらわなければならない。手間もかかるし、人によっては方法がよくわからずにそのまま古いバージョンを使い続けるなんてこともあるだろう。
単に便利機能の追加だったら良いが、重要なバグに対する更新だったり、誤操作防止やセキュリティの向上を伴うアップデートだったりした場合、確実に全員のアドインを更新しておきたい。
今回はそんな時に役立つ手法を紹介する。
まずtest.xlamとしてリボン付きのアドインを作成し、標準のアドインフォルダに保存する。リボンのコマンドは次のとおり。
アドインの標準モジュールに次のようなコードを入力し、保存したらそのアドインはC直下にもコピーしておく。
(実際の運用では共有フォルダなどにコピー)
Sub ShowVersion(control As IRibbonControl) MsgBox "これはVer2.0です。" End Sub Sub UpdateAddIn(control As IRibbonControl) Shell ("WScript.exe ""C:\AddInUpdater.vbs""") ThisWorkbook.Close End Sub
これは上記のリボンから呼び出すことを想定しているが、リボンの作成方法はここでは説明しないので過去記事を参照してほしい。
次に、次のコードでAddInUpdater.vbsを作成し、C直下に保存する。
(実際の運用では共有フォルダなどに保存)
Const GetAddInFrom = "C:\test.xlam" MsgBox "アドインを更新します。OKをクリックした後、しばらくお待ちください。" WScript.Sleep 3000 Call DeactivateAddIn Call UpdateAddIn Call ActivateAddIn MsgBox "アドインを更新しました" Sub DeactivateAddIn Set Excel = GetObject(, "Excel.Application") For Each x In Excel.AddIns If x.Name = "test.xlam" Then x.Installed = False End If Next End Sub Sub ActivateAddIn Set Excel = GetObject(, "Excel.Application") For Each x In Excel.AddIns If x.Name = "test.xlam" Then x.Installed = True End If Next End Sub Sub UpdateAddIn Set WS = WScript.CreateObject("WScript.Shell") UserProfile = WS.ExpandEnvironmentStrings("%USERPROFILE%") Set FSO = WScript.CreateObject("Scripting.FileSystemObject") FSO.CopyFile GetAddInFrom, UserProfile & "\AppData\Roaming\Microsoft\AddIns\", True End Sub
なお、今回はテストなのでアップデーターも最新アドインもCドライブ直下においているが、実際に使う際はファイルサーバーの共有パスなどを指定しておく。
そして、自分のExcel上でアドインの標準モジュールを書き換え、バージョンを1.0に書き換えて保存する。
これでCドライブにVer.2.0、自分のアドインフォルダにVer.1.0が入っている状況が構築できた。
あとは更新ボタンを押すだけで、CにあるVer.2.0がインストールされる。
このような仕組みを構築しておけば、アドインを更新したときは共有フォルダの最新アドインを差し替えて、みんなに更新ボタンを押してもらうだけで常に最新版を配布できるようになる。
※例外処理の対処はしていないので利用される場合は自己責任で編集してください。
VBScriptについて
VBScriptはスクリプト言語であるが、文法はほとんどVBAと変わらない。
大きな違いは、エントリーポイント(プログラムが開始される位置)が行頭であることと、変数に型を持たせることができない点である。
現在発売されているVBScriptの書籍は以下2点のみ。
[改訂版] VBScriptポケットリファレンス (POCKET REFERENCE)
- 作者: (株)アンク
- 出版社/メーカー: 技術評論社
- 発売日: 2006/05/30
- メディア: 単行本
- 購入: 4人 クリック: 66回
- この商品を含むブログ (9件) を見る
最速攻略 VBScriptサンプル大全集 Windows7/Vista/XP/2000対応
- 作者: 結城圭介
- 出版社/メーカー: 技術評論社
- 発売日: 2010/08/24
- メディア: 大型本
- 購入: 1人 クリック: 8回
- この商品を含むブログを見る
ShellやFileSystemObjectについて詳しく知りたい場合はこちらがおススメ。
- 作者: 羽山博
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2006/10/24
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 64回
- この商品を含むブログ (23件) を見る