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

 

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

 

2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事

 

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

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

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

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

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

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

 

Excel VBA サンプルコード

Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事

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

標準モジュール

Option Explicit

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

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

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

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

標準モジュール

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"` のセルに直接アクセス可能

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

標準モジュール

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 で 新しいブックを作成

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

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

標準モジュール

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 にすると 変更を保存して閉じる

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

標準モジュール

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で自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。