【ExcelVBA】他のブックを操作

2019年9月16日

他のブックを開いて、そのブックにあるシートをすべて操作するマクロ

以下の手順で作成

  1. ダイアログボックスを表示してファイルを選択
  2. 選択したファイルのシートを左からすべて処理
  3. マクロが書いてあるファイルのシート「Sheet1」に開いたブックのシートの名前を保存
  4. 選択して開いたファイルは保存せずに終了

順番に説明

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