|
でこぽんウマイ!さん、Jakaさん、こんにちは。
Jakaさんのは、既に保存されたFileを変換しているようですネ。
私は、保存するときに処理する様にしてみました。
シートを直接保存ではなく、まずDataオブジェクトへ格納して、
String形式へ変換後、CSV形式へ変換、最終行のvbCrをvbLfへ変換。
最後にFileSystemObjectを使って、テキスト保存してます。
とっても回りくどいことをしているような気がします。
また、こちらにはCRとLFを区別できるエディタがないので結果を確認
出来ません。うまくいったらお知らせ下さい。
<注意>
Microsoft Forms 2.0 Object Libraryの参照設定が必要です。
VBE画面で「ツール」→「参照設定」でCheckを入れる。
見つからない場合は「参照」ボタンを押して、Systemフォルダ内の「FM20.DLL」
を選択して「開く」を押します。
Sub aaa()
Dim strData As String, objData As DataObject
Dim fso As Object, objText As Object, Fname As String
Dim i As Integer
ActiveSheet.UsedRange.Copy
Set objData = New DataObject
'セルデータをDataオブジェクトへ格納
objData.GetFromClipboard
'↓Dataオブジェクトから文字列として取り出し
strData = objData.GetText(1)
'↓タブ区切→カンマ区切に変換
strData = Replace(strData, vbTab, ",")
'↓最後のvbCr文字位置を取得
i = InStrRev(strData, vbCr)
'↓最後のvbCr文字をvbLfへReplace
strData = Left(strData, i - 1) & Replace(strData, vbCr, vbLf, i)
'↓最後のvbCr文字を削除なら
'strData = Left(strData, i - 1) & Replace(strData, vbCr, "", i)
'↓FileSystemObject
Fname = "C:\WINDOWS\デスクトップ\temp\test.csv" '←正しいファイル名にしてね
Set fso = CreateObject("Scripting.FileSystemObject")
'↓書き込み専用でOpen、無ければファイルを作成
Set objText = fso.OpenTextFile(Fname, 2, True)
'↓文字列を保存
objText.Write strData
objText.Close
Set objText = Nothing: Set fso = Nothing: Set objData = Nothing
End Sub
|
|