まずとこがでアンインストールのグローバル変数を定義
Public gUninstall As BooleanxlaののWorkbook_Openに
xla開くときに自動インストール
Private Sub Workbook_Open() Workbooks.Add AddIns.Add fileName:=ThisWorkbook.FullName AddIns(getShortName(ThisWorkbook.name)).Installed = True End subボタンを定義削除
Sub delMenu() On Error Resume Next Application.CommandBars(1).Controls("&テスト").Delete Application.CommandBars(1).Controls("&アンインストール").Delete End Subボタンを定義追加
Sub addMenu() Dim objButton As CommandBarControl On Error Resume Next Application.ScreenUpdating = False With Application.CommandBars(1) If .Controls("&テスト") Is Nothing Then '\\Create Button with image Set objButton = .Controls.Add(msoControlButton, before:=11) With objButton .Style = msoButtonIconAndCaption .Caption = "&テスト" .FaceId = 8 .OnAction = "テストSub" End With End If If .Controls("&アンインストール") Is Nothing Then Set objButton = .Controls.Add(msoControlButton, before:=11) With objButton .Style = msoButtonIconAndCaption .Caption = "&アンインストール" .FaceId = 3838 .OnAction = "uninstall" End With End If End With Application.ScreenUpdating = True End Subアドインをアンインストール
Sub uninstall() Call delMenu gUninstall = True AddIns(getShortName(ThisWorkbook.name)).Installed = False End Sub最後、完全に自分を殺す
Private Sub Workbook_BeforeClose(Cancel As Boolean) If gUninstall Then Call delMenu End Sub以上。
以下は古いやり方
**************************************************************************
EXCEL2000-2003のアドインは *.xla
EXCEL2007のアドインは *.xlam(マクロ有効)
しかし配布するとき、ユーザに一連の操作をし、アドインとして登録してあげないと使えない。
具体の手順は(EXCEL2007の場合):
- アドインファイル(*.xla または *.xlam)を所定の場所にコピー、一般的には C:\Program Files\Microsoft Office\Templates\addin (デフォルト)です
- 手順①のコピー先を「信頼できる場所」に設定すること。EXCELの一番左上のボタンを押して > 「EXCELのオプション」 > 「セキュリティーセンター」 > 「セキュリティーセンターの設定」 > 「新しい場所の追加」 > 「参照」 > 「確認」 (※ステップ1のコピー先がデフォルトのフォルダーなら、ステップ2は省略できる)
- EXCELの一番左上のボタンを押して > 「EXCELのオプション」 > 「アドイン」 > 「管理→EXCELアドイン」 > 「設定」 > 「アドイン→ティックを入れて」 > 「OK」
もっと簡単な方法はないか?
(EXCEL2007の場合):
C:\Documents and Settings\UserName\Application Data\Microsoft\excel\XLSTART
※ショートキー:Win+rで開く「ファイル名を指定して実行」に %AppData%\Microsoft\excel\XLSTART で一発行ける
もう一個は%AppData%\Microsoft\AddIns
というフォルダーは一種特別のフォルダー、EXCEL起動時、このフォルダーに入っているスクリプトファイル(ここでは*xlaまたは*.xlamを指しています)をすべて読み込みます。なので、最初にアドインファイルを実行するとき、自分自身をこのフォルダーにコピーすれば、上記面倒な設定は要らなくなる。
ソースコードの一部
Private Sub Workbook_Open() Dim xlstart As String 'ファイルシステムオブジェクトの宣言 Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") 'XLSTARTフォルダー取得 xlstart = CStr(Environ("USERPROFILE") & "\Application Data") & "\Microsoft\Excel\XLSTART" 'もしフォルダー存在すれば If UCase(Dir(xlstart, vbDirectory)) = "XLSTART" Then 'もしファイル存在しなければ If Dir(xlstart & "\" & ThisWorkbook.Name) = "" Then '自分自身をコピーします FSO.CopyFile ThisWorkbook.FullName, xlstart & "\" & ThisWorkbook.Name End If End If Set FSO = Nothing End Sub
こうすれば、今後ユーザがEXCELを開けば、アドインは有効になります。
EXCEL2000-2003とEXCEL2007両方対応する為にxlaとxlamを別々作ったほうがいいと思います。
0 件のコメント:
コメントを投稿