【ExcelVBA】他のブックを操作
他のブックを開いて、そのブックにあるシートをすべて操作するマクロ
以下の手順で作成
- ダイアログボックスを表示してファイルを選択
- 選択したファイルのシートを左からすべて処理
- マクロが書いてあるファイルのシート「Sheet1」に開いたブックのシートの名前を保存
- 選択して開いたファイルは保存せずに終了
順番に説明
1.ダイアログボックスを表示してファイルを選択
Application.GetOpenFilename
これで簡単にダイアログボックスが表示する
Excelのファイル以外にもいろいろ指定できる
csvファイルの場合
Application.GetOpenFilename("CSVファイル(*.csv),*.csv")
ファイルの種類を複数設定する場合は、カンマで区切って指定
例)CSVファイルとテキストファイルを指定
Application.GetOpenFilename("CSV ファイル (*.csv),*.csv,テキストファイル (*.txt),*.txt")
ソースコード例
Sub test()
Dim TargetBook As Workbook, i As Long, j As Long
Dim FileName As String
' ファイルを開くダイアログボックスを表示
FileName = Application.GetOpenFilename("Excel ブック,*.xls?")
If FileName = "False" Then Exit Sub
Set TargetBook = Workbooks.Open(FileName)
ThisWorkbook.Activate
' 開いたブックのシート数分繰り返す
For i = 1 To TargetBook.Worksheets.Count
'A列のセルに何枚目のシートかを書き込む
Worksheets("Sheet1").Range("A" & i) = "これは" & i & "枚目のシートです。シート名:" & TargetBook.Worksheets(i).Name
Next
' 開いたファイルを保存せずに終了
TargetBook.Close SaveChanges:=False
Set TargetBook = Nothing
End Sub