ExcelVBA 特定ワークブックを操作するためにワークブックを指定する方法

 

ExcelVBA  特定のワークブックを操作するために、ワークブックを指定します。 これにより、複数のブックを扱う際に、意図しないブックへの操作ミスを防ぐことができます。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA 特定ワークブックを操作する|シーン

以下のシーンで利用します。

1.複数のブックを開いて処理する

2.別のブックからデータを取得・保存する

3.特定のブックを閉じる・保存する

4.新規ブックを作成し、データを保存する

 

Excel VBA サンプルコード

アクティブなワークブックを操作

標準モジュール

Option Explicit

Sub アクティブブックを操作()
    Dim wb As Workbook
    Set wb = ActiveWorkbook ' 現在アクティブなブックを取得
    
    ' アクティブブックの名前を表示
    MsgBox "現在のブック名: " & wb.Name
End Sub

・ ActiveWorkbook は 現在操作中(アクティブな)ブックを取得

・ 他のブックをアクティブにすると、対象が変わるので注意

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

指定したワークブックを操作

標準モジュール

Option Explicit

Sub 指定したブックを操作()
    Dim wb As Workbook
    Set wb = Workbooks("データ.xlsx") ' "データ.xlsx" を取得
    
    ' B2セルに値を入力
    wb.Sheets(1).Range("B2").Value = "Hello, VBA!"
End Sub

・ データ.xlsx" が開かれていないとエラーになる

・ 開いているブックに対して 確実に操作したい場合に便利

指定したワークブックを開く

標準モジュール

Option Explicit

Sub ブックを開く()
    Dim wb As Workbook
    Set wb = Workbooks.Open("C:\Users\User\Desktop\データ.xlsx") ' フルパス指定
    
    ' 開いたブックのA1セルに値を入力
    wb.Sheets(1).Range("A1").Value = "データ読み込み完了"
End Sub

・ 複数のシートを指定 することで、可読性が向上

・ ws1.Range("A1").Value で `"Sheet1"` のセルに直接アクセス可能

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

アクティブなワークブックを操作

標準モジュール

Option Explicit

Sub すべてのシートにタイトルを入力()
    Dim ws As Worksheet
    
    ' ワークブック内の全シートをループ
    For Each ws In ThisWorkbook.Sheets
        ws.Range("A1").Value = ws.Name & " のデータ"
    Next ws
End Sub

・ Workbooks.Open(ファイルパス)  で ブックを開く

・ フルパスを指定しないと、カレントフォルダ(開いているExcelのフォルダ)を探す

新規ワークブックを作成

標準モジュール

Option Explicit

Sub 新規ブックを作成()
    Dim wb As Workbook
    Set wb = Workbooks.Add ' 新しいワークブックを作成
    
    ' A1セルに値を入力
    wb.Sheets(1).Range("A1").Value = "新規作成"
End Sub

・ Workbooks.Add で 新しいブックを作成

・ 保存しないと閉じたときにデータが失われる

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

ブックを名前を付けて保存

標準モジュール

Option Explicit

Sub 名前を付けて保存()
    Dim wb As Workbook
    Set wb = ActiveWorkbook ' 現在のブックを取得
    
    ' 指定したパスに保存
    wb.SaveAs "C:\Users\User\Desktop\保存ブック.xlsx"
    
    MsgBox "保存完了!"
End Sub

・ SaveAs を使うと、新しい名前で保存できる

・ 既存のブックと同じ名前だと 上書き確認メッセージが表示される

指定したブックを閉じる

標準モジュール

Option Explicit

Sub ブックを閉じる()
    Dim wb As Workbook
    Set wb = Workbooks("データ.xlsx") ' "データ.xlsx" を取得
    
    ' 保存せずに閉じる
    wb.Close SaveChanges:=False
End Sub

・ SaveChanges:=False で 変更を保存せずに閉じる

・ SaveChanges:=True にすると 変更を保存して閉じる

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

開いているすべてのブックを閉じる

標準モジュール

Option Explicit

Sub すべてのブックを閉じる()
    Dim wb As Workbook
    
    ' 開いているすべてのブックをループ処理
    For Each wb In Workbooks
        wb.Close SaveChanges:=False ' 保存せずに閉じる
    Next wb
End Sub

・ For Each wb In Workbooks で すべての開いているブックを閉じる

・ SaveChanges:=False で 変更を保存せずに閉じる

 

 

1. ブックが開いていないとエラーが出る

Set wb = Workbooks("データ.xlsx")
→ `"データ.xlsx"` が開いていないと エラーになる
→ On Error Resume Next を使ってエラーハンドリングすると安心
On Error Resume Next
Set wb = Workbooks("データ.xlsx")
On Error GoTo 0

2. パスの指定ミス
Workbooks.Open("C:\間違ったフォルダ\データ.xlsx")
→ パスが間違っていると エラーになる

3. アクティブブックの誤認識
・ ActiveWorkbook は アクティブなブックが変わると意図しない処理になる ので、注意が必要。

 

Excel VBA 特定ワークブックを操作する|まとめ

方法 コード例 特徴
アクティブなブック Set wb = ActiveWorkbook 現在アクティブなブックを操作
特定のブックを指定 Set wb = Workbooks("データ.xlsx") 開いているブックを確実に指定
ブックを開く Set wb = Workbooks.Open("C:\ファイル.xlsx") ファイルを開いて操作
新しいブックを作成 Set wb = Workbooks.Add 空のブックを作成
ブックを保存 wb.SaveAs "C:\ファイル.xlsx" 新しい名前で保存
ブックを閉じる wb.Close SaveChanges:=False ブックを閉じる(保存せず)
すべてのブックを閉じる For Each wb In Workbooks: wb.Close SaveChanges:=False: Next wb 開いている全ブックを閉じる

ワークブックを指定することで、ミスを防ぎ、コードの可読性を向上 できます。

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問