1

私は、知識を初心者と共有するために時間とエネルギーを費やすことをいとわない、ここにいる素敵な人々の1人からこのコードを受け取りました。

Sub ReadLinesFromAFileOneAfterAnother ()
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, MyFile, FileName, TextLine

Set fso = CreateObject("Scripting.FileSystemObject")

FileName = "c:\testfile.txt"

Set MyFile = fso.OpenTextFile(FileName, ForReading)

'' Read from the file
Do While MyFile.AtEndOfStream <> True
    TextLine = MyFile.ReadLine

    '' Do stuff to TextLine

Loop
MyFile.Close
End Sub

このコードが実行するタスクはわかっていますが、その各要素が何を意味し、何をするのかを知りたいと思います。誰か、このコードの3行目が何であるかを私に説明してもらえますか?

Dim fso, MyFile, FileName, TextLine

そもそも「fso」とは?それが「ファイルシステムオブジェクト」の略であることは知っていますが、それが実際に何であり、何を達成するのかを私に説明することはほとんどありません。次の3つの単語( "MyFile"、 "FileName"、 "TextLine")はどういう意味ですか?それらは何かのある種のパラメータですか?

私はこれを読みました:http: //msdn.microsoft.com/en-us/library/h7se9d4f (VS.85).aspx

そしてこれ: http: //msdn.microsoft.com/en-us/library/ebkhfaaz (VS.85).aspx

しかし、それらの資料は、自分で書くことができる人のために書かれているように感じます。私はほとんど何も理解していませんでした。もちろん、いくつかのことは多かれ少なかれ明確ですが、私が知らない他の多くの用語や単語があります!最終的には、完全で明確な全体像は1つではありません。

それで、私はあきらめて、ここに戻ることにしました。このサイトは、おそらくインターネット上で数少ないサイトの1つであり(実際、私は他に会ったことがありません)、そのルールで「質問は些細なことでも、「初心者」でもありません」と宣言しています。これは私にこの現在の質問をするための一種の根拠を与えてくれます。

ですから、誰でも、「fso」とは何かを簡単に説明してください。正確には、上記のコードの3行目はすべてについてです。

よろしくお願いします。

4

4 に答える 4

6

コード行:

Dim fso, MyFile, FileName, TextLine

バリアント型の「変数」と呼ばれるものを宣言します。

変数は、名前と型を持つメモリ内の小さなスペースです。それらを使用して、後でコードでそれらを使用することをプログラムに知らせます。

通常、変数に型 (整数や文字列など) を指定しますが、コーダーは指定しないため、(本質的に) 任意の型を取ることができるバリアントにデフォルト設定されています。

完了したら:

Set fso = CreateObject("Scripting.FileSystemObject")

次に、 fso には、ファイルシステムに対して何かを行うことができるコードが少し含まれています。

Set MyFile = fso.OpenTextFile(FileName, ForReading)

fso 機能を使用して、'filename' 変数で指定したファイル名を開き、それへの参照を 'myfile' 変数に入れたことを意味します。

そのため、myfile 変数を使用して、ファイルをさらに処理できます。

「do while」ループは、一度に 1 行ずつそのファイル (myfile.readline) を読み取り、結果を「textline」変数に入れます。ファイルが完成しました。

このコードの考え方は、ファイルを 1 行ずつ読み取り、各行の内容を見つけ次第処理することです。サブのタイトルが示すように、印刷、ログ、ユーザーへの表示などを行うことができます。

正直なところ、このようなコードを解釈するには VB の基本が不可欠なので、オンライン チュートリアルや本を探すことをお勧めします。

于 2009-11-12T13:43:17.100 に答える
5

その行が行っているのは、コードのさらに下で使用される変数としてそれらを定義することだけです

また、StackOverflow に関する次の投稿も参照してください: DIM は、Visual Basic および BASIC で何を表していますか?

于 2009-11-12T13:36:31.220 に答える
2
Dim fso, MyFile, FileName, TextLine

この行は変数を定義します。
これを行う目的は、変数がスクリプト全体で参照されるときにタイプミスを見つけやすくすることです。これは通常、Option Explicit (通常はスクリプトの先頭にあります) と組み合わせて使用​​されます。

デフォルトでは、VBA はその変数を定義する必要はありません。Option Explicit特定の変数が定義されていない場合に「未定義の変数」例外が生成されるように、オプションを使用して、この [ばかげた] デフォルトの動作を無効にすることができます。
この設定がないと、質問のスニペットで、たとえば 4 行目で e を省略して FileNam という名前をうっかりタイプミスした場合、VBA は処理を続行し、実質的に 2 つの変数 FileName と FileNam を持ちます。プログラムの後半で、変数 FileName を正しく使用すると、空の値が使用され、微妙で見つけにくいバグにつながります。

于 2009-11-12T13:39:13.973 に答える
1

その 3 行目は、後で使用するためにそれらを定義するだけです。Fso、Filename などは、コードの後半で使用される単なるプレースホルダー変数です。fso が宣言され、新しいファイル システム オブジェクトに設定されます。これは、NTFS、FAT など、任意のタイプのファイル システムである可能性がありますが、システム上のファイルを操作しようとしていることを意味します。次に、それを使用して、読み取り専用に指定されたファイルを開き、残りのコードを削除します。ファイル、入力ストリーム、別の追加ファイルシステムなど、どこから読み取るかをプログラムが認識できるように、 fso を指定する必要があります。

それが多少役立つことを願っています!

于 2009-11-12T13:38:10.963 に答える