
いつもお世話になります
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Access(アクセス) アクセス レポートを開いたときにパラメーターの自動入力がしたい 4 2022/11/30 11:21
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
cout と cerrの違い
-
プログラムについての質問です...
-
Accessのテーブルからcsv出力す...
-
FLEXSOLARパネルからAmazonで買...
-
printfとputcharの違いは
-
スマホ充電器購入にあたり
-
TV出力ポートをOFFにすれば良い...
-
真空管 300 B の前段について
-
VB.NETのCreateObject()にあた...
-
C# 標準出力のencodingをutf8に...
-
COBOLのMOVEで桁数が異なる場合
-
モバイルバッテリーの電力につ...
-
携帯の液晶画像をパソコンに出...
-
リッチテキストをテキストに変換
-
Aviutlの連番BMP出力方法
-
PD充電器について
-
c言語でグラフをつくる
-
【エクセル、並び替えについて】
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
プログラムについての質問です...
-
PD充電器について
-
cout と cerrの違い
-
スマホ充電器購入にあたり
-
Accessのテーブルからcsv出力す...
-
MMDでavi出力が出来ない
-
printfとputcharの違いは
-
VBAのExecメソッドで画面を非表...
-
TV出力ポートをOFFにすれば良い...
-
COBOLのMOVEで桁数が異なる場合
-
VBAでテキスト出力時のスペース...
-
ACCESS クエリ→フォーム...
-
coutで出力した文字を消去する...
-
4種類(A4縦、A4横、A3縦、A3横)のヘ...
-
Windows Formアプリからコンソ...
-
コンセントの電力は入力と出力...
-
C#でアクセス権限の取得方法が...
-
【VBA】PDFを2in1で出力したいです
おすすめ情報