教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA ブック操作】ブックをアクティブ(Activate)にするにはどうすればいいの?教えて!

構文

構文は以下の通りです。

Workbooks("ワークブック名").Activate

解説

Activateメソッドを使用して指定したワークブックをアクティブにします。引用符で囲まれた「ワークブック名」には、アクティブにする対象のワークブックの名前を指定します。たとえば、「Book1.xlsx」という名前のワークブックをアクティブにする場合は、次のように書きます。

Workbooks("Book1.xlsx").Activate

WorkbooksオブジェクトはExcelのワークブックのコレクションを表し、ワークブックを管理するためのさまざまな機能を提供します。Activateメソッドは、その中の特定のワークブックをアクティブにするためのものです。

使い方

WorkbooksのActivateの使い方を具体的な例で説明します。まず、以下のようなワークブックがあるとします。

ワークブック1:Sales.xlsx
ワークブック2:Expenses.xlsx
ワークブック3:Profit.xlsx

ワークブック2(Expenses.xlsx)をアクティブにするには、次のようなコードを書きます。

Workbooks("Expenses.xlsx").Activate

これにより、ワークブック2がアクティブになります。以降、ワークブック2に対してさまざまな操作が可能になります。

プログラミング例

例として、以下のようなワークブックがあるとします。

ワークブック1:Data.xlsx
ワークブック2:Chart.xlsx

ワークブック1(Data.xlsx)にデータが入っており、ワークブック2(Chart.xlsx)にはグラフを作成したいとします。以下のコードを使って、データをコピーしてからグラフを作成します。

Sub CreateChart()
    Dim chartObject As ChartObject
    Workbooks("Data.xlsx").Activate
    Sheets("Sheet1").Range("A1:B10").Copy
    Workbooks("Chart.xlsx").Activate
    Sheets("Sheet1").Range("A1").PasteSpecial
    Set chartObject = Sheets("Sheet1").ChartObjects.Add(Left:=100, Top:=100, Width:=400, Height:=300)
    Set chart = chartObject.Chart
    chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B10")
End Sub

この例では、まず「Data.xlsx」をアクティブにし、その後、指定の範囲(A1:B10)をコピーします。次に、「Chart.xlsx」をアクティブにし、コピーしたデータを貼り付けます。最後に、ChartObjectを作成し、指定の範囲のデータを元にグラフを作成します。

まとめ

WorkbooksのActivateは、操作対象となるワークブックを明示的に指定することができます。複数のワークブックを扱う場合や特定のワークブックをアクティブにする必要がある場合に便利な機能です。是非活用してみてください。