こんにちは。エンジニアの篠原です。
業務でExcelを使用する機会ってまだまだ多いのではないでしょうか。
先日、業務中にExcelの内容をCSVファイルで出力したい場面があり
簡単にマクロを組んでみましたので紹介します!
目次
- 概要
- 実際に組んでみる
- Step 1:ボタンを配置
- Step 2:参照設定の追加
- Step 3:マクロを登録
- Step 4:ファイル出力
- まとめ
概要
Excelの内容をCSVファイルで出力するマクロを作成する。
今回は簡単にシート名、行列を指定して出力する。
実際に組んでみる
Step 1:ボタンを配置
まずは、ファイル出力用のボタンをExcel内に配置します。
開発タブ > 挿入 > フォームコントロール > ボタンを選択し、
任意のセルに配置します。
その際に、マクロの登録ダイアログが表示されるので
新規作成ボタンを押下します。
Step 2:参照設定の追加
今回この機能を作成するにあたり、
VBAでADOを使用する為、追加していきます。
ツール>参照設定で
『Microsoft ActiveX Data Objects 2.8 Library』にチェックを入れて
OKを押下します。
これで準備OKです!
Step 3:マクロを登録
実際にコードを書いていきます。
Sub file_output()
Dim ws As Worksheet
'シート名設定
Set ws = ThisWorkbook.Worksheets("シート名")
Dim csvFile As String
'出力パス&ファイル名設定(同ファイルと同じ場所に出力)
csvFile = ThisWorkbook.Path & "\hoge.csv"
'ADODB.Streamオブジェクトを生成
Dim adoSt As Object
Set adoSt = CreateObject("ADODB.Stream")
Dim strLine As String
Dim i As Long, j As Long
i = 1
With adoSt
'文字コード設定
.Charset = "UTF-8"
'改行コード設定(LF)
.LineSeparator = 10
.Open
.WriteText buf, 0
'出力範囲(行,列)
outputData = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Do While i <= outputData
strLine = ""
strLine = strLine & ws.Cells(i, 1).Value
.WriteText strLine, adWriteLine
i = i + 1
Loop
.SaveToFile csvFile, adSaveCreateOverWrite
.Close
End With
'完了メッセージ
MsgBox "出力完了!"
End Sub
Step 4:ファイル出力
出力ボタンを押下すると、同階層にCSVファイルが出力されます。
まとめ
今回紹介したのは簡単な行列指定しての出力でしたが
カスタマイズすれば汎用的に使用できます。
Excelを業務で使われている方にはオススメです!
以上、篠原でした。