
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ベーシック選択問題集をご用意しました。
指定したワークブックを操作
標準モジュール
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ベーシック選択問題集をご用意しました。
アクティブなワークブックを操作
標準モジュール
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ベーシック選択問題集をご用意しました。
ブックを名前を付けて保存
標準モジュール
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ベーシック選択問題集をご用意しました。
開いているすべてのブックを閉じる
標準モジュール
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で自動化するコードのベースが習得できる解説書」
Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。