
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エキスパート」をご確認ください。