◆ブックとシートの操作
Excelの VBA でマクロを作成する場合、必ず(?)複数のブック・シート間で、セルの値
を移動・転記するコードがあると思います。
セルの値の移動・転記の一般的な記述は、
@ Workbooks("Book1").Sheets("Sheet1").Range("A1") = _
Workbooks("Book2").Sheets("Sheet2").Range("A1")
こうなります。
"Book1" の "Sheet1" がアクティブになっていれば、
A Range("A1")=Workbooks("Book2").Sheets("Sheet2").Range("A1")
こう記述できます。
"Book2" の "Sheet2" がアクティブになっていれば
B Workbooks("Book1").Sheets("Sheet1").Range("A1")=Range("A1")
と記述できます。
"Book1" と "Book2" 以外がアクティブな場合は、@を記述をする必要があります。
Excel の VBA でマクロを作成する場合には、常にどのブック・シートがアクティブに
なっているかを意識してコードを記述する必要があります。
これに関連するブックとシートの操作・取り扱いについて説明します
□自分のブック/シートの名前の取得方法
ThisWorkbook_Name = ThisWorkbook.Name
ThisSheet_Name = Workbooks(ThisWorkbook_Name).ActiveSheet.Name
□目的のブック・シートをアクティブにする
Windows(ThisWorkbook_Name).Activate
Sheets(ThisSheet_Name).Select
□シートがあるかどうかチェックして、無い場合は「原紙」シートをコピーして
シートの名前を変更する
If ExistSheet(Item) Then
Sheets(Item).Select
Range("A1").Select
Selection.CurrentRegion.ClearContents
Else
Sheets("原紙").Copy after:=ActiveWorkbook.Sheets(ActiveSheet.Name)
Sheets(ActiveSheet.Name).Name = Item
End If
Function ExistSheet(SheetName) As Boolean
Dim i, cnt As Integer
cnt = Sheets.Count
ExistSheet = False
For i = 1 To cnt
If Sheets(i).Name = SheetName Then
ExistSheet = True
Exit For
End If
Next
End Function
Function ExistSheet については、シート・ブックが存在するかチェックする
も参考にしてください。
□シートの数を数える
cnt = Sheets.Count
□シートの数だけループする
For i = 1 To Sheets.Count
Next
□n番目のシートをアクティブにする
Sheets(n).Activate
□n番目のシートの名前を取得する
Dim Sheet_Name As String
Sheet_Name = Sheets(n).Name
これらは、example1 や example8 で使用されています。
ダウンロードして確認してください。