No.1ベストアンサー
- 回答日時:
こんにちは。
> 別プログラムからOPEN
というのは、どんなプログラムでしょう?
仮に、
Excel VBA、から、Workbooks.Open メソッドで、
ということでお話ししますが、条件によっては、
VBAからでなくとも流用出来ます。
> 処理をWorkbook_Openに書きたいのですが
Workbook_Open イベントでなくても良ければ、
Workbook_Open イベントの代りに、
標準モジュールに、
Private Sub Auto_Open()
MsgBox "手動で起動したら警告メッセージ"
End Sub
とプロシージャを置いて、ここで処理すれば十分、
という場合もあるかと思います。
通常、ブックを開くと、まず、
Workbook_Open イベント が発生します。
もしも手動で開かれた場合は、この後に、
Private Sub Auto_Open() が呼び出されます。
手動であろうがなかろうが、共通の処理がある場合などでは、
以下のサンプルのようにしてみては如何でしょう。
従来、Workbook_Open イベント で処理していた内容を、
標準モジュールのPrivate Sub WbkOpenSeq()に書くようにして、
Application.OnTime メソッドを使って、実行プロシージャを呼ぶようにすれば、
Private Sub Workbook_Open()
Private Sub Auto_Open()
Private Sub WbkOpenSeq()
の順に実行されるようになります。
WbkOpenSeq実行時に、手動で開いたどうか判るように書いています。
flgAutoOpen と名付けたフラグは、
手動で開かれたなら、True、それ以外は、False、という意味です。
Private Sub Auto_Open() を通った=手動で開かれた場合だけ、
flgAutoOpen はTrueになります。
(以下の記述中、Workbook_Open、Auto_Open、の二つは規定の名前です。
それ以外のプロシージャ名、変数名、は、私が勝手に付けている名前です。)
' ' ========== ThisWorkbook モジュール ==========
Private Sub Workbook_Open()
Application.OnTime Now, "WbkOpenSeq"
End Sub
' ' =============================================
' ' =============== 標準モジュール ==============
Private flgAutoOpen As Boolean
Private Sub Auto_Open()
flgAutoOpen = True
End Sub
Private Sub WbkOpenSeq()
' ' 共通の処理があればココに。
If flgAutoOpen Then ' ' 手動
MsgBox "手動で起動したら警告メッセージ"
Else ' ' 手動じゃない
' ' 従来 Workbook_Open イベントで処理していた内容をココに。
End If
' ' 共通の処理があればココに。
End Sub
' ' =============================================
この回答へのお礼
お礼日時:2013/10/01 03:02
「Private Sub Auto_Open()」こういうのあったんですね。
初めて知りました。完璧です。これで対処できます。ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Windows上のプログラム。「予め決められた時刻に自分で起動して処理して自分で終了する」って可能? 3 2023/01/04 14:29
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- Windows 10 win 10 でのstartup program を削除したい 3 2022/04/29 09:21
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、写真のプログラムをどう直せ 2 2022/07/09 21:13
- Windows 10 windows 制限解除のやり方教えて 3 2023/01/02 22:46
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて 重複したものがあれば行を削除するとい 1 2023/02/27 18:49
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBSで応答不要のメッセージボッ...
-
VBSの処理中一旦処理を止めて再...
-
VBA kernel32 の意味
-
VBA メッセージボックスを自動...
-
【C#】 あるイベントから別イ...
-
ACCESS側からEXCELの書式を設定...
-
左シングルクリックとダブルク...
-
メッセージボックスのボタン名変更
-
VB.NETで数秒間msgboxの...
-
VB6 コマンドボタン クリック...
-
C言語で計算機をつくりたい
-
VBA、UserFormを前面に出力して...
-
WEB上にボタンが押せない
-
VbScriptでExcel操作待ちモード...
-
Excel VBA で処理中断(DoEvents...
-
キーボード入力、マウス操作を...
-
VB.NETのUsingキーワードの使い方
-
InvalidateRectがうまくいかない
-
VB.NET開発(イベントプロシー...
-
Application.ScreenUpdating=Fa...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスのボタン名変更
-
VBSの処理中一旦処理を止めて再...
-
VBA kernel32 の意味
-
VBSで応答不要のメッセージボッ...
-
VBA メッセージボックスを自動...
-
ACCESS側からEXCELの書式を設定...
-
Application.ScreenUpdating=Fa...
-
エクセルVBAでクリップボード内...
-
Excel VBA で処理中断(DoEvents...
-
【C#】 あるイベントから別イ...
-
Excel VBA 自動的に閉じるMsgBox
-
VBA、UserFormを前面に出力して...
-
ASP.NETでのメッセージ画面を出...
-
マウスのクリックを無視したい
-
EXCEL VBA「Application.Displa...
-
B列に特定の文字列が入っている...
-
MFCのワーカースレッドとUIスレ...
-
VCでウエイトをミリ秒でかけ...
-
DoEvents
-
「キャンセル」ボタン付きの処...
おすすめ情報