VBAで新規Bookの作成方法

投稿日: 2024年6月17日

VBAで新しいブックを作成するには、Workbooks.Addメソッドを使用します。

新規Bookの作成

基本的な実行方法
Sub CreateNewWorkbook()
    Dim newBook As Workbook
    ' 新しいブックを作成
    Set newBook = Workbooks.Add
    ' 新しいブックを保存する場合
    newBook.SaveAs Filename:="C:\path\to\your\folder\NewWorkbook.xlsx"
End Sub

パスは自分の保存したい場所に変更してください。
フォルダ先がないとエラーになります。

新しいブックを作成し、保存先のフォルダが無ければ作成

保存する先のフォルダが存在しない場合に、フォルダを作成してからブックを保存する方法です。コードのパス「YourUsername」にはご自身のパスに変更してください。

Sub CreateNewWorkbook()
    Dim newWorkbook As Workbook
    Dim folderPath As String
    Dim fileName As String
    Dim fso As Object

    ' 保存先のフォルダとファイル名を指定
    folderPath = "C:\Users\YourUsername\Documents\MyNewFolder\"
    fileName = "NewWorkbook.xlsx"

    ' ファイルシステムオブジェクトを作成
    Set fso = CreateObject("Scripting.FileSystemObject")

    ' フォルダが存在しない場合は作成
    If Not fso.FolderExists(folderPath) Then
        fso.CreateFolder folderPath
    End If

    ' 新しいブックを作成
    Set newWorkbook = Workbooks.Add

    ' 新しいブックにシートを追加する例
    newWorkbook.Sheets.Add

    ' 作成されたブックに名前を付けて保存
    newWorkbook.SaveAs Filename:=folderPath & fileName

    ' オブジェクトの解放
    Set newWorkbook = Nothing
    Set fso = Nothing
End Sub

「Dim fso As Object」は、ファイルシステムオブジェクト(FSO)を宣言します。
「folderPath = “C:\Users\YourUsername\Documents\MyNewFolder\”」は 保存先のフォルダのパスを指定します。必要に応じて変更してください。
「Set fso = CreateObject(“Scripting.FileSystemObject”)」 ファイルシステムオブジェクト(FSO)を作成します。

ファイルシステムオブジェクト(FSO)とは

ファイルシステムオブジェクト(FileSystemObject、FSO)は、Microsoftのスクリプトランタイムライブラリに含まれるオブジェクトで、ファイルシステム(ファイルおよびフォルダ)を操作するための一連のメソッドとプロパティを提供します。FSOは、VBAでファイルやフォルダを作成、削除、コピー、移動、検査するために使用されます。

上書き保存する方法

同じファイル名が存在する場合、上書き保存でコードを進めたい場合があります。下記はファイルが存在する場合、上書き保存するコードです。

Sub SaveWorkbookOverwrite()
    Dim newWorkbook As Workbook
    Dim folderPath As String
    Dim filePath As String
    Dim fso As Object

    ' 保存先のフォルダとファイルのパスを指定
    folderPath = "C:\Users\YourUsername\Documents\MyNewFolder\"
    filePath = folderPath & "NewWorkbook.xlsx"
    
    ' FSOを作成
    Set fso = CreateObject("Scripting.FileSystemObject")

    ' フォルダが存在しない場合は作成
    If Not fso.FolderExists(folderPath) Then
        fso.CreateFolder folderPath
    End If

    ' 新しいブックを作成
    Set newWorkbook = Workbooks.Add

    ' 新しいブックにシートを追加する例
    newWorkbook.Sheets.Add

    ' 作成されたブックを上書き保存
    newWorkbook.SaveAs Filename:=filePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

    ' オブジェクトの解放
    Set newWorkbook = Nothing
    Set fso = Nothing

    MsgBox "ファイルを保存しました(上書き保存)。"
End Sub

「Dim fso As Object」は、ファイルシステムオブジェクト(FSO)を宣言します。
「Set fso = CreateObject(“Scripting.FileSystemObject”)」は FSOを作成します。「newWorkbook.SaveAs Filename:=filePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False」は 新しいブックを指定されたパスに保存します。

これで、同じファイル名が存在する場合に上書き保存することができます。

新しいブックを作成し、セルにデータを書き込み、保存して閉じる

新しいブックを作成し、セルにデータを書き込み、保存して閉じるこういった方法もVBAでは可能です。ここまで出来るとボタン一つで自動処理制御が可能になったりします。
以下はコードになりますがコードのパス「YourUsername」にはご自身のパスに変更してください。

Sub CreateNewWorkbookAndSave()
    Dim newWorkbook As Workbook
    Dim newWorksheet As Worksheet
    Dim folderPath As String
    Dim filePath As String
    Dim fso As Object

    ' 保存先のフォルダとファイル名を指定
    folderPath = "C:\Users\YourUsername\Documents\MyNewFolder\"
    filePath = folderPath & "NewWorkbook.xlsx"
    
    ' FSOを作成
    Set fso = CreateObject("Scripting.FileSystemObject")

    ' フォルダが存在しない場合は作成
    If Not fso.FolderExists(folderPath) Then
        fso.CreateFolder folderPath
    End If

    ' 新しいブックを作成
    Set newWorkbook = Workbooks.Add
    Set newWorksheet = newWorkbook.Sheets(1)
    
    ' セルにデータを書き込む
    newWorksheet.Range("A1").Value = "Hello, World!"
    newWorksheet.Range("A2").Value = "This is a test."
    newWorksheet.Range("A3").Value = Date

    ' 作成されたブックを保存
    newWorkbook.SaveAs Filename:=filePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

    ' ブックを閉じる(変更を保存して閉じる)
    newWorkbook.Close SaveChanges:=True

    ' オブジェクトの解放
    Set newWorkbook = Nothing
    Set fso = Nothing

    MsgBox "新しいブックが作成され、保存され、閉じられました。"
End Sub

「Set newWorksheet = newWorkbook.Sheets(1)」は 新しいブックの最初のシートを取得します。
「newWorksheet.Range(“A1”).Value = “Hello, World!”」はセルにデータを書き込みます。
「newWorkbook.Close SaveChanges:=True」は変更を保存してブックを閉じます。「Set newWorkbook = Nothing, Set fso = Nothing」はオブジェクトを解放します。

これで、新しいブックを作成し、セルにデータを書き込み、保存して閉じることが可能となりました。

記事