• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:どのファイルを開いた時もマクロを自動実行。エクセル)

エクセル新規ファイルでマクロを自動実行する方法

このQ&Aのポイント
  • エクセル新規ファイルでマクロを自動実行する方法について説明します。
  • personal.xlsでSub auto_open()とすることで、新規にエクセルを開いたときにマクロを実行することができます。
  • ただし、ファイル名にABCが含まれる場合にのみマクロを実行するには、どのファイルを開いてもマクロが自動的に実行される方法が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

アプリケーションイベントを使うため、いつもより少し準備をします。 手順: VBE画面でPersonal.xlsに挿入メニューから「クラスモジュール」を追加する クラスモジュールに下記をコピー貼り付ける Public WithEvents App As Application Private Sub App_WorkbookOpen(ByVal Wb As Workbook)  If InStr(Wb.Name, "abc") > 0 Then   Wb.Worksheets(1).Range("A1") = 111  End If End Sub Personal.xlsのThisWorkbookに下記をコピー貼り付ける Dim x As New Class1 Private Sub Workbook_Open()  Set x.App = Application End Sub エクセルを再起動する。個人用マクロブックの変更を問われたら、当然はいと答える。 新規じゃなく既存のブックを開いて動作を確認する。

ogawawa
質問者

お礼

さっそくのご回答ありがとうございました。 完璧です。 イベントを使うということですね。 プログラムの細かい意味は別途こちらで調べますが、 動作は確認し、OKでした。 とても助かりました。 本当にありがとうございました。

その他の回答 (2)

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.3

こんにちは。お邪魔します。 ちょっとしたこと、、、なのですが、 そういう目的だと、ThisWorkbook モジュールに集約して すべてPrivateスコープに統一するのがVBAらしくて いいかなぁ、と、思います。 好みだとは思いますし、実践例も恐らく半々程度に分かれる と思いますが、Class モジュールの扱いも知った上で ThisWorkbook モジュールでの実装、不足が出たならClass モジュール というのが、私も実践している私のお奨めです。 メンテが容易というのが唯一のメリットですが、 デメリットはないと私は思います。 ' ' =========PERSONAL.XLS=========== ' ' ====ThisWorkbook モジュール==== Option Explicit Private WithEvents xlApp As Application Private Sub Workbook_Open()   Set xlApp = Application End Sub Private Sub xlApp_WorkbookOpen(ByVal Wb As Workbook)   If InStr(1, Wb.Name, "abc", vbTextCompare) > 0 Then     Wb.Sheets(1).Range("A1") = 111   End If End Sub ' ' ============================== 因みに、こういう場合はauto_openは使わない方が 簡単ですので、標準モジュールの方でauto_openが 動かないようにしておいた方が良いと思います。 以上です。

ogawawa
質問者

お礼

さっそくのご回答ありがとうございました。 これまた、very good でスマートなご回答ありがとうございます。 動作も確認し、完璧でした。 ありがとうございました。 とても助かりました。

  • mac1963
  • ベストアンサー率27% (841/3023)
回答No.1

回答ではないけど 環境設定でマクロ無効にしてある場合は無理だけど そこは良いのかしら

ogawawa
質問者

お礼

さっそくのご回答ありがとうございました。 グループ内の統一された設定のもとのことですので、 ご心配はいりません。 ありがとうございました。

関連するQ&A

専門家に質問してみよう