【初心者向けエクセルVBA】ワークブックを別名で保存して閉じる方法

books

photo credit: Thomas Hawk William and the Books via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者向けエクセル VBAのシリーズとして、請求書を作成するマクロの作り方についてお伝えしています。

前回の記事はこちら。

【初心者向けエクセルVBA】開いたブックとそのワークシートをオブジェクト変数にセットする
初心者向けエクセルVBAのシリーズとして、請求書を作成するマクロの作り方をお伝えしています。今回は、エクセルVBAで開いたブックとそのワークシートを取得するには色々な方法がありますので、お伝えします。

この記事のテクニックを使って、開いたワークブックとそのシートをオブジェクト変数にセットして操作することができるようになりました。

あとは、いろいろ転記などの操作をして、別名で保存して閉じることができれば、請求書マクロも完成しそうです。

ということで、今回はいろいろの転記などの操作は後回しとして、エクセルVBAでブックを別名で保存して閉じる方法についてをお伝えします。

なお、こちらの記事は以下のYouTube動画と連動していますので、合わせてご覧いただければと思います。

では、行ってみましょう!

スポンサーリンク

前回のおさらい:取引先ごとのブックを作成する

前回までに作成したプログラムはこちらです。

Sub 取引先ごとのブックを作成()

Dim rowsClient As Long
rowsClient = wsClient.Cells(Rows.Count, 1).End(xlUp).Row '取引先マスタの最終行数

Dim n As Long
For n = 2 To rowsClient
    
    Dim client As String
    client = wsClient.Cells(n, 1).Value
    
    Dim wb As Workbook, ws As Worksheet
    Set wb = Workbooks.Open(ThisWorkbook.Path & "\請求書ひな形.xlsx")
    Set ws = wb.Worksheets(1)
    
    'ファイル名を生成
    Dim fileName As String
    fileName = ThisWorkbook.Path & "\" & _
        Format(Date, "yyyymm") & "請求書_" & client & ".xlsx"
        
    'ブックをfileNameと名前をつけて保存
    'ブックを閉じる
    
Next n
End Sub

ひとまず、請求書ひな形のブックを開き、 そのブックと一番目のワークシートをオブジェクト変数に格納するとこまで完成しています。

あと、コメントに記載しているように、ブックについて名前を付けて保存して閉じることができれば、取引先ごとのブックを作成するという目的は達成できるはずです。

SaveAsメソッドでブックを名前をつけて保存する

まず、ワークブックを名前を付けて保存する方法です。

WorkbookオブジェクトのSaveAsメソッドを使います。

Workbookオブジェクト.SaveAs ファイルのフルパス

保存するファイル名をフルパスで指定します。

今回の場合、親切にも変数fileNameにフルパスでのファイル名を既に生成していたので、これを使って以下のようにすればOKですね。

wb.SaveAs fileName

Closeメソッドでブックを閉じる

次に、ワークブックを閉じる方法ですが、Closeメソッドというその名の通りのメソッドがあります。

書き方はこちら。

Workbookオブジェクト.Close

シンプルに以下のようにすればOKですね。

wb.Close

取引先ごとのワークブックを作成するマクロ

では、これらを使って取引先ごとのブックを作るマクロを完成させましょう。

こちらです。

Sub 取引先ごとのブックを作成()

Dim rowsClient As Long
rowsClient = wsClient.Cells(Rows.Count, 1).End(xlUp).Row '取引先マスタの最終行数

Dim n As Long
For n = 2 To rowsClient
    
    Dim client As String
    client = wsClient.Cells(n, 1).Value
    
    Dim wb As Workbook, ws As Worksheet
    Set wb = Workbooks.Open(ThisWorkbook.Path & "\請求書ひな形.xlsx")
    Set ws = wb.Worksheets(1)
    
    'ファイル名を生成
    Dim fileName As String
    fileName = ThisWorkbook.Path & "\" & _
        Format(Date, "yyyymm") & "請求書_" & client & ".xlsx"
        
    wb.SaveAs fileName
    wb.Close
    
Next n
End Sub

実行すると、以下のようにフォルダ内に取引先ごとのワークブックを作成することができます。

エクセルVBAで別名保存したワークブック

まとめ

以上、エクセルVBAでワークブックを別名で保存して閉じる方法についてお伝えしました。

SaveAsメソッド、Closeメソッドともに簡単ですので、すぐに使えると思います。

では次回、いよいよ請求書マクロを完成させていきます。

【初心者向けエクセルVBA】取引先別に請求書を作成するマクロを作る
初心者向けのエクセルVBAのシリーズとして、請求書を作成するマクロの作り方をお伝えしています。これまで紹介してきたテクニックを元に、取引先ごとに別のブックで請求書を作成するマクロを完成させていきます。

どうぞお楽しみに!

連載目次:データ一覧から請求書を自動で作る

お仕事において特定のデータ一覧から必要な情報を抽出するということは頻繁にありうると思います。ここではデータ一覧から請求書を作るということを目標に、実務で使えるスキルをまっすぐに身に着けることを目的としています。
  1. 【初心者向けエクセルVBA】データ一覧から請求書を自動で作る
  2. 【初心者向けエクセルVBA】ワークシートをオブジェクト名で取り扱う方法
  3. 【初心者向けエクセルVBA】For~Next文で簡潔にプログラムを書く
  4. 【初心者向けエクセルVBA】行の数をカウントする&不要な行を隠す
  5. 【初心者向けエクセルVBA】文字列の連結&Format関数での書式変更
  6. 【初心者向けエクセルVBA】セル範囲を一気にまとめてコピーする方法
  7. 【初心者向けエクセルVBA】ワークシートのデータのある範囲だけをピッタリ取得する方法
  8. 【初心者向けエクセルVBA】セル範囲の平行移動をする方法・リサイズをする方法
  9. 【初心者向けエクセルVBA】日付データから年・月・日を取り出す
  10. 【初心者向けエクセルVBA】If~Thenを使った条件分岐の超入門
  11. 【初心者向けエクセルVBA】For~Next文でセル範囲を一行ずつ移動させる
  12. 【初心者向けエクセルVBA】セル範囲のクリア~ClearContentsメソッドとClearメソッド
  13. 【初心者向けエクセルVBA】ワークシート・セルを選択する方法の色々について
  14. 【初心者向けエクセルVBA】入力ダイアログを表示するInputBoxメソッドの使い方
  15. 【初心者向けエクセルVBA】日付データから月末日と翌月末日を自動算出する
  16. 【初心者向けエクセルVBA】ワークシートをコピーする方法とそのシート名を変更する方法
  17. 【初心者向けエクセルVBA】オブジェクトを変数にセットして取り扱う方法
  18. 【初心者向けエクセルVBA】Openメソッドで新たなブックを開く方法
  19. 【初心者向けエクセルVBA】現在マクロを書いているブックのフォルダパスを取得する
  20. 【初心者向けエクセルVBA】開いたブックとそのワークシートをオブジェクト変数にセットする
  21. 【初心者向けエクセルVBA】ワークブックを別名で保存して閉じる方法
  22. 【初心者向けエクセルVBA】取引先別に請求書を作成するマクロを作る
タイトルとURLをコピーしました