開いたExcelファイルは1秒後に閉じます。繰り返し処理の間、止めることもできないのでDoEventsでを入れてます。
ディスクトップにExcelファイルを作ってVBEを開いて標準モジュールに貼り付け実行するとディスクトップ以下のxlsx拡張子のファイルを全部開き閉じます。
Sub OpenAndCloseAllXLSXFiles()
Dim fso As Object
Dim folderPath As String
Dim folder As Object
Dim file As Object
' フォルダのパスを指定します
folderPath = Excel.ThisWorkbook.Path
' FileSystemObjectを作成
Set fso = CreateObject("Scripting.FileSystemObject")
' フォルダが存在するか確認
If Not fso.FolderExists(folderPath) Then
MsgBox "指定されたフォルダが存在しません。", vbExclamation
Exit Sub
End If
' フォルダ内のすべてのファイルとサブフォルダを処理
ProcessFolder fso.GetFolder(folderPath)
MsgBox "全てのファイルが処理されました。", vbInformation
End Sub
Sub ProcessFolder(folder As Object)
Dim file As Object
Dim subFolder As Object
Dim wb As Workbook
' フォルダ内のすべてのファイルを処理
For Each file In folder.Files
VBA.DoEvents 'マウス操作可能にするの途中で止めれる。、処理中に変な操作厳禁
If Excel.ThisWorkbook.Path & "\" & Excel.ThisWorkbook.Name <> folder & "\" & file.Name Then '自分自身ファイルは開かない
If Right(file.Name, 5) = ".xlsx" Then
' xlsxファイルを開く
On Error Resume Next ' エラーを無視する
Debug.Print file.Path 'イミディエイトウィンドウへ出力。ディバッグ用
Set wb = Workbooks.Open(file.Path)
If Not wb Is Nothing Then
Application.Wait Now + TimeValue("0:0:1")'1秒待つ
' ファイルを閉じる
wb.Close False
Set wb = Nothing
End If
On Error GoTo 0 ' エラーハンドリングをリセット
End If
End If
Next file
' サブフォルダを再帰的に処理
For Each subFolder In folder.SubFolders
ProcessFolder subFolder
Next subFolder
End Sub