前提
・表のあるシート名は「サンプルシート」
・表はB列~D列
サンプルプログラム概要
・csvファイルが存在する場合は書き込み(追記ではなく)
・csvファイルが存在しない場合は新規作成
・csvファイルの各項目はダブルコーテーション付き
サンプルプログラム
'変数の宣言を必須
Option Explicit
Sub Sample()
Const SHEET_NAME As String = "サンプルシート"
Const CSV_FILE_PATH As String = "C:\Users\user\Desktop\temp\"
Const CSV_FILE_NAME As String = "sample.csv"
Const NO_COLUMN As Integer = 2
Const NAME_COLUMN As Integer = 4
Const START_ROW As Integer = 2
Dim ws As Worksheet
Dim endRow As Double
Dim arrayData As Variant
Set ws = ThisWorkbook.Worksheets(SHEET_NAME)
'最終行を取得
endRow = ws.Cells(START_ROW, NO_COLUMN).End(xlDown).Row
'表を配列に格納
With Worksheets(SHEET_NAME)
arrayData = .Range(.Cells(START_ROW, NO_COLUMN), _
.Cells(endRow, NAME_COLUMN))
End With
'csvファイルの作成
Call createCsvFile(arrayData, CSV_FILE_PATH & CSV_FILE_NAME)
'後片付け
Set ws = Nothing
End Sub
'csvファイルの作成
Private Function createCsvFile(arrayData As Variant, filePath As String)
Dim fso As Object
Dim csvFile As Object
Dim i As Double
Dim line As String
Set fso = CreateObject("Scripting.FileSystemObject")
'CSVファイルを作成
'書き込みモード(2)で開く(ファイルが存在する場合は追記ではなく1から書き込み)
'ファイルが存在しない場合は新規作成(True)する
'システムの既定値(-2)で開く
Set csvFile = fso.OpenTextFile(filePath, 2, True, -2)
'配列の要素数で繰り返し
For i = LBound(arrayData) To UBound(arrayData)
line = """" & arrayData(i, 1) & """" & "," & _
"""" & arrayData(i, 2) & """" & "," & _
"""" & arrayData(i, 3) & """"
'csvファイルへ出力
csvFile.WriteLine line
Next i
'後片付け
Set csvFile = Nothing
Set fso = Nothing
End Function