電子書籍の厳選無料作品が豊富!

いつもお世話になります

Webで紹介されている下記のコードを使って、UtF-8形式のテキストファイルに書き込んだ際
先頭レコードの頭に書かれる不明のコードを削除したいのですがその方法が分かれば教えてください

(プログラム)
Sub Sample2()
Dim Target As String
Target = "C:\Temp\Sample.txt"
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
.Open
.WriteText " 0", 1
.SaveToFile Target, 20
.Close
End With
End Sub

(出力:シフトJisで開いたとき)
・ソ 0

この不明なコードのために次のプログラムステップへ自動的に進めなくて困っています

実際のプログラムでは1行目だけ" 0"を書き込んで後は下記の様に書き直してみましたが
途中所々で全角のコードが変わってしまいました

Dim strRec As String
Open Sample1 For Input As #1
Open Sample2 For Output As #2
Line Input #1, strRec
Print #2, " 0"
Do Until EOF(1)
Line Input #1, strRec
Print #2, strRec
Loop
Close #1
Close #2

以上、よろしくお願いいたします

A 回答 (2件)

こんばんは。



一例ですが、これは、思ったようにうまくいかないものです。
正しく読み込みできれば、ズラすことは可能ですが、決まったパターンのみしか、変換できませまん。



'//
Sub OutTextUTF()
 Dim Target As String
 Dim outStream As ADODB.stream '参照設定しました。
 Target = ""C:\Temp\Sample.txt"
 Set outStream = New ADODB.stream
 With outStream
  .Type = adTypeText '2
  .Charset = "UTF-8"
  .LineSeparator = adCRLF '-1
 End With
 With outStream
  .Open
  .WriteText "あいうえおabcdefg", adWriteLine '2 'ここが出力値
  .Position = 0
  .Type = adTypeBinary
  .Position = 3
 End With
 'ここまでは、BOM付きの普通のUTF-8出力
 'outStream.SaveToFile Target, adSaveCreateOverWrite
 'outStream.Close

 Dim ReStream As ADODB.stream
 Set ReStream = New ADODB.stream
 With ReStream
  .Open
  .Type = adTypeBinary
 End With
 outStream.CopyTo ReStream
 ReStream.SaveToFile Target, adSaveCreateOverWrite
 ReStream.Close
 outStream.Close

End Sub
    • good
    • 0
この回答へのお礼

おはようございます
いつもお世話になります

実はAutocadLTからのDXFファイルの日本語がUTF-8でないと
ダメだったのですが、これで次のプログラムにつながることが出来ました
いつも本当にお世話になります

これからもよろしくお願い申し上げます

お礼日時:2019/06/07 09:40

先頭レコードの頭に作成されている文字列はBOMと呼ばれています。


文字コードをUTFー8で出力する場合(Sub Sample2()の方法で出力した場合)は、必ずBOMが作成されます。
もし、文字コードをUTF-8で出力するがBOMを作成しないで、出力する場合は、イレギュラーな方法ですが、
https://tonari-it.com/excel-vba-utf8n-bom/
に出力方法のサンプルがありますので、それを参考にしてください。

しかしながら、BOMを作成せずにUTF-8で書き込んだテキストファイルをあなたが、提示されている方法(下の方に書かれたコード)で読み込むことはできません。これは、テキストファイルがSJISの場合のみ有効です。

UTF-8(BOM付き)でかかれたものを、UTF-8としてきちんと読み込む場合は、
http://officetanaka.net/excel/vba/file/file10.htm
を参考にしてください。
    • good
    • 0
この回答へのお礼

いつもお世話になります
ご回答の件、ありがとうございます

初めての経験でよい勉強になりました
新たな進展に繋がりそうです
本当に助かりました
これからもよろしくお願い致します

お礼日時:2019/06/07 09:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!