'******************************************************************************* ' CSV形式テキストファイル書き出すサンプル(FSO) ' ' 作成者:井上治 URL:http://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!] '******************************************************************************* ' [参照設定] ' ・Microsoft Scripting Runtime '******************************************************************************* Option Explicit '******************************************************************************* ' CSV形式テキストファイル書き出すサンプル③(FSO) ' 参照設定:Microsoft Scripting Runtime '******************************************************************************* Sub WRITE_CSVFile3() Const cnsFILENAME = "SAMPLE.csv" Dim FSO As New FileSystemObject ' FileSystemObject Dim TS As TextStream ' TextStream Dim GYO As Long ' 収容するセルの行 Dim GYOMAX As Long ' データが収容された最終行 ' 最終行の取得 With ActiveSheet If .FilterMode Then .ShowAllData End With GYOMAX = Range("A65536").End(xlUp).Row ' 指定ファイルをOPEN(出力モード) Set TS = FSO.CreateTextFile(Filename:=ThisWorkbook.Path & cnsFILENAME, _ Overwrite:=True) ' 2行目から開始 GYO = 2 ' 最終行まで繰り返す Do Until GYO > GYOMAX ' レコードを出力(REC編集処理より受け取る) TS.WriteLine FP_EDIT_CSVREC(GYO, 1, 5) ' 行を加算 GYO = GYO + 1 Loop ' 指定ファイルをCLOSE TS.Close Set TS = Nothing Set FSO = Nothing End Sub '******************************************************************************* ' CSV形式テキストの1レコードの編集処理 '******************************************************************************* Private Function FP_EDIT_CSVREC(GYO As Long, _ STRCOL As Long, _ ENDCOL As Long) As String Dim strREC As String Dim COL As Long ' 先頭カラムの編集 strREC = FP_EDIT_COLUMN(GYO, STRCOL) ' 2番目以降のカラムの編集 For COL = STRCOL + 1 To ENDCOL strREC = strREC & "," & FP_EDIT_COLUMN(GYO, COL) Next COL ' 編集したレコード内容を戻り値にセット FP_EDIT_CSVREC = strREC End Function '******************************************************************************* ' 1カラム分の編集処理 '******************************************************************************* Private Function FP_EDIT_COLUMN(GYO As Long, COL As Long) As String Dim strTEXT As String strTEXT = Trim(Cells(GYO, COL).Value) If IsDate(strTEXT) Then FP_EDIT_COLUMN = "#" & strTEXT & "#" ' 日付 ElseIf IsNumeric(strTEXT) = True Then FP_EDIT_COLUMN = CStr(CDbl(strTEXT)) ' 数値 Else FP_EDIT_COLUMN = """" & strTEXT & """" ' その他(文字列) End If End Function '-----------------------------<< End of Source >>-------------------------------