Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » Worksheet.Copyで新規に作成されたブック名の取得

Worksheet.Copyで新規に作成されたブック名の取得

対象:Excel2010, Excel2013, Windows版Excel2016

「vba シートコピーで作ったbook名を取得」
という検索キーワードに気付きました。

WorksheetオブジェクトのCopyメソッドに、

Worksheet.Copyメソッド

引数を指定しない場合、新規にブックが作成され、作成された新規ブックにシートがコピーされます。

[スポンサードリンク]

この新規に作成されたブックの名前を取得したいということでしょう。

ActiveWorkbookプロパティでWorksheet.Copyで作成されたブック名を取得するサンプル

シートを新規ブックにコピーすると、新規ブックがアクティブになるのがExcelの仕様ですから、以下のようなSubプロシージャで、結果的にWorksheet.Copyで作成された新規ブックの名前を取得できます。
Sub シートコピーで作成したブック名を取得_ActiveWorkbook()
 ActiveSheet.Copy
 MsgBox ActiveWorkbook.Name
End Sub

ActiveWorkbookプロパティを使わないサンプルマクロ

何らかの理由で、新規ブックがアクティブにならない可能性を懸念するのなら、以下のようなSubプロシージャはいかがでしょう。
Sub シートコピーで作成したブック名を取得_Workbooks()
 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オブジェクトを取得するコードにしただろうと考えています。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » Worksheet.Copyで新規に作成されたブック名の取得

「Workbooks・Workbook」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.