質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

2956閲覧

Excel365 Auto_Openでマクロ自動実行中にブックが表示されない

退会済みユーザー

退会済みユーザー

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/10/12 00:10

編集2020/10/12 00:56

Excel VBAにあまり詳しくない者ですが、ご教授いただけるとありがたいです。

Excel365で、Auto_Openを使って、ブックを開くと同時にマクロが自動実行されるツールを作りました。このExcelブックを、Windowsエクスプローラーからダブルクリックで起動したところ、以下のように、Excelのオープニングダイアログが表示された状態でマクロが実行されて、ブックのウィンドウは表示されません。
イメージ説明

VBAマクロは最後まで実行されるのでその意味ではいいのですが、処理中の過程をシートに出力していて、それが表示されず確認できないのがつらいです。

以下の★を入れてみたのですが、変わりません。
Auto_Openではなく、ThisWorkbookのWorkbook_Openでも試しましたが、同じでした。

VBA

1Private Sub Auto_Open 2 ' 本ブックをアクティブ★ 3 ThisWorkbook.Activate 4 ActiveWindow.Visible = True 5 6 ' 以降は具体的な処理 7 ' ... 8End Sub

どうすれば、ブックのウィンドウが表示されるでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2020/10/12 00:45

タグにVBAも追加したほうがいいでしょう。
退会済みユーザー

退会済みユーザー

2020/10/12 00:56

ご指摘ありがとうございます。追加しました。
tosi

2020/10/12 01:48 編集

Excel の障害の様な気がします。 この記述だけ(4行以外全部削除)でもダメなんですよね。 Private Sub Auto_Open ThisWorkbook.Activate ActiveWindow.Visible = True End Sub Excelファイルを起動ではなく、メニューからExcelApplicationを起動させて正常に空白ワークシートは出ますよね。 スタート画面を表示をON/OFFにして見てどうでしょうか。 (https://infoliteracy-univ.com/excel-start) 内容を読むと通常は有り得ない障害と思います。 Excelの再インストールだけで直るのでしょうか?OSとの兼ね合いも考えられます。そのPC独自の問題と思われますので、原因究明は厳しいかもしれません。
退会済みユーザー

退会済みユーザー

2020/10/12 01:53

hatena19さまに教えて頂いた以下の通り、マクロ実行を一瞬待ち合わせれば解決しました。 Private Sub Workbook_Open() ThisWorkbook.Activate ActiveWindow.Visible = True DoEvents Application.OnTime EarliestTime:=Now() + TimeValue("00:00:01"), Procedure:="MyFunc" End Sub
guest

回答1

0

ベストアンサー

vba

1Private Sub Auto_Open() 2 ' 本ブックをアクティブ★ 3 ThisWorkbook.Activate 4 ActiveWindow.Visible = True 5 DoEvents 'このおまじないを入れたどうでしょうか。 6 7 ' 以降は具体的な処理 8 ' ...

ループで重い処理を作成して実験してみました。
上記ではダメですね。
OnTime で遅延実行させたらいいようです。

標準モジュール

vba

1Public Sub Hoge() 2 3 '実行したい処理 4 5End Sub 6

 
ThisWorkBook

vba

1Private Sub Workbook_Open() 2 ThisWorkbook.Activate 3 ActiveWindow.Visible = True 4 DoEvents 5 6 '1秒後に実行 7 Application.OnTime EarliestTime:=Now() + TimeValue("00:00:01"), Procedure:="Hoge" 8End Sub

Now() + TimeValue("00:00:01")で1秒後に実行してますが、
Now() + 200 / 86400000 とすると200ミリ秒後(0.2秒後)に実行します。
当方の実験では 10ミリ秒後にしても表示されました。

投稿2020/10/12 00:43

編集2020/10/12 01:21
hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/10/12 00:49

それはやってみましたが、同じでした。
hatena19

2020/10/12 01:14

回答に別案を追記しました。参照してください。
退会済みユーザー

退会済みユーザー

2020/10/12 01:39

ありがとうございます!教えていただいたApplication.OnTimeを使ってうまくできました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問