【エクセルVBA】シートを別のブックとして保存

※本サイトはアフィリエイト広告を利用しています。

VBAを作ってダウンロードしてきたCSVファイルを成形して、必要なデータの一覧表を作成する。こんな作業にVBAを使っている方いらっしゃるのではないでしょうか。
例えば売上データのCSVをダウンロードして、今月分の売上高や商品別の出荷個数などの一覧表とかですね。
作成したその一覧表、別ファイルとして保存できたら便利だと思いませんか?「〇月分売上.xlsx」という名前で保存しておけば後から探しやすくてよさそうです。

というわけで今回は、特定のシートを別のブックとして保存する方法を紹介いたします。

サンプルコード1

今回のコードはとてもシンプルです。
①新規ブックにシートをコピーする
②そのブックを名前を付けて保存する
この2ステップで実現できます。
実際のコードを見てみましょう。

Sub Sample1()

    '新規ブックにSheet1をコピー
    Sheets("Sheet1").Copy
    
    '保存先のパスとファイル名を指定して保存
    ActiveWorkbook.SaveAs "C:\Users\riko\Documents\Youtube用\Sheet1.xlsx"
    
End Sub


たった2行で完成です。とても簡単ですね。

このままだとシート名やファイル名をコード内に書いているため、少し汎用性に欠けます。
そのため、対象を「アクティブになっているシート」、ファイル名を「アクティブになっているシート名」にしたコードも紹介します。

サンプルコード2

Sub Sample2()

    Dim FilePath As String
    Dim Name As String
    
    '保存するフォルダを指定(このブックがあるフォルダ)
    FilePath = ThisWorkbook.Path
    
    'アクティブになっているシート名を取得
    Name = ActiveSheet.Name
    Sheets(Name).Copy
    
    ActiveWorkbook.SaveAs FilePath & "\" & Name & ".xlsx"
    
End Sub

保存先はThisWorkbook.Pathを使って、このコードが書かれているファイルが入っているフォルダにします。

また、シート名をName = ActiveSheet.NameというコードでNameという変数に入れています。このNameという変数を使ってコピーするシート名を指定したり、保存するファイル名を指定しています。
こうすることによって使用する環境に依存せずに使えるコードになっています。
保存するフォルダが決まっていたり、ファイル名が毎回固定だったりする場合はコードに直接書いても問題ありません。
状況に合わせて適宜変更してお使いください。

お問い合わせ、お仕事のご依頼などがありましたら下記のお問い合わせフォームからご連絡ください。
お問い合わせフォーム
VBAの作成であれば50,000円ほどから、自分で使うVBAの書き方で詰まっている方のお手伝いであれば10,000円ほどから承ります。

VBA
スポンサーリンク
スポンサーリンク
りこをフォローする
エクセルVBAの寺子屋

コメント

タイトルとURLをコピーしました