| 
    
     |  | こんばんは。 
 >
 >ただ、表示される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
 
 こんなコードです。
 
 一例です。検討してみてください。
 
 |  |