シート毎にファイルを自動保存してみる(CSV)

マクロ / VBA

CSV?

まずCSVファイルについて説明しておいたほうが良いでしょうか。
CSVとは
 データをカンマ(“,”)で区切って並べたファイル形式。主に表計算ソフトやデータベースソフトがデータを保存するときに使う形式だが、汎用性が高く、多くの電子手帳やワープロソフトなどでも利用できるため、異なる種類のアプリケーションソフト間のデータ交換に使われることも多い。実体はテキストファイルであるため、テキストエディタやワープロなどで開いて直接編集することも可能。
(引用:IT用語辞典)
例:テキストファイルで開くと下記のようなデータになります。

123,456,789
987,654,321

これをExcelで開くと

A
B
C
1
123
456
789
2
987
654
321

となります。
ではXLSファイルをCSVファイルに形式を変えて保存するには?

CSV形式で保存

 「ファイルを名前を付けて保存」する際にファイル形式をCSVに変更するだけですが、Excelは複数のSheetというものを扱います。CSVはただ単なるカンマ区切りされたデータですので複数Sheetなんてあり得ません。よって、保存しようとすると「選択したファイルの種類は複数のシートを含むブックをサポートしていません。」という忠告メッセージが出ます。そのままOKを押すと選択したSheetのみをCSVファイルとして保存してくれます。

複数あるシートをマクロで自動に・・・

さて本題です。
上記にてXLSのSheetをCSVに保存する事は出来ますが、Sheetが多数あっていちいち名前を付けて保存・・・・が面倒!という時のマクロです。

Sub Save_CSV()
Dim ws As Worksheet
Dim cvsDir As String
Dim csvPrefix As String
Dim wsName As String
' このブックのパスを取得
csvPrefix = ThisWorkbook.Path + "\" + ThisWorkbook.Name
csvPrefix = Left(csvPrefix, Len(csvPrefix) - 4)
' シートの数だけループを回す
For Each ws In ThisWorkbook.Sheets
ws.Activate
wsName = ws.Name
ws.SaveAs Filename:=csvPrefix + "_" + wsName + ".csv", FileFormat:=xlCSV, _
CreateBackup:=False
ws.Name = wsName
Next
End Sub

XLSファイルは一度保存してからの方が良いでしょう。
XLSファイルが保存されている場所に「(XLSファイル名)_(Sheet名).csv」という名前で保存されます。
19-1.jpg
2012.03.05修正
 一部VBAの変数にタイプミスがありました。

Comment

  1. mnishi より:

    まさに探していた内容なのでありがたく使わせていただきます。
    以下の wsNname がミスタイプされています。^^
    ws.SaveAs Filename:=csvPrefix + "_" + wsNname + ".csv",
    FileFormat:=xlCSV, CreateBackup:=False
    お知らせまで。

  2. isakat より:

    >mnishi さん
    お知らせ有難うございます!
    早速修正させて頂きました。

  3. 株初心者 より:

    とても魅力的な記事でした!!
    また遊びに来ます!!
    ありがとうございます。。

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  • ▼お小遣い稼ぎしませんか?▼ 日々の生活にhappyをプラスする|ハピタス

    クレジットカード・FX口座を作るだけで簡単に3万円GETです。一切支出はありません。

日付 印刷 SUMIFS SUM COLUMN バーコード SUMIF XLSTART 図形 HLOOKUP フロー図 コピペ COUNTIF 作業効率UP 無料 NA() 条件付き書式 置換 検索 DATE ワイルドカード ユーザー定義関数 INDEX MATCH VLOOKUP テンプレート グラフ 目標 変換 TODAY
  • 関西在住の30代サラリーマン。事務職で毎日Excelと戯れています。
    システム導入なんて資金が無い!Excelでなんとかやりたい零細中小の社長さん・事務員さんの力になればと思います。
    詳しいプロフィール


PAGE TOP ↑