Excel 2003 スプレッドシートに VBA マクロがあり、Excel を実行しているマシンにそれを「インストール」したいと考えています。
ローカル マシンに「信頼できる場所」を作成しました。モジュールを既存のワークブックにコピーし、それを呼び出すためのキーの組み合わせを割り当てる方法は知っていますが、誰かが Excel を起動したときにマクロを自動的に表示する方法はわかりません。 . ヘルプ?
Excel 2003 スプレッドシートに VBA マクロがあり、Excel を実行しているマシンにそれを「インストール」したいと考えています。
ローカル マシンに「信頼できる場所」を作成しました。モジュールを既存のワークブックにコピーし、それを呼び出すためのキーの組み合わせを割り当てる方法は知っていますが、誰かが Excel を起動したときにマクロを自動的に表示する方法はわかりません。 . ヘルプ?
以前は、マクロを Personal.xls ワークブックに保存していたのを覚えています。そうすれば、Excel を開いたときにいつでもマクロにアクセスできます。これは 2007 で変更されましたか?
それは方法でした。より良い方法は、[ツール] -> [アドイン] で有効化および無効化できるアドインを作成することでした (そして現在もそうです)。(Excel を閉じて再起動しても、アドインは有効なままです)。任意の .XLS ファイルをアドイン (.XLA) として保存できます。
アドイン内では、次のメソッドを使用できます。Auto_Open
Private Sub Auto_Open()
DoStuff
End Sub
...または、Workbook_Open
Ryan が提案するように、イベントを接続することもできます。
もちろん、ユーザーはアドインを無効にできるため、Auto_Close
(またはWorkbook_BeforeClose
イベント内で) 逆の操作を行うことも必要です。
Workbook_AddinInstall
実際、イベントを使用する場合は、およびイベントを使用する方がよいでしょうWorkbook_AddinUninstall
。それらを使用する方が少し「正しい」だけでなく、Excel を閉じて保存を求めるメッセージが表示されたときに [キャンセル] をクリックしても、「閉じる」イベントが発生しないという利点もあります。
最も簡単な解決策は (xl2003 と xl2007 の両方で) マクロを含む xls を= Application.StartupPath
クライアント マシンからのパスにコピーすることです (Excel をインスタンス化してこの情報を取得する単純な vbscript インストーラーを構築できます)。
この方法では、startuppath にある xls ファイルが Excel の起動時に読み込まれるため、開いているすべてのブックでマクロを使用できます。
「現れる」とはどういう意味かわかりませんが、から呼び出すことで自動的に実行できます
Private Sub Workbook_Open()
End Sub
ThisWorkbook
オブジェクトモジュールで。それはあなたが探しているものですか?
古い方法では、マクロをワークブックに保存していたのを覚えています。Personal.xls
そうすれば、Excel を開いたときにいつでもマクロにアクセスできます。これは 2007 で変更されましたか?