新規にエクセルを開いたときだけマクロを自動実行するには、
personal.xlsで
Sub auto_open()
' Macro1 Macro
Range("A1").Value = "111"
End Sub
とすれば良いかと思いますが、
新規に開くどのファイルに対しても ファイル名ABC を含んでいる時だけ
マクロを自動的に実行するにはどうしたらよいでしょうか?
(ファイルを開いてから マクロボタンを押して マクロに”ファイル名を
チェックしてA1にデータを書き込む”があるのはだめです。)
(アドインでツールバーボタンを押すのもだめです。)
エクセルは2003 OSはXPです。
説明不足でしたらすみません。
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
エクセルを再起動する。個人用マクロブックの変更を問われたら、当然はいと答える。
新規じゃなく既存のブックを開いて動作を確認する。
さっそくのご回答ありがとうございました。
完璧です。
イベントを使うということですね。
プログラムの細かい意味は別途こちらで調べますが、
動作は確認し、OKでした。
とても助かりました。
本当にありがとうございました。
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が
動かないようにしておいた方が良いと思います。
以上です。
さっそくのご回答ありがとうございました。
これまた、very good でスマートなご回答ありがとうございます。
動作も確認し、完璧でした。
ありがとうございました。
とても助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 11:05
- Visual Basic(VBA) Wordマクロで指定したフォルダ名に保存する方法について 8 2022/12/13 11:35
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
他Book(シートモジュール)のマ...
-
偶数/奇数の判定
-
エクセルVBAでシートモジュール...
-
SAP ABAP 汎用モジュールの登...
-
マクロでファイル削除をごみ箱...
-
Excel VBA 定義されたプロージ...
-
クラスモジュールについて
-
ExcelVBA:パブリック オブジェ...
-
ユーザー定義関数に#NAME?が返...
-
テキストボックスの数値を3桁ご...
-
携帯用の動画でサムネイル表示...
-
Excel VBAでリンク切れをチェッ...
-
グラフのX,Y座標を取得したい
-
ユーザー定義型を引数(VB6.0)
-
エコキュート、太陽光商談中で...
-
モジュール化とは?
-
エクセル2016VBEのプロジェクト...
-
非表示モジュールコンパイルエ...
-
エクスプローラー風のUIを作り...
-
VBのフォームモジュールと標準...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
VBAで別モジュールへの変数の受...
-
VBでグローバル変数を宣言するには
-
Excel VBA 『Call』で呼び出す...
-
Excel VBA 定義されたプロージ...
-
VBA This Workbookモジュール...
-
ユーザー定義関数に#NAME?が返...
-
Excel VBAで、ユーザーフォーム...
-
ArduinoのジャイロモジュールMP...
-
グラフのX,Y座標を取得したい
-
'Range'メソッドは失敗しました
-
VBAで旧字体を異字体に一括で変...
-
モジュールとクラスの違いって...
-
Excelで時刻になったら知らせて...
-
【vba】フォームに書いてあ...
-
モジュールとは何ですか
-
Access VBA標準モジュールにつ...
-
モジュールの最大数はいくつな...
-
VBのフォームモジュールと標準...
おすすめ情報