• ベストアンサー

CRLFをLFに変換したい

テキストファイルを 1)SJIS → UTF-8 2)CRLF → LF に変換させたいのですが、1)はうまく出来たのですが、 2)がうまくいかず困っています Set Src = CreateObject("ADODB.Stream") Src.Open Src.Type = 2 Src.Charset = "Shift_JIS" Src.LoadFromFile "test.txt" Set Dst = CreateObject("ADODB.Stream") Dst.Open Dst.Type = 2 Dst.Charset = "UTF-8" Dst.LineSeparator=10 Src.CopyTo Dst Src.Close Dst.SaveToFile "utf-out.txt", 2 Dst.Close 改行コードが何も変化しません。 どうすればよいか教えてください。 ADODBではじめからファイルに書き込んでいく方法でもかまいません。

質問者が選んだベストアンサー

  • ベストアンサー
  • process9
  • ベストアンサー率29% (81/272)
回答No.2

う~ん、 LineSeparatorは、書き込み時点での指定みたいな感じがしますね~。 読み込む前か、読み込んだ後に ソースの方も変えてみたらどうでしょうか。 src.LineSeparator = 10 Src.LoadFromFile "test.txt" か又は Src.LoadFromFile "test.txt" src.LineSeparator = 10 の2つ試してみたらどうでしょうか。

azicyan
質問者

お礼

書き込みありがとうございました

その他の回答 (2)

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.3

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpado260/htm/mdprolineseparator.asp ↑を見る限り、 書き込み時のことには一切触れていません。 windows用なのですから、 LineSparatorは変えられないって事でしょうか? 奥の手として、Scripting.FileSystemObjectでもいいので、 ReadAllした後に、Replaceして書き込むとか。

参考URL:
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpado260/htm/mdprolineseparator.asp
azicyan
質問者

お礼

回答ありがとうございます。

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.1

Src.CopyTo Dst Dst.LineSeparator=10 じゃないですか?

azicyan
質問者

お礼

順番違いですか??!! やってみます!!

azicyan
質問者

補足

