こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

どのファイルを開いた時もマクロを自動実行。エクセル

新規にエクセルを開いたときだけマクロを自動実行するには、
personal.xlsで
Sub auto_open()
' Macro1 Macro
Range("A1").Value = "111"
End Sub
とすれば良いかと思いますが、
新規に開くどのファイルに対しても ファイル名ABC を含んでいる時だけ
マクロを自動的に実行するにはどうしたらよいでしょうか?
(ファイルを開いてから マクロボタンを押して マクロに”ファイル名を
チェックしてA1にデータを書き込む”があるのはだめです。)
(アドインでツールバーボタンを押すのもだめです。)
エクセルは2003 OSはXPです。
説明不足でしたらすみません。

投稿日時 - 2013-04-14 17:27:44

QNo.8042776

困ってます

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

アプリケーションイベントを使うため、いつもより少し準備をします。


手順:
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

エクセルを再起動する。個人用マクロブックの変更を問われたら、当然はいと答える。
新規じゃなく既存のブックを開いて動作を確認する。

投稿日時 - 2013-04-14 17:44:26

お礼

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

投稿日時 - 2013-04-14 23:21:17

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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が
動かないようにしておいた方が良いと思います。

以上です。

投稿日時 - 2013-04-14 19:39:51

お礼

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

投稿日時 - 2013-04-14 23:25:00

ANo.1

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

投稿日時 - 2013-04-14 17:39:39

お礼

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

投稿日時 - 2013-04-14 22:06:44

あなたにオススメの質問