- 締切済み
エクセル起動時、自動的にマクロを実行する
エクセルファイルを開いたとき、自動的にマクロを 組み込む方法で、「XLSTARTフォルダ」にマクロファイル を置くという方法を最近知りました。 任意のエクセルファイルを開いたときのみ XLSTARTフォルダのマクロファイルを実行する 方法はないのでしょうか? 普通にエクセルを使いたいときでも、マクロが組み込まれて しまい、とても困っています。 例えば、指定のフォルダの中にあるエクセルファイルであれば XLSTARTフォルダのマクロファイルを実行する という、操作ができたりすれば、とてもよいのですが。 何か良い方法があれば、教えていただきたいです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
>指定のフォルダの中にあるエクセルファイルであれば >XLSTARTフォルダのマクロファイルを実行する 一応、XLSTART に入れるというよりも、XLSTARTにある個人用マクロブック(Personal.xls , PERSONAL.XLSB等) にしてください。他のファイルは基本的には入れないでください。理論的には問題ないはずですが、なぜか、トラブルが発生する率が高くなるようです。 一応、標準モジュールのAuto_Open には間違いはありませんが、その前に、 Class モジュールを設けてください。名前を、Class1 (標準)になります。 以下は、Applicationオブジェクトを横取りされないように(カプセル化)していますが、横取りしても構わないなら、Private ステートメントは、Public にすれば、もう少し、コードは簡単に済みます。 以下の例は、Excelの標準フォルダの下のTest1フォルダに入れた場合に対するものです。 ==================== 'Class1 モジュール Private WithEvents NewApp As Application Public Property Set myNewApp(ByVal myApp As Application) Set NewApp = myApp End Property Private Sub NewApp_WorkbookOpen(ByVal Wb As Workbook) Dim myPath As String myPath = NewApp.DefaultFilePath & "Test1" '特定のフォルダ If InStr(1, Wb.Path, myPath, 1) > 0 Then MsgBox "You are openning a file in the path of " & vbCrLf & _ myPath End If End Sub ---------------------------- '標準モジュール Private myApp As Class1 Sub Auto_Open() Set myApp = New Class1 Set myApp.myNewApp = Application End Sub
- emsuja
- ベストアンサー率50% (1065/2116)
>Auto_Open を組み込むには1度、エクセルファイルを開いてから、 >VBEを開いて記述するしかないですよね? まぁ 記述するかインポートさせるぐらいしか思い当たりませんね 起動時に実行させるマクロの内容が全て同じならば・・・ XLSTART マクロの中に、起動した Excel Book の中に特定の名前のシートとかが存在するかをチェックして XLSTART の実行を抜け出す等の処理を組み込むことも考えられますがチョッとトリッキーな処理になりますね Auto_open マクロを実行する Excel Book をサンプルファイルとして用意しておき 新しい Excel Book を作成する時はそのサンプルファイルを呼び出してデータを作成後名前と変えて保存してもらう。 じゃダメでしょうか? この手のものは考えれば考えるほど泥沼に落ち込んで行き最終的には本来の目的を見失ったシステム作りが出来上がる可能性がありますので出来るだけシンプルに考えるべきだと思います。
- emsuja
- ベストアンサー率50% (1065/2116)
通常は Auto_Open を使います 該当するExcel Book の標準モジュールに次のマクロを組み込んでみてください Sub Auto_Open() MsgBox "Auto_Open が実行されました" End Sub >任意のエクセルファイルを開いたときのみ >XLSTARTフォルダのマクロファイルを実行する >方法はないのでしょうか? XLSTART フォルダを使用すると新しい Excel Book を作るたびにマクロが組み込まれてしまいます、必要な都度 Auto_Open にマクロを組み込んだほうが宜しいのでは?
- kernel_kaz
- ベストアンサー率23% (665/2872)
その対象データの中に、autorunマクロを組んどけば? autorunだったか、auto_runだったか、記憶が曖昧だけどマクロ名をそれにすれば、できたはず ヘルプで確認してみて
お礼
回答ありがとうございます。 エクセルファイルを開く人は、プログラムの初心者と仮定したいので できれば、エクセルファイルを開くだけの操作でマクロが組み込まれ ているという状態にしたいのです。 私も本当に悩んでいるのですが、Auto_Open を組み込むには 1度、エクセルファイルを開いてから、VBEを開いて記述するしかないですよね?