ExcelのVBAで、選択した複数ファイルを処理するサンプルです。
Application.FileDialog(msoFileDialogFilePicker)を利用する方法で、OneDriveと同期したフォルダでも利用可能でした。
内容:
動作確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2501)です。
Excelファイルが対象の場合の事例
VBAのサンプルは次のとおりです。
ファイル選択画面を表示し、選択したExcelファイルを一つずつ開く、メッセージの表示、閉じるを繰り返すだけです。
他の用途で活用時には「メッセージの表示」を必要な処理内容に修正します。
Option Explicit
Sub 選択した複数ファイルを処理する()
Dim 対象ファイル As Object
Dim ファイルパス As Variant
' 対象ファイルの選択(複数)'
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Title = "対象ファイルを選択してください"
.InitialFileName = ThisWorkbook.Path & "\"
.Filters.Add "Excel Files", "*.xlsx", 1
If .Show <> -1 Then Exit Sub
' 選択した各ファイルの処理'
For Each ファイルパス In .SelectedItems
' ファイルを開く'
Set 対象ファイル = Workbooks.Open(ファイルパス)
' メッセージの表示'
MsgBox 対象ファイル.Name & " を起動しました"
' ファイルを閉じる(保存なし)'
対象ファイル.Close SaveChanges:=False
Next
End With
End Sub
補足説明
- 上記コードで、対象ファイルの選択部分にある
AllowMultiSelect = True
で複数ファイル選択を許可しています。Falseの場合は単一選択です。
Wordファイルが対象の場合の事例
【Excel VBA】指定フォルダ内のWord文書を置換リストで一括置換するサンプルでの事例をもとに、「複数選択したWord文書を置換リストで一括置換」した具体例です。
Option Explicit
Dim 置換リスト As Variant
Dim wrdApp As Object
Dim wrdDoc As Object
Sub 複数選択したWord文書を置換リストで一括置換()
Dim 最終行 As Long
Dim ファイルパス As String
'置換リスト (文章)を2次元配列に変換’
With ThisWorkbook.Sheets("置換リスト (文章)")
最終行 = .Cells(Rows.Count, 1).End(xlUp).Row
置換リスト = .Range(.Cells(1, 1), .Cells(最終行, 2)).Value
End With
' 対象ファイルの選択(複数)'
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Title = "置換対象ファイルを選択してください"
.InitialFileName = ThisWorkbook.Path & "\"
.Filters.Add "Word Files", "*.docx", 1
If .Show <> -1 Then Exit Sub
' 選択した各ファイルの処理'
For Each ファイルパス In .SelectedItems
Call 都度確認しながら置換リストでWord文書の文字列を置換(CStr(ファイルパス))
Next
End With
End Sub
上記コードで呼び出ししている「都度確認しながら置換リストでWord文書の文字列を置換」の部分は事例の元になっている以下と同じです。
OneDriveやSharePointにあるファイル操作時の注意点
VBAで、OneDriveやSharePointのファイルを開く、保存をする場合は、少し注意が必要です。詳細は次のとおりです。
以上、Excel VBAを利用し、選択した複数ファイルを処理するサンプルでした。