プロシージャにはならないけどよく使う処理についても、メモとして残しておこうかと思います。
ファイル出力 BOM有UTF-8
文字コード/改行コードを設定し、ファイル出力内容を.Write
で書き出した後、.SaveToFile
でファイルに保存する。
' ADODB.Streamオブジェクトを生成
Dim adoSt As Object
Set adoSt = CreateObject("ADODB.Stream")
With adoSt
.Type = 2 'テキストモード
.Charset = "UTF-8" '文字コードはUTF-8
.LineSeparator = 10 '改行コードはLF
.Open
' ----ここからデータ出力----
For i = starRow To endRow
If (ws.Cells(i, 2).Value <> "") Then
.WriteText ws.Cells(i, 2).Value, 1 '1=データ出力の後改行
End If
Next i
' ----ここまでデータ出力----
' データが存在するときのみファイルに出力する
If (.Size <> 0) Then
.SaveToFile SaveDir & FileName, 2 ' 2=上書き
End If
End With
adoSt.Close
Set adoSt = Nothing
ファイル出力 BOM無UTF-8
ファイル出力内容を.Write
で書き出した後、BOM部分となる先頭3バイトを除外してファイルに保存する。
' ADODB.Streamオブジェクトを生成
Dim adoSt As Object
Set adoSt = CreateObject("ADODB.Stream")
With adoSt
.Type = 2 'テキストモード
.Charset = "UTF-8" '文字コードはUTF-8'
.LineSeparator = 10 '改行コードはLF'
.Open
' ----ここからデータ出力----
For i = starRow To endRow
If (ws.Cells(i, 2).Value <> "") Then
.WriteText ws.Cells(i, 2).Value, 1 '1=データ出力の後改行
End If
Next i
' ----ここまでデータ出力----
' データが存在するときのみファイルに出力する
If (.Size <> 0) Then
' Postionsを0に戻してバイナリモードに変更する
.Position = 0
.Type = 1 'バイナリモード
' Position3以降を保存することでBOM分となる先頭3バイトを除外する
.Position = 3
Dim tempBuf As Variant
tempBuf = .Read()
.Position = 0
.Write tempBuf
.SetEOS
.SaveToFile SaveDir & FileName, 2 ' 2=上書き
End If
End With
adoSt.Close
Set adoSt = Nothing
コメント