う~ ダメです・・・ やっぱりUTFの変換は成功しますが、 改行コードがCRLFのままです・・・(涙

関連するQ&A

  • 【VBA】保存したcsvファイルをメモ帳でUTFに変換する方法を教えてください。

    VBAの初心者です。 皆様のお力をお借りしたい次第です。 今私はデスクトップに保存したcsvファイルをUTFに変換し、 windowsメールでアドレスのインポートをしようとしていますが、 csvファイル自体をUTFに変換すると文字化けをしてしまうため、 メモ帳でUTFに変換→csv保存をしたいと思っております。 メモ帳をExcelから命令するにはどうしたらいいでしょうか? 以下はUTFに変換する際に使用させてもらったものです。 Dim JIS, UTF Set JIS = CreateObject("ADODB.Stream") JIS.Open JIS.Type = 2 JIS.Charset = "shift_jis" JIS.LoadFromFile "C:\~\JIS.csv" Set UTF = CreateObject("ADODB.Stream") UTF.Open UTF.Type = 2 UTF.Charset = "utf-8" JIS.CopyTo UTF UTF.SaveToFile "C:\~\UTF.csv", 2 JIS.Close Set JIS = Nothing UTF.Close Set UTF = Nothing

  • VBSで特定の文字で始まるファイルを開く

    VBSで"ADODB.Stream"オブジェクトを作成した場合、 LoadFromFileで開くファイルを指定するものだと思いますが、 このとき、特定の文字で始まるファイルを開く場合 どのように指定すれば良いのでしょうか? Set iSt = CreateObject("ADODB.Stream") ist.Charset = "UTF-16BE" ist.Open ist.LoadFromFile(?) オブジェクトがFileSystemObjectであれば *を使用してファイルを開くことができたのですが、 文字コードが"UTF-16BE"であるため ADODB.Streamを使うよう制限されています。

  • VBScript で ADO Streamオブジェクトの Writeを使いたい

    VBScriptでバイナリファイルを書き込みたいのですが、以下のコードで Writeしようとするとコンパイルエラーとなります。 なぜですか? Option Explicit Dim stream Dim i Dim line Set stream = CreateObject("ADODB.Stream") stream.Open stream.Type = 1 line = Array(61,0,13,0,10,0) stream.Write line stream.SaveToFile "bbb.txt", 2 stream.Close Set stream = Nothing

  • VBA Shift-JISをJISに変換すると半角カナが全角に変換されてしまう

    Excelから全銀フォーマットファイル(文字コード:JIS)を出力する目的で、VBAでADODB.Streamを利用して下記のサンプルコード書いた時、 半角カナが全角カナに変換されてしまう現象が解消できません。 [サンプルコード] With CreateObject("ADODB.Stream") .Open .Position = 0 .Type = 2 .Charset = "iso-2022-jp" .WriteText "(半角ア)、ア、1、1、a、a" .SaveToFile "C:\result.txt", 2 .Close End With [C:\result.txtの内容] ア、ア、1、1、a、a 解決策をご教授お願いいたします。

  • バイナリ読み込み書き込みについて

    Set objReadADO = WScript.CreateObject("ADODB.Stream") If Err.Number = 0 Then objReadADO.Open objReadADO.Type = 2 objReadADO.LoadFromFile "C:\old.xls" End If Set objWriteADO = WScript.CreateObject("ADODB.Stream") If Err.Number = 0 Then objWriteADO.Open objWriteADO.Type = 2 End If strReadDate = objReadADO.Read(-1) If InStr(1, strReadDate, "abc", 0) > 0 Then ← 1 strReadDate = Replace(strReadDate, "abc", "xyz") ← 2 End If objWriteADO.Write strReadDate objWriteADO.SaveToFile "C:\new.xls" objReadADO.Close objWriteADO.Close Excelをバイナリで読み込み、特定の文字があった場合に置き換えを行い別の名前でExcelを出力したいと思っています。出力自体は出来たのですが、変換がされません… ADODB.Streamは初心者なためどうしてよいかわかりません。 どのようにすればできるのでしょうか? よろしくお願いします。

  • ADODB.Streamで開いたファイルに追記

    「ADODB.Streamで開いたファイルに追記する」を参考に以下を作成しました。 c:\test.txtファイルを検索し、regEx.Patternで指定した一行を既存のC:\test_new.txtに追記したいと考えています。ちなみにファイルはUTF-8なのでADODB.Streamを使用しています。 C:\test_new.txtの最後の行にregEx.Pattern = "aaa"で指定した行が追記されることは確認していますが、C:\test_new.txtにc:\test.txtがコピーされて最後の行にregEx.Patternが追記されます。 試行錯誤しましたが初心者なため上手く動作しません。 既存のC:\test_new.txtに指定した一行を追記するにはどうしたら良いでしょうか。 お手数ですが、何方かご回答よろしくお願いします。 Option Explicit Dim objStream,regEx,testLine,tempLine Const adSaveCreateOverWrite = 2 Set objStream = CreateObject("ADODB.Stream") objStream.CharSet = "UTF-8" objStream.Open() objStream.LoadFromFile("c:\test.txt") Set regEx = New RegExp regEx.Pattern = "aaa" Do Until objStream.eos tempLine = objStream.readtext(-2) If regEx.Test(tempLine) Then testLine = tempLine End If Loop objStream.Position = objStream.size objStream.WriteText(testLine) objStream.SaveToFile("C:\test_new.txt"),adSaveCreateOverwrite objStream.Close() Msgbox ("End")

  • 新規にメモ帳を起動して、「test」と入力したい

    新規にメモ帳を起動して、「test」と入力したいです。そして保存はしたくないです。 Sub Sample() Dim rc As Long rc = Shell("notepad.exe", vbNormalFocus) End Sub これだと、新規にメモ帳は起動できますが、書き込みができません。 Sub Sample2() Dim strList As String Dim adoSt As ADODB.Stream Set adoSt = CreateObject("ADODB.Stream") With adoSt .Type = adTypeText .Charset = "UTF-8" .Open End With adoSt.WriteText "test", adWriteLine adoSt.SaveToFile "c:\test.txt", adSaveCreateOverWrite adoSt.Close Set adoSt = Nothing End Sub これだとメモ帳を作成して書き込めますが、保存されてしまいます。 新規にメモ帳を起動→文字を書き込む までをvbaで行い、その後は×ボタンで消せる状態にしたいのですが、 どうすればいいか教えてください。

  • (VBA )UTF-8(bom無)でテキスト書き出

    (VBA )UTF-8(bomu無し)でテキストファイルに書き出す 下記記マクロを使ってテキストファイルに書き出すとShift-JISになるようです。  下記コードを修正するとどのようになりますか ? ------------------------------------------------------------------ 'Chapterシートをテキストファイルへ書き出す Open "C:\Users\NOBU\Desktop\chap_Output.txt" For Output As #1 EndLow = WS2.Cells(Rows.Count, "A").End(xlUp).Row For I = 1 To EndLow Print #1, WS2.Cells(I, "A").Value Next Close #1 ------------------------------------------------------------------ 途中結果です。 UTF-8(BOM有)での書き出す方法はネットで探して  下記コードでうまく書き出し出来たのですが(BOM無し)の方法が良く分かりません。 以下が参考になりそうですが、修正の参考になりませんか ? http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_065.html ------------------------------------------------------------------------ 'ADODB.Streamオブジェクトを生成 Set ado = CreateObject("ADODB.Stream") 'ADODB.Streamで扱う文字コードを設定する ado.Charset = "UTF-8" 'ADODB.Streamを開く ado.Open '開いたADODB.Streamに内容を保管する 'adWriteLineは改行する時に入れる For I = 1 To EndLow ado.WriteText WS2.Cells(I, "A").Value, adWriteLine Next 'ADODB.Streamに保管されている内容をファイルに保存する ado.SaveToFile "C:\Users\Nubo\Desktop\chap_Output.txt", 2 'ADODB.Streamを閉じる ado.Close '終わったのが分かるようにメッセージを出す MsgBox "完了!" Set ado = Nothing End Sub

  • 文字コード変換で文字コード取得

    文字コードと改行コードを変更するマクロなのですが今のコードだと 読み込み元の文字コードがUTF-8のLFでないと正しい形で取り込むことができません。 そこで文字コードがUTF-8か改行コードがLFの時という条件を組みたいのですが色々試したのですができません 皆様のお力をおかしください。 Sub UTF8_LF→SJIS_CRLF() Dim strFilePath As String Dim objReadStream As Object Dim objWriteStream As Object Dim bytData() As Byte Const adTypeText = 2 Const adTypeBinary = 1 Const adReadLine = -2 Const adWriteLine = 1 Const adLF = 10 Const adCRLF = -1 Const adSaveCreateOverWrite = 2 Dim opnFile As Variant Dim fFilter As String Dim i As Integer fFilter = "xml Files ,*.xml" opnFile = Application.GetOpenFilename(FileFilter:=fFilter, MultiSelect:=True) If IsArray(opnFile) Then For i = 1 To UBound(opnFile) strFilePath = opnFile(i) Set objReadStream = CreateObject("ADODB.Stream") Set objWriteStream = CreateObject("ADODB.Stream") ' 読み込み元(Shift_JIS,CRLF) With objReadStream .Open .Type = adTypeText .Charset = "UTF-8" .LineSeparator = adLF .LoadFromFile strFilePath End With ' 書き込み先(UTF-8,LF) With objWriteStream .Open .Type = adTypeText .Charset = "Shift_JIS" .LineSeparator = adCRLF End With ' 1行ずつ変換 Application.DisplayStatusBar = True 'ステータスバーの表示 Application.StatusBar = Dir(opnFile(i)) & "を取得中・・・" 'ステータスバーに文字列表示 Do Until objReadStream.EOS objWriteStream.WriteText objReadStream.ReadText(adReadLine), adWriteLine Loop Application.StatusBar = False 'ステータスバーの制御を通常に戻す objReadStream.Close With objWriteStream .Position = 0 .Type = adTypeBinary .Position = 0 bytData = .Read .Close .Open .Position = 0 .Type = adTypeBinary .Write bytData .SaveToFile strFilePath, adSaveCreateOverWrite .Close End With Next Else MsgBox "キャンセルしました" End End If 宜しくお願いします。

  • .Charset = "UTF-8"

    新しいテキスト ドキュメント.txtの中身は、 test テスト なのですが、 その中身をVBAで取得したく、 Sub Sample() Dim strList As String Dim adoSt As New ADODB.Stream Dim WSH As Variant Set WSH = CreateObject("Wscript.Shell") With adoSt .Type = adTypeText .Charset = "UTF-8" .Open .LoadFromFile (WSH.SpecialFolders("Desktop") & "\新しいテキスト ドキュメント.txt") Do While Not (.EOS) strList = .ReadText(adReadLine) Debug.Print strList Loop .Close End With End Sub と言うコードを作ったのですが、 返り値が文字化けしてしまいます。 test ?e?X?g が返ってきます。 .Charset = "UTF-8"が原因なのかもしれませんが ネットからコピペしたコードを使っている為 どのように変えればいいのかわかりません。 ご教授よろしくお願いします。

専門家に質問してみよう