1
0

簡単!Excelでファイル出力

Last updated at Posted at 2024-05-31

こんにちは。エンジニアの篠原です。
業務でExcelを使用する機会ってまだまだ多いのではないでしょうか。
先日、業務中にExcelの内容をCSVファイルで出力したい場面があり
簡単にマクロを組んでみましたので紹介します!

目次

  • 概要
  • 実際に組んでみる
    • Step 1:ボタンを配置
    • Step 2:参照設定の追加
    • Step 3:マクロを登録
    • Step 4:ファイル出力
  • まとめ

概要

Excelの内容をCSVファイルで出力するマクロを作成する。
今回は簡単にシート名、行列を指定して出力する。

実際に組んでみる

Step 1:ボタンを配置

まずは、ファイル出力用のボタンをExcel内に配置します。
開発タブ > 挿入 > フォームコントロール > ボタンを選択し、
任意のセルに配置します。
その際に、マクロの登録ダイアログが表示されるので
新規作成ボタンを押下します。

2024-05-30_14h08_41.png


Step 2:参照設定の追加

今回この機能を作成するにあたり、
VBAでADOを使用する為、追加していきます。
ツール>参照設定で
『Microsoft ActiveX Data Objects 2.8 Library』にチェックを入れて
OKを押下します。

image.png

これで準備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
image.png

出力されたCSV
image.png


まとめ

今回紹介したのは簡単な行列指定しての出力でしたが
カスタマイズすれば汎用的に使用できます。
Excelを業務で使われている方にはオススメです!

以上、篠原でした。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0