VBAでウインドウを閉じて他作業ができるかどうか

このQ&Aのポイント
  • VBAを使用して長時間かかるマクロを実行する際、ウインドウを閉じて他の作業を行いたい場合があります。
  • ただし、ウインドウを閉じるとActiveSheetが非アクティブになるため、新しいWorkbookを開いても突然ウインドウが立ち上がる可能性があります。
  • 事前にApplication.ScreenUpdating = Falseを設定しておけば、ウインドウが立ち上がることはないと思われますが、実際に試していないため確証はありません。
回答を見る
  • ベストアンサー

VBA 動作中にウインドウ閉じたら駄目?

所要時間が長いマクロを動かす場合「ウインドウを閉じて他作業が出来たらありがたい」と思うことが多々あります。他作業とは、フォルダ操作やパワーポイントやワードで、エクセル以外のことです。エクセルの他ファイル編集も出来ればありがたいですが。。。 ActiveSheetは、ウインドウ閉じたらアクティブではなくなるのでしょうか? 事前にApplication.ScreenUpdating = False をやっておけば閉じて動かしてる最中に新しいWorkbook.openしても突然ウインドウが立ち上がることは無いでしょうか?私の業務では、テキストファイルをエクセルで開き、データ処理作業して閉じる、の動作が非常に多いです。 今、手元にエクセルが無いので、やってみたら?の回答は無しでお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

あなたの『閉じる』の意味が不明ですが 最小化しておいて スタートメニューから新たなExcelを立ち上げて そちらで作業すれば干渉することは無いハズなので まず、大丈夫です。 『まず』の意味は新たなExcelの方でも VBAで処理を行おうとして、あいまいなコードがあると 最小化しているExcelアプリケーションの方に 影響が出る可能性がゼロではないということです。 ※最小化が効力を発揮するのではなく単に操作の邪魔になりそうだからです。 『スタートメニューから新たなExcelを立ち上げて』が、みそ。 イメージ的ですが、たとえば標準モジュールに Sub test() Application.WindowState = xlMinimized Application.Wait (Now() + TimeValue("0:00:10")) '実際の処理の代わり Application.WindowState = xlNormal MsgBox "おわったよ" End Sub

over_the_galaxy
質問者

お礼

ありがとうございます。 出来るようですね。終了メッセージも使わせて頂きます。

