Excel

【Excel】VBAマクロで処理が終わるまで待機・終わったら次の処理に移る方法【MkDir, Workbooks.Add, Application.Wait】**

当サイトでは記事内に広告を含みます。

この記事では、VBAマクロを使用して一連の処理を行い、その処理が完了するまで待機した後、次の処理に移る方法について解説していきます。

ポイントとしては`MkDir`、`Workbooks.Add`、`Application.Wait`を使用することです。

なお、マクロ初心者でもわかりやすいように変数名をaaaaa変数aaaaaといった名称にしています。

そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。

それでは詳しく見ていきましょう!

VBAマクロで処理が終わるまで待つ・終了後に次の処理に移る方法

それではまず、処理が終わるまで待つ・終了後に次の処理に移る方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub CreateFoldersAndFiles()
    Dim aaaaaFolderPathaaaaa As String
    Dim aaaaaIaaaaa As Integer
    
    ' Cドライブ直下にsample1からsample10までのフォルダを作成
    For aaaaaIaaaaa = 1 To 10
        aaaaaFolderPathaaaaa = "C:\sample" & aaaaaIaaaaa
        MkDir aaaaaFolderPathaaaaa ' フォルダ作成
        Application.Wait Now + TimeValue("00:00:02") ' 2秒待機
        ' 同名のExcelファイルを新規作成して保存
        Workbooks.Add
        ActiveWorkbook.SaveAs Filename:=aaaaaFolderPathaaaaa & "\sample" & aaaaaIaaaaa & ".xlsx"
        ActiveWorkbook.Close False
    Next aaaaaIaaaaa
End Sub

コードのAlt+F8を押し、マクロ選択画面でCreateFoldersAndFiles関数を実行します。

このコードでは、まずCドライブ直下にsample1からsample10までのフォルダを新規作成します。

その後、各フォルダに対応する名前のExcelファイルを新規作成し、フォルダ内に保存します。`MkDir`関数を使用してフォルダを作成し、`Workbooks.Add`メソッドでExcelファイルを作成しています。

また、`Application.Wait`メソッドを使用して、フォルダ作成の間に少し待機時間を設けています。

これにより、処理が安定して完了するのを確認できます

VBAマクロで処理が終わるまで待つ・終了後に次の処理に移る方法

続いては、特定のフォルダ内のExcelファイルを操作し、処理の終了を待つ方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub DeleteColumnAndCreateFile()
    Dim aaaaaFolderPathaaaaa As String
    Dim aaaaaFileNameaaaaa As String
    Dim aaaaaWorkbookaaaaa As Workbook
    Dim aaaaaFileaaaaa As String
    
    aaaaaFolderPathaaaaa = "C:\sample"
    aaaaaFileNameaaaaa = Dir(aaaaaFolderPathaaaaa & "\*.xlsx")
    
    ' sampleフォル

ダ内の全てのExcelファイルを処理
    Do While aaaaaFileNameaaaaa <> ""
        Set aaaaaWorkbookaaaaa = Workbooks.Open(aaaaaFolderPathaaaaa & "\" & aaaaaFileNameaaaaa)
        ' "ok"列を探して削除
        On Error Resume Next ' エラーを無視
        aaaaaWorkbookaaaaa.Sheets(1).Columns("ok").Delete
        On Error GoTo 0 ' エラー無視を解除
        aaaaaWorkbookaaaaa.Close SaveChanges:=True
        
        aaaaaFileNameaaaaa = Dir() ' 次のファイル名を取得
    Loop
    
    ' 処理終了後、新規Excelファイルを作成
    Workbooks.Add
    ActiveWorkbook.SaveAs Filename:=aaaaaFolderPathaaaaa & "\Processed.xlsx"
    ActiveWorkbook.Close False
End Sub

コードのAlt+F8を押し、マクロ選択画面でDeleteColumnAndCreateFile関数を実行します。

このコードでは、指定したフォルダ内の全てのExcelファイルを開き、特定の列(ここでは”ok”列)を削除した後、新たにExcelファイルを作成しています。

`Dir`関数を使用してフォルダ内のファイルを順に取得し、`Workbooks.Open`メソッドでファイルを開いています。

列の削除には`Columns.Delete`メソッドを使用し、処理が完了したら`Workbooks.Add`メソッドで新しいファイルを作成して保存しています。

まとめ

この記事では。