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という変数を使ってコピーするシート名を指定したり、保存するファイル名を指定しています。
こうすることによって使用する環境に依存せずに使えるコードになっています。
保存するフォルダが決まっていたり、ファイル名が毎回固定だったりする場合はコードに直接書いても問題ありません。
状況に合わせて適宜変更してお使いください。
コメント