関連するQ&A

  • Excel 2007 Windows7での不具合

    下記のExcel 2007 VBAマクロを Windows XP で組んでいましたが、 Windows 7 に乗り換えたとたん、強制終了してしまいます。 Workbooks.Openのアドレスは、Windows 7用に書き換えました。 何方かご教授願います。   Private Sub CommandButton63_Click()   Application.ScreenUpdating = False   Dim wb As Workbook   wbn1 = ActiveWorkbook.Name   For Each wb In Workbooks   If wb.Name = wbn1 Then   Workbooks.Open "D:\ユーザー\PC18\Documents\※※※※\※※※※.xls"   ActiveWindow.WindowState = xlMaximized    Workbooks(wbn1).Save   Application.DisplayAlerts = False   Workbooks(wbn1).Close   Else: Application.ScreenUpdating = False   End If   Next   Application.ScreenUpdating = True   End Sub

  • VBA EnableEventsの動作

    Win7 Excel2013使用 Application.EnableEventsの動作でおかしな事がおきているので 解決方法を教えて頂きたいのですが、 シートの並びかえマクロを作成し、 その中で最初と最後にApplication.EnableEventsとscreenupdating を false→処理→trueで設定しています。 マクロ実行後、別のマクロ(sheetchangeイベント)を実行しようとしたところ マクロ動作せず、状況を調べるために sub test() msgbox Application.EnableEvents msgbox Application.ScreenUpdating End sub 上記testマクロでそれぞれの状況を表示させたところ、どちらもtrueがかえってきました。 ただ、もう一度このtestマクロを実行するとApplication.EnableEventsだけfalseとなります。 シートの並びかえマクロのデバッグで検証を行いましたが、特にエラーはなく、最後のtrueまで 実行される事は確認しました。 何か考えられることはありますでしょうか?

  • エクセル VBAについて

    Private Sub Workbook_Open() プロシージャーにてapplication.visible=falseを記述し、Userformのみ表示している状態で、違うエクセルファイルを開くと、表示されません。違うエクセルファイルを開いた時に自動でエクセルが表示できるような対象法を教えてください。お願いします。

  • 他のBOOKにマクロを反映させない様にするには?

    Excel VBA初心者です。 エクセルのWorkbook Openイベントでワークシートメニューバーを非表示にしています。 マクロを作成したBookを開いてから他のBookを開いた場合はワークシートメニューバーは表示されるのですが(マクロは反映されない。)、他のBookを開いた後、マクロを作成したBookを開いた場合ワークシートメニューバーが他のBookまで非表示になってしまいます。(マクロが反映される。) マクロを作成したBookをその他Bookから常に独立させて(別のインスタンス?として開く??)開く様にするにはどうしたらよろしいでしょうか? 以下がOpenイベントです。 Private Sub Workbook_Open() Application.ScreenUpdating = False '動きを見せない Application.DisplayAlerts = False '選択画面をとばす Application.IgnoreRemoteRequests = True '他のアプリケーションを無視 Application.CommandBars("Worksheet Menu Bar").Enabled = False 'メニューバー非表示 ~以下長々とあります。~ End Sub 宜しくお願い致します。 ※メニューバー非表示は、社内に配布した場合にシート内容を変更されたくないためです。

  • タスクバーのアプリ開閉を回避したいです。

    30件程度のエクセル「個別ファイル」を集計するマクロについてです。 下記のコードを実行すると、VBAが記述されているエクセルの他に タスクバーで「個別ファイル」のエクセルが開閉してしまい、画面がちらちらしてしまいます。 ExecuteExcel4Macroを試し、かなり苦戦したのですが処理が遅かったです。 個別ファイルのウィンドウだけを開閉し、処理の最後にエクセルアプリを閉じる方法など ありませんでしょうか? 他の方法でも構いませんので、みなさまよろしくご回答願います。 WindowsXPとExcel2007を使用しております。 Application.ScreenUpdating = False Application.EnableEvents = False Set 個別ファイル = Workbooks.Open(Filename:=LocalFileName, ReadOnly:=True) '集計マクロ 個別ファイル.Close SaveChanges:=False Application.EnableEvents = True Application.ScreenUpdating = True

  • エクセル VBA エクセルの表示について

    下記のプロシージャを実行し、Userform1のみ表示したじょうたいで、他のエクセルファイルを開くとエクセルが表示されません。他のエクセルファイルを開いた時に、エクセルが自動で表示されるような対処法を教えてください。どうかよろしくお願いします。 Private Sub Workbook_Open() Application.Visible = False UserForm1.Show End Sub

  • ExcelVBAで質問です。Workbook_openイベントが発生し

    ExcelVBAで質問です。Workbook_openイベントが発生しない。 Excel2003を開いている状態で「ファイル」→「開く」でファイルを開くと Workbook_openイベントが発生しません。他のマクロは正常に動くのですが、 Excelを閉じている状態でファイルを開くとWorkbook_openイベントが発生します。 (Workbook_Activateイベントでも同様の結果になりました。) なぜでしょうか?基本的なことかもしれないですが教えていただけると幸いです。 宜しくお願いします。

  • エクセル マクロ 値の貼り付け

    以下のエクセルのマクロで値のみを貼り付けたいのですが、.valueを指定しても上手くできません。 どのように修正すればいいか教えてください。 Dim wb As Workbook Application.ScreenUpdating = False Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\ファイルA.xls", UpdateLinks:=0) ThisWorkbook.Sheets("BBB").Range("E4:AR4").Copy wb.Sheets("BBB").Range("E4:AR4") Application.DisplayAlerts = False wb.Close (True) Application.DisplayAlerts = True Application.ScreenUpdating = True

  • エクセルのVBAに関する質問です。

    エクセルのVBAに関する質問です。 「指定フォルダ(ここではXXXX)内の全てのエクセルファイルを開き、内容を転記していく」 というマクロについての質問です。 ネットを参照し、以下のマクロを見つけました。 -------------------------------------------------------------------------- Sub Macro1() Dim theName As String Dim theDir As String Dim theBook As Workbook Dim flg As Boolean flg = True Application.ScreenUpdating = False theDir = ThisWorkbook.Path & "\XXXX" theName = Dir(theDir & "\*.xls") Do While theName <> "" Set theBook = Workbooks.Open(theDir & "\" & theName) Call subA(theBook, flg) flg = False theBook.Close theName = Dir Loop End Sub Sub subA(theBook As Workbook, flg As Boolean) Dim thetbl As Range, LRow As Long Set thetbl = theBook.Sheets(1).Range("A1").CurrentRegion thetbl.Copy With ThisWorkbook.ActiveSheet LRow = .Range("A65536").End(xlUp).Row If LRow = 1 Then .Range("A" & LRow).PasteSpecial xlPasteValues Else .Range("A" & LRow + 1).PasteSpecial xlPasteValues End If End With Application.CutCopyMode = False End Sub -------------------------------------------------------------------------- 実際にはこのマクロは上手く動作していますが、1つ疑問があります。 「一度開いたファイルは開かない」というのはどの部分のおかげか、ということです。 当方初心者で、分かりづらい質問かもしれませんが、どうぞご教授お願いいたします。

  • EXCEL VBAでブックを開いても遷移したくない

    EXCEL VBAでWorkbooks.Openを使ってブックをオープンしていますが、 Application.ScreenUpdating = False を記述しているにもかかわらず、画面が遷移してしまいます。 どなたかわかる方、ご教授願います。

専門家に質問してみよう