• ベストアンサー

"の文字列長について

下記のようにテキストファイルより1行読み込んで、 その1行目の文字数(バイト数)を取得する処理を作成しました。 Dim sBuffer As String Open "aaa.txt" as Input For #1 Line Input #1, sBuffer Msgbox sBuffer おおよそはうまく動作するのですが、 テキストファイルの1行目が "aaaaaaaaaa","bbbbbbbbbbbbb" のように、"が含まれていると、"を2バイトと 換算してしまうので、うまく動作しません。 "を1バイトとして換算して、正確な文字数(バイト数)を 取得するのには、どうしたらよろしいのでしょうか?

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

  • ベストアンサー
  • i-touch
  • ベストアンサー率40% (170/415)
回答No.2

VB6やエクセル97以降のVBAなら、 LenB(StrConv(sBuffer, vbFromUnicode)) ではいかがでしょうか? では!

yo-he
質問者

お礼

ありがとうございます。 うまく文字列長がとれるようになりました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

旧DOS-BASIC以来ある PRINT#-INPUT#の対になったINPUT# を使えばどうですか。あとWRITE#も今後の参考に調べてはどうですか。 Sub test02() Open "c:\my documents\aac1.txt" For Input As #1 p01: If EOF(1) Then GoTo e01 Input #1, a$ MsgBox a GoTo p01 e01: Close #1 End Sub 例えばメモ帳で "aass","sdf",123(改行) dfg,2345(改行) <(改行)はエンタキーを押すことを意味する。> をaac1.txtで保存し、上記を実行すると、「"」は 出てきませんが。msgbox len(a$)も入れて試してみて 納得してください。

yo-he
質問者

お礼

ありがとうございます。 早速試してみたいと思います。