PCメモ

Excelを中心とした業務改善の記録

複数ブックを編集

内容

 ブックA.Sheet1のA列に入力してあるブック名を開き、B列で指定しているシートに対して処理を行う。

f:id:abv72:20210808151503p:plain

A列に入力してある各ブックは、ブックAと同じ階層に保存してある。

f:id:abv72:20210808151628p:plain

コード

Sub wrk()

 

 Dim wb As String 
 Dim ws As String
 Dim openBook As Workbook
 Dim i As Long
 Dim LastRow As Long

 '一番左のシートの1列目の最終行番号
 LastRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row

 For i = 2 To LastRow

  '開きたいブック名
  wb = ThisWorkbook.Sheets(1).Cells(i, 1)

  '開きたいシート名
  ws = ThisWorkbook.Sheets(1).Cells(i, 2)

  '開いたブックを格納
  Set openBook = Workbooks.Open(ThisWorkbook.Path & "¥" & wb)

  

  '開いたブックopenBookに対しての処理

  '=======================
  'シートを選択
  openBook.Sheets(ws).Select

  '=======================

 

  '保存して閉じる
  openBook.Close savechanges:=True

 Next i

 MsgBox "完了"

 

End Sub

 解説

A列の最終行を取得し、For~Nextで全データに対して処理を行っていく。

f:id:abv72:20210808152613p:plain

最終行について

'一番左のシートの1列目の最終行番号
LastRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row

データが入力されているシートや列を指定する場合は、赤字の部分を書き換えてください。

(例)データという名前のシートの2行目のデータを使用する場合
LastRow = Sheets("データ").Cells(Rows.Count, 2).End(xlUp).Row

 

参照するデータについて

'開きたいブック名
wb = ThisWorkbook.Sheets(1).Cells(i, 1)
'開きたいシート名
ws = ThisWorkbook.Sheets(1).Cells(i, 2)

こちらも最終行取得と同様に、赤字部分を書き換えてください。