• ベストアンサー

ファイルを読み込むとデータが変わるのはなぜ?

Excel VBAでOpenメソッドを使ってtxtファイルを読み込みセルに表示させると、 txtファイルに書いてある値と違う値が表示されてしまいます。読ませたデータは、106303314215443605050000,05D0NPZHRPF0,000CE5155098です。これが 1.06303E+23,05D0NPZHRPF0,000CE5155098となってしまいます。原因がわからず困っています。ソースは次の通りです。 '開くファイル名を取得 getF_name = Application.GetOpenFilename("テキストファイル(*.txt),*.txt") If getF_name = False Then Exit Sub End If 'i = Worksheets("管理台帳2").Range("B65536").End(xlUp).Row i = 3 'ファイルを開いて、データを読み込む Open getF_name For Input As #1 Do Until EOF(1) Input #1, myBuf1, myBuf2, myBuf3 If myBuf2 = myBuf3 Then Worksheets("管理台帳2").Cells(i + 1, 2).Value = myBuf1 Else Worksheets("管理台帳2").Cells(i + 1, 3).Value = myBuf1 Worksheets("管理台帳2").Cells(i + 1, 4).Value = myBuf2 Worksheets("管理台帳2").Cells(i + 1, 5).Value = myBuf3 End If i = i + 1 Loop '開いたファイルを閉じる Close #1 'セルをデータの幅に調整 Worksheets("管理台帳2").Select Columns("A:A").EntireColumn.AutoFit Columns("B:B").EntireColumn.AutoFit Columns("C:C").EntireColumn.AutoFit どなたか教えて頂けませんか?宜しくお願いいたします。

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

  • ベストアンサー
  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.2

えっと、まずは回答ではないですけどカテゴリはあってますか?ExcelVBAの質問に見えるのですが… ExcelVBAの質問であれば、「Microsoftアプリケーション」の方で質問されるのがいいと思いますよ。 えっと、"106303314215443605050000"が"1.06303E+23"と表示されるのを直したいと言うことですよね? "106303314215443605050000"は数値データ?それとも文字データ? 数値データなら、桁数分の書式設定をしてやれば良いでしょう。 書式設定→"000000000000000000000000" 文字データなら、書式設定を「文字列」にするか。もしくは、以下の様にすれば出来ると思います。 ~.Value = "'" & Buf1 にすれば、全て表示されます。 如何でしょうか。

senzin
質問者

お礼

すみません。入力した後カテゴリが間違ってるのに気づいたのですが、削除できなくて・・・・ 教えていただいた方法で解決しました。有難うございます。 でも、どうして ’を入れるとちゃんと表示されるのでしょうか?理由も教えていただけると勉強になるのですが・・ お願いできませんか?

その他の回答 (2)

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.3

セルの書式設定で表示形式のデフォルトは「標準」になっています。 標準状態で入力された文字列が全て数字の場合は、数値と判断され数字以外の文字列を含む場合は只の文字列と判断されます。 そこで、入力された数字だけの文字列を数値として判断しないようにする為に、「'」と言うのが準備されています。 ですので、数字だけで文字列として表示する場合は先頭に「'」を付ける物だと思ってください。

senzin
質問者

お礼

有難うございます。たいへん勉強になりました。

  • guruguru2
  • ベストアンサー率29% (39/132)
回答No.1

セルの幅が小さくて16進数表示になっているわけではないのですよね?(この場合はセル幅を広げればいいだけですけど…。) 後は、 「Open getF_name For Input As #1 」のところを 「Open getF_name For binary As #1」で開いて、 「line input」で読み込んでみるとか?

senzin
質問者

お礼

こんな方法もあったんですね。勉強になりました。 有難うございます。

関連するQ&A