
Excel VBAで「新しいブックを作成」するには?
作成したブックに自動で名前をつけて保存できる?
作成後のブックにデータを書き込む方法は?
結論:Workbooks.Add
を使えば、新しいブックが1行で作成できます
VBAで新しいブックを作る処理はとてもシンプルです。
まずは以下の1行が基本形です。
Workbooks.Add
これで新しい空のブックが作成され、フォーカスがそちらに移動します。
ただし「どこに保存するか」「どう名前をつけるか」「どのタイミングで保存するか」などは別途処理が必要です。
目次
新しいブックを作成する基本コード
新しいブックを1つ作るだけなら、この1行でOKです。
Workbooks.Add
ただしこのままだと後からそのブックにアクセスできないので、変数に格納しておくのが実務では一般的です。
作成したブックを変数に格納して操作する
Sub 新しいブックを作成する() Dim 新ブック As Workbook Set 新ブック = Workbooks.Add MsgBox "新しいブックを作成しました!" End Sub
このように、Set
を使って変数 新ブック
に代入しておけば、
あとで「保存」や「閉じる」などの操作が簡単にできます。
ブックにデータを書き込んで保存する
Sub 新しいブックにデータを書き込む() Dim 新ブック As Workbook Set 新ブック = Workbooks.Add ' 最初のシートにデータを入力 新ブック.Sheets(1).Range("A1").Value = "これは自動で書かれたデータです" ' 名前をつけて保存 新ブック.SaveAs Filename:="C:\Users\あなたの名前\Desktop\自動作成ブック.xlsx" MsgBox "保存完了しました!" End Sub
📌 ポイント
- ファイルパスは環境に合わせて変更してください
SaveAs
で保存後も、ブックは開いたままです
上書き保存と名前をつけて保存(Save / SaveAs)
- Save:すでに保存されているファイルを「上書き保存」
- SaveAs:初めて保存するときや、別名保存したいとき
保存先やファイル名を柔軟に設定したいときは、Application.GetSaveAsFilename
を使うのもおすすめです。
応用例:既存ブックの内容を新しいブックにコピー
Sub 既存ブックの内容をコピーして新しいブックに貼り付ける() Dim 新ブック As Workbook Set 新ブック = Workbooks.Add ' アクティブなブックのシート1のA1:B10をコピー ThisWorkbook.Sheets(1).Range("A1:B10").Copy ' 新しいブックのシート1に貼り付け 新ブック.Sheets(1).Range("A1").PasteSpecial xlPasteValues Application.CutCopyMode = False MsgBox "データを新しいブックにコピーしました!" End Sub
よくあるエラーと対処法
エラー内容 | 原因 | 対処法 |
---|---|---|
パスが見つかりません | 保存先のパスが存在しない | デスクトップやマイドキュメントなど、確実に存在するパスを使う |
オブジェクト変数が設定されていません | Set の付け忘れ | Set 新ブック = Workbooks.Add など必ずSetを使用 |
書き込みができない | ファイルが開きっぱなし or 読み取り専用 | 保存前に閉じているか、上書き可能か確認する |
まとめ:作成→操作→保存が基本の流れ
Excel VBAで「新しいブックを作成する」処理は、業務自動化の基本です。
以下の流れを覚えておけば、どんな業務にも応用できます。
Workbooks.Add
で新規作成Set
で変数に代入し、扱いやすくするRange.Value
やCopy
で中身を操作SaveAs
やClose
で保存・終了
コメント