対象:Excel2010, Excel2013, Windows版Excel2016
「vba シートコピーで作ったbook名を取得」
という検索キーワードに気付きました。
WorksheetオブジェクトのCopyメソッドに、
[スポンサードリンク]
この新規に作成されたブックの名前を取得したいということでしょう。
ActiveWorkbookプロパティでWorksheet.Copyで作成されたブック名を取得するサンプル
シートを新規ブックにコピーすると、新規ブックがアクティブになるのがExcelの仕様ですから、以下のようなSubプロシージャで、結果的にWorksheet.Copyで作成された新規ブックの名前を取得できます。
Sub シートコピーで作成したブック名を取得_ActiveWorkbook()
ActiveSheet.Copy
MsgBox ActiveWorkbook.Name
End Sub
ActiveSheet.Copy
MsgBox ActiveWorkbook.Name
End Sub
ActiveWorkbookプロパティを使わないサンプルマクロ
何らかの理由で、新規ブックがアクティブにならない可能性を懸念するのなら、以下のようなSubプロシージャはいかがでしょう。
Sub シートコピーで作成したブック名を取得_Workbooks()
ActiveSheet.Copy
MsgBox Workbooks(Workbooks.Count).Name
End Sub
ActiveSheet.Copy
MsgBox Workbooks(Workbooks.Count).Name
End Sub
シートコピーで作成された新規ブックは、最後に作られたブックですから、WorkbooksコレクションオブジェクトのCountプロパティで、ブックの数を取得して、
MsgBox Workbooks(Workbooks.Count).Name
Workbooksコレクションオブジェクトのデフォルトプロパティにブック数を指定することで、最後に作られたブックを表すWorkbookオブジェクトを取得しています。
MsgBox Workbooks(Workbooks.Count).Name
もしもWorksheet.CopyがWorksheetを返すメソッドなら
ちなみに、Worksheet.Copyメソッドがコピーで新しく作られたワークシートを表すWorksheetオブジェクトを返す作りに、もしも、なっていたならば、Parentプロパティを使ってWorkbookオブジェクトを取得するコードにしただろうと考えています。
[スポンサードリンク]
- Newer:Excel VBAのUsedRangeとは
- Older:BorderAroundで引いた外枠罫線だけを消す
Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » Worksheet.Copyで新規に作成されたブック名の取得