「マクロ 名前の無いエクセルをアクティブ」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Excel VBA(Visual Basic for Applications)で、まだ保存されていないブックをアクティブにするにはどのようなコードを書けばいいのか探している方による検索でしょうか。
保存されていないブックをアクティブにするサンプルマクロ
以下のようなマクロを作ってみました。
Dim bk As Workbook
For Each bk In Workbooks
If InStr(bk.Name, ".") = 0 Then
bk.Activate
Exit For
End If
Next bk
複数のブックが開かれている状態で上記のマクロを実行すると、名前のついていない、まだ保存されていないブックがアクティブになります。
サンプルマクロの解説
開いている全ブックに対してFor Each~Nextループを回して、
For Each bk In Workbooks
ブック名に「.」が含まれているかどうかをInStr関数で調べて、含まれていなかったときに、そのブックをアクティブにしています。
If InStr(bk.Name, ".") = 0 Then
bk.Activate
WorkbookオブジェクトのNameプロパティは、ブックの名前を返します。
このとき、保存されていない、名前のつけられていないブックは、「Book1」のように拡張子のついていない仮のブック名が返され、名前のつけられているブックは「Book1.xlsx」のように拡張子のついた名前が返されます。
この拡張子がついているかどうかを、「.」がブック名に含まれているかどうかで調べています。このために、指定した文字列を探して見つかった位置を返す、InStr関数を使っています。
Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » 未保存のブックをアクティブにするExcelマクロ