№03. Excel VBA-[新しいExcelブックを作成する。/Excelブックをアクティブ | GTZ&RSのブログ

GTZ&RSのブログ

GT-Z&RSでは、コンピュータ関連情報や地域情報を中心に発信しています。

№0003. Excel VBA-[新しいExcelブックを作成する。/Excelブックをアクティブにする。]
 Excelマクロでは、新しいExcelブックを作成したり、開いている複数のExcelブックの中から一つのExcelブックをアクティブにすることができます。


Addメソッド/Activateメソッド
 Addメソッドは、新しいExcelブックを作成し、追加された新しいExcelブックをアクティブにします。
 Activateメソッドは、開いている複数のExcelブックの中から指定した一つのExcelブックをアクティブにします。
 今回は、Sample_NewBook()プロシージャに、次の処理を実装した例を掲載します。
 ※Sample_NewBook()プロシージャは、任意の名前です。
 なお、ワークシート上のフォーム・ボタンをクリックした時に、Sample_NewBook()プロシージャを起動することとします。
 また、Sample_NewBook()プロシージャは、標準モジュールのModule1モジュール内に記述します。

  • Addメソッドにより、新しいExcelブックを作成する。ただし、追加作成されるExcelブックの名前はディフォルトとする。
  • 追加作成されるExcelブックをアクティブにする。
  • 元のExcelブックを、アクティブにするかを確認する。。
  • 元のExcelブックをアクティブにするを選択した場合、元のExcelブックをアクティブにする。
  • #Ifディレクティブを使用して、デバッグモードと本番モードで動作を変更する。

《ソースコード》
  Option Explicit

  #Const DEBUG_VERSION = 1                                              ' 本番環境の場合は = 1

  Public Sub Sample_NewBook()
    ' 新しいブックの作成

    Dim objWorkBook As Object                                           ' Excelブックオブジェクトを格納するオブジェクト型変数
    Dim lngReturnCode As Long

    Set objWorkBook = Workbooks.Add                                     ' 新しいExcelブックを作成する。

    #If DEBUG_VERSION Then
    ' VBAの動作確認
    MsgBox "「" & objWorkBook.Name & "」を作成し、このExcelブックをアクティブにしました。", vbInformation + vbOKOnly, "Excel VBA No.0003"
    #End If

    Workbooks(objWorkBook.Name).Activate                                ' 新しく作成したExcelブックをアクティブにする。

    lngReturnCode = MsgBox("「" & ThisWorkbook.Name & "」をアクティブにしますか?", vbInformation + vbYesNo, "Excel VBA No.0003")

    If lngReturnCode = vbYes Then
      ' "Yes"ボタンがクリックされた場合
      Workbooks(ThisWorkbook.Name).Activate                           ' このExcelブックをアクティブにする。
    End If

    Set objWorkBook = Nothing
    
  End Sub

update:2008.06.20

Copyright (C) 2008 S.IKE