マクロ(VBA)
 PR

Excelマクロ(VBA)でシートをCSVファイルとして保存する方法

ねこる
記事内に商品プロモーションを含む場合があります

※今も保存されている原爆ドーム by iPhone SE3

「ExcelからCSVファイルとして保存したい」
「マクロからCSVファイルを作る方法はないかなあ」

Excelファイルで編集しているとCSVファイルとして欲しい場合はありませんか?

ExcelはCSVファイルを扱えるので、Excelで編集してファイル形式はCSVと良いとこ取りとしたいものです。

マクロ(VBA)では、CSVファイルとして書き出すこともできますが、CSVファイルとして保存することもできるので、今回はその方法を紹介したいと思います。

CSVファイルをマクロで作れるようになりたい方は、最後までみていってね!

Excelマクロ(VBA):シートをCSVファイルとして保存する

CSVファイルとして保存する方法はこちら

1Sub SaveAsCSV()
2    Application.DisplayAlerts = False
3    
4    Dim filePath As String
5    
6    ' ファイルの保存先とファイル名を指定
7    filePath = "/Users/nekoru/Library/CloudStorage/Dropbox/test/file.csv"
8    
9    ' ファイルをCSV形式で保存
10    ThisWorkbook.Worksheets("Sheet1").SaveAs FileName:=filePath
11End Sub

CSVファイルは、シートを1つだけ指定して保存することになります。

Excelファイルではないので、シートを複数保持した状態で保存することはできません。

ですので、シートを指定して保存することになります。

CSVファイルの保存先を指定

1 ファイルの保存先とファイル名を指定
2filePath = "/Users/nekoru/Library/CloudStorage/Dropbox/test/file.csv"

ファイルの保存先はこのように指定します。

Windowsの場合はこちら
filePath = “C:¥file.csv”

ねこる
ねこる

Macの場合、マクロが保存されているファイルと同じ場所にCSVファイルを保存することはできないようになっているので、別の場所を指定してあげてね!

ファイルの保存

1' ファイルをCSV形式で保存
2ThisWorkbook.Worksheets("Sheet1").SaveAs FileName:=filePath

ワークブックと、ワークシートを指定してSaveAsで保存です。

FileNameには保存先を指定してくださいね。

Excelマクロ(VBA):CSVファイルを書き出さない理由

マクロからCSVファイルとして書き出す方法もあります。

しかし、書き出しには時間がかかるので、シート上にデータがすべてあるならシートをCSVファイルとして保存したほうが早く終わります。

計算などのデータの加工をマクロで行った上で、CSVファイルとしたいなら書き出しをしたほうが早いです。

なぜなら、マクロでセルにデータを表示させるのは最も時間がかかるためです。

ちょっとしたプログラムなら合計のかかる時間は変わらないかもしれません。

しかし、何度も書き出すをするのなら、プログラム終了までの時間は大きく変わります。

  • シート上にすべてのデータがある→シートをCSVファイルとして保存
  • シートにデータが無い、マクロで加工が必要→マクロでCSVファイル書き出し

どちらのほうが早く終わるか、そのときの状況にあわせて判断できるといいですね。

Excelマクロ(VBA):高速化のための第一歩

マクロは、セルに値を表示するなど、遅くなる処理が多く存在します。

10個程度の値を10個のセルに表示する程度なら、イライラもしないでしょう。

しかし、1000個や1000万個だったらどうなるでしょうか。

ものすごく時間がかかりますし、その間別のこともできません。

そのため、高速化できるところはコツコツやりましょう。

まずは、プログラム中の画面表示を止めて、最後に表示するようにしましょう。

1Sub Screen()
2    ' 画面更新を止める
3    Application.ScreenUpdating = False
4
5    ' 実行したい処理
6
7   ' 画面更新を始める
8   Application.ScreenUpdating = True
9End Sub

セルに1個値が入るたびに表示していたら、めちゃくちゃ時間がかかります。

しかし、ScreenUpdating=Falseで止めてしまって、すべての処理が終わった後に表示するようにすれば無駄が無くなります。

つまり、高速化になるということです。

たった2行入れるだけで、高速化につながるのでやってみてください。

Sponsor link

Excel VBAを勉強するなら「できる大辞典」がおすすめです。

辞書なのでピンポイントで学ぶことができます。

大学時代、2016年版を購入して勉強していましたが相当使いました。

ネットだけでも勉強はできますが、本を読みながらVBAを勉強したい方は購入してください。

amazonで見てみる

ABOUT ME
ねこる
ねこる
管理者
Mac / プログラミング / Excel / マクロ(VBA) / カメラ

調べたり、効率的なことが好きです。

記事URLをコピーしました