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
' ' =============================================
「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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
【Excel VBA】シートコピー時、マクロコードはコピーしたくない
Access(アクセス)
-
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
エクセルVBAで配列内に空白データを入れる場合
その他(Microsoft Office)
-
-
4
角カッコが含まれてるかどうかをlikeで取得
Excel(エクセル)
-
5
エクセルで条件付書式設定を解除して書式設定を残す方
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
ACCESS側からEXCELの書式を設定...
-
VBA、UserFormを前面に出力して...
-
Excel VBA 自動的に閉じるMsgBox
-
スタティックテキストが表示さ...
-
メッセージボックスのボタン名変更
-
vb.net イベントが完全に終了...
-
VBA kernel32 の意味
-
VC++6.0 CDateTimeCtrl の暴走...
-
Application.ScreenUpdating=Fa...
-
B列に特定の文字列が入っている...
-
マウスのクリックを無視したい
-
ボタンが押された事を検知する...
-
VBSで応答不要のメッセージボッ...
-
VBA メッセージボックスを自動...
-
【C#】 あるイベントから別イ...
-
MFCのメニューバーのイベント取得
-
InvalidateRectがうまくいかない
-
VB.NETのUsingキーワードの使い方
-
起動後直に実行するコードはど...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスのボタン名変更
-
VBSの処理中一旦処理を止めて再...
-
VBSで応答不要のメッセージボッ...
-
ACCESS側からEXCELの書式を設定...
-
VBA メッセージボックスを自動...
-
Application.ScreenUpdating=Fa...
-
VBA kernel32 の意味
-
エクセルVBAでクリップボード内...
-
Excelのワークシートに行を挿入...
-
Excel VBA で処理中断(DoEvents...
-
【C#】 あるイベントから別イ...
-
手動かプログラムでの起動かの判断
-
ASP.NETでのメッセージ画面を出...
-
Excel VBA 自動的に閉じるMsgBox
-
シャットダウン時のExcel強制終...
-
VBA、UserFormを前面に出力して...
-
<input type="file">タグで「キ...
-
Excel VBA 実行中に一瞬フリー...
-
「キャンセル」ボタン付きの処...
-
EXCEL VBA「Application.Displa...
おすすめ情報