Unicodeファイルの行数を取得するには?

解決


リー  2005-11-11 13:04:08  No: 127540  IP: [192.*.*.*]

はじめまして、リーと申します。

Unicodeファイルの行数を取得しようとしてるのですが、
Asciiファイルの場合は、
lngMaxLine = objFso.OpenTextFile("test.txt", ForAppending).Line
で取得することができます。
Unicodeファイルの場合、この方法ですと正確な行数を取得することができません。

どなたかご存知の方いらっしゃいませんか?
よろしくお願い致します。

編集 削除
Blue  2005-11-11 13:11:21  No: 127541  IP: [192.*.*.*]

OpenTextFileのformat引数を調べてみてください。

MSDN
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/jsmthopentextfile.asp

編集 削除
リー  2005-11-11 13:26:29  No: 127542  IP: [192.*.*.*]

返信ありがとうございます。

ご指摘通り、Unicodeファイル用に下記のように引数を指定しますと、、
lngMaxLine = objFso.OpenTextFile("test.txt", ForAppending, False, TristateTrue).Line
行数に関係なく、lngMaxLine = 1 が返ってきます。

編集 削除
Blue  2005-11-11 14:05:25  No: 127543  IP: [192.*.*.*]

Lineプロパティの仕様がようわからんですね。

MSDN
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/jsproline.asp
には、TextStream ファイル内での現在の行番号を返します
とあるので、ForAppendingでひらけば、最終行に位置になっていると思っていたのですがね。

With objFso.OpenTextfile("test.txt", ForWriting, True, TristateTrue)
    .Writeline "ABC"
    .Writeline "EFG"
    .Close
End With

With objFso.OpenTextfile("test.txt", ForAppending, False, TristateTrue)
    Debug.Print .Line
    .Writeline "HIJ"
    Debug.Print .Line
    .Close
End With

を試してみたのですが、TristateFlaseの場合と結果違いますね。
わからねぇ。。。

編集 削除
リー  2005-11-11 18:31:56  No: 127544  IP: [192.*.*.*]

Blueさん返信ありがとうございます。

いろいろ調べたのですが、よくわからないので、
ファイルを一行ずつ読んでカウントすることにしました。

試していただいてありがとうございます。

編集 削除