• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL2007のVBAを使って、テキストファイルを読み込んで別のテ)

Excel VBAでテキストファイルを読み込んで別のファイルに書き込む際に、末尾にスペースが追加されてしまう原因と対策

このQ&Aのポイント
  • Excel VBAを使用してテキストファイルを読み込み、別のテキストファイルに書き込むコードを作成しました。しかし、新しく作成されたテキストファイルの末尾には元のファイルには存在しなかったスペースが追加されてしまいます。
  • この問題の原因は、テキストファイルをバイナリ形式で開いて読み込んでいるためです。バイナリ形式では、ファイルの終端に空白文字が含まれてしまうことがあります。
  • この問題を解決するためには、テキストファイルをテキスト形式で開いて読み込むか、または読み込んだデータを末尾の空白文字を削除する処理を追加する必要があります。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

まず、出力先のファイルが最初から1918バイトで存在していると、その先頭だけ書き換えて、残りはそのまま残りますけと、そういう事ではないですよね? 以下は、出力先ファイルが新規だとして回答します。 入力ファイルに日本語が、634(=1918-1284)文字入ってますよね?のこりの16(=1284-2*634)バイトが半角文字(CR,LFも含む)のはず。 FileLen(FileName1) はファイルのバイト長なので1284になります。 Data=Space(1284) で、Dataに1284文字のスペースが入りますが、内部は文字コードがUTF-16なので、バイト数は1284*2バイトになります。LenB関数で確認出来ます。 で、getで1284バイト読み込んで、それを先頭から一文字ずつDataに入れます。このとき半角文字も1バイトが2バイトになります。全角文字はそのまま2バイト。で、文字数は全部で650文字(=634+16)なので、残りの634(1284-650)文字はヌル文字が入ります。これを今度UTF-16からシフトJISに変換しながら出力します。バイト数は、全角文字が634*2バイト、半角が16バイト、ヌル文字が634バイト、合計1918バイト(後ろのほうはヌル文字)です。 対処方法は色々考えられますが、安易な方法としては、ヌル文字の削除。 Data = Replace(Data, Chr(0), "")

un88gyu
質問者

お礼

有り難うございます。 おかげさまで理由が分かり、解決いたしました。

その他の回答 (1)

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.1

私もこれで悩んだことがありました。 原因は追究しませんでしたが、trim関数を使って済ませてしまいました。 Data = Trim(Data)

関連するQ&A