|
こんばんは。
>
>ただ、表示されるUserFormの押したいボタンのDefaultプロパティがTrueに
>なっていれば、表示前にSendKeysでEnterキーを送れば閉じれるのではないか
>と思います。
Alt+F4でユーザーフォームを閉じることが出来ますから、
sub main()
Dim bk As Workbook
SendKeys "%{F4}"
Set bk = Workbooks.Open(ThisWorkbook.Path & "\book2.xls")
' ↑Workbook_Openイベントマクロを含むブック
end sub
なんてコードで条件が揃えば出来そうですが・・・。
Workbook_Openイベント内で
・
doevents
・
・
userform1.show
なんてコードだと正しくユーザーフォームを閉じることは出来ません
(Excelそのものが終了してしまいます)
ちょっと安定感が悪いので私は、
実務では仮に成功しても使いません、たぶん。
Book2.Xls(呼び出し側)のコードが変更出来るのなら・・・、
ThisworkbookのWorkbook_Open イベントではなく、
標準モジュールのAuto_Openでブックを開いた直後に実行するコードを定義します。
標準モジュールには
'==================================================
Sub auto_open(Optional frmhide As Boolean = False)
With ThisWorkbook.Worksheets(1).Range("a1")
.Value = Date
.NumberFormatLocal = "yyyy/mm/dd"
End With
' ↑これがユーザーフォーム表示する以外の処理の例
If frmhide = False Then UserForm1.Show
End Sub
呼び出し元では
'=========================================================
Sub main()
Dim bk As Workbook
Set bk = Workbooks.Open(ThisWorkbook.Path & "\book2.xls")
Application.Run bk.Name & "!auto_open", True
End Sub
こんなコードです。
一例です。検討してみてください。
|
|