
いつもお世話になります
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
以上、よろしくお願いいたします
No.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
おはようございます
いつもお世話になります
実はAutocadLTからのDXFファイルの日本語がUTF-8でないと
ダメだったのですが、これで次のプログラムにつながることが出来ました
いつも本当にお世話になります
これからもよろしくお願い申し上げます

No.1
- 回答日時:
先頭レコードの頭に作成されている文字列は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
を参考にしてください。
いつもお世話になります
ご回答の件、ありがとうございます
初めての経験でよい勉強になりました
新たな進展に繋がりそうです
本当に助かりました
これからもよろしくお願い致します
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
プログラムについての質問です...
-
VBAのExecメソッドで画面を非表...
-
コンセントの電力は入力と出力...
-
cout と cerrの違い
-
Accessのテーブルからcsv出力す...
-
VBAで各項目に合致する番号を全...
-
Windows Formアプリからコンソ...
-
coutで出力した文字を消去する...
-
エクセルVBAからOUTLOOKの操作...
-
Excel VBAで値を変えながら、pd...
-
VBA レジストリの値の読み方に...
-
KEYENCEのシーケンスプログラム...
-
vba 環境依存文字によるDocuwor...
-
makeで文字化けする。migwのmak...
-
C#でアクセス権限の取得方法が...
-
クリスタルレポート8でのFormu...
-
VB.NETのCreateObject()にあた...
-
ACCESS クエリ→フォーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
プログラムについての質問です...
-
Accessのテーブルからcsv出力す...
-
FLEXSOLARパネルからAmazonで買...
-
真空管 300 B の前段について
-
cout と cerrの違い
-
printfとputcharの違いは
-
スマホ充電器購入にあたり
-
PD充電器について
-
TV出力ポートをOFFにすれば良い...
-
COBOLのMOVEで桁数が異なる場合
-
Windows Formアプリからコンソ...
-
CrystalReportの文字列の折返し...
-
C#でアクセス権限の取得方法が...
-
coutで出力した文字を消去する...
-
【UWSC】WEBページ中の特定文字...
-
KEYENCEのシーケンスプログラム...
-
CRC16計算について
-
標準出力の上書き
おすすめ情報