VBA(マクロ)の知って得ワザ

CSVデータをExcel(.xlsx)ファイルで保存する方法

設備データから銀行口座の入出金データにいたるまで、さまざまな情報をパソコンで使用できるように配布されているデータにCSV形式があります


そのCSV形式をエクセルで扱いやすいように変換するVBA(マクロ)を記載します


例題として、Cドライブ下のTestフォルダー内にあるtest1というCSVファイルを拡張子 「.xlsx」のExcelファイルにして保存します(例文1)

本ページにはプロモーションが含まれています

例文1

Sub テスト1()

Workbooks.Open Filename:="C:\Test\test1.csv"

ActiveWorkbook.SaveAs _
Filename:="C:\Test\test1.xlsx", _
FileFormat:=xlOpenXMLWorkbook

MsgBox (ActiveWorkbook.Name)

ActiveWorkbook.Close

End sub


例文1の解説

  • 1行目:test1というcsvファイルを開きます
  • Cドライブ下のTestというフォルダー内にあるファイルです


  • 2行目:開いているcsvファイルと同じ名前で、Excel(.xlsx)形式にして保存します

  • 3行目:保存したファイル名の拡張子が「.xlsx」になっていることを確認します

  • 4行目:保存したExcel(.xlsx)ファイルを閉じます

すると、Testというフォルダーに同じ名前のExcelファイルが作成されます


ワンポイント アドバイス

ポイントは保存するファイル名(Filename)の後にFileFormatを指定することです

Filename:="C:\Test\test1.xlsx", _

FileFormat:=xlOpenXMLWorkbook


FileFormatで通常よく使うのが以下の3つです

  1. Excelブックの場合 FileFormat:=xlOpenXMLWorkbook

  2. マクロ有効ブックの場合 FileFormat:=xlOpenXMLWorkbookMacroEnabled

  3. CSVファイルの場合 FileFormat:=xlCSV


ではFileFormatを指定しなかったら、どうなるのでしょうか?

例文2

Sub テスト2()

Workbooks.Open Filename:="C:\Test\test1.csv"

ActiveWorkbook.SaveAs _
Filename:="C:\Test\test1.xlsx"

MsgBox (ActiveWorkbook.Name)

ActiveWorkbook.Close

End sub


例文2の解説

  • 1行目:test1というcsvファイルを開きます

  • 2行目:csvファイルをExcel(.xlsx)ファイル形式で保存します
  • FileFormatは指定していません


  • 3行目:ファイル名の拡張子を確認します

  • 4行目:Excel(.xlsx)ファイルを閉じます
  • すると確認画面が表示されます

どのボタンをクリックしてもTestというフォルダーに同じ名前のExcelファイルが作成されますが

よく見ると正しく作成されたファイルとはサイズが異なります


試しにファイルを開いてみると

エラーメッセージが表示され、ファイルを開くことができませんでした


最後に

FileFormatは省略しがちですが、思わぬ結果に繋がりかねないので省略せずに記載することをおススメします


★これで外部データの取り込みが楽になりました★

コメント