3

file.txtには、次のように引用符が付いた行があります

D:\ file.txt:

    """\\server1\pc1\targetG0\source-pc\pkgs.gz"""

私の目標は、D:\file.txtからpFileパラメーターに行を読み取ることです。

したがって、次の簡単なVBAコードを記述します。

  Dim pFile As String
  Open "D:\file.txt" For Input As #1
  Input #1, pFile
  Close #1

  MsgBox pFile

VBAコードを実行しましたが、理由が不明なため、pFileがfile、txtの行の内容を取得せず、MsgBoxが空のボックスを出力しますか?

pFileがnullになる理由を教えてください。そして、file.txtの行をpfileパラメーターに入れるためにコードで修正する必要があるもの

  • 行から引用符を削除すると、pfileはファイルから行を取得します。
4

2 に答える 2

9

ドキュメントにはInput #、次のように記載されています。

Input#ステートメントで使用するために「1,2」「X」などの引用符が埋め込まれた文字列を記述しないでください。Input#は、この文字列を2つの完全な別個の文字列として解析します。

つまり、ここで起こっていることは、文字列が3つの別々の文字列に解析されており、パラメータとして1つの変数しか使用していないためInput #、最初の(空の)文字列のみが含まれているということです。コードを次のように少し変更します。

Dim pFile As String
Dim pFile2 As String
Dim pFile3 As String

Open "D:\file.txt" For Input As #1
Input #1, pFile, pFile2, pFile3
Close #1

結果は次のようになります。

pfile: (empty)
pfile2: \\server1\pc1\targetG0\source-pc\pkgs.gz
pfile3: (empty)

これを使用できない場合は、Line Input #ステートメント(link)を使用することもできます。これは、Input #行を区切る(つまり、コンマ/区切り文字が原因)ことを除いて、同様に機能しますInput #。以下のコードスニペット:

Dim pFile As String

Open "D:\file.txt" For Input As #1
Line Input #1, pFile
Close #1

その結果:

pfile: """\\server1\pc1\targetG0\source-pc\pkgs.gz"""

その後、独自の要件に合わせて変更できます。

于 2012-08-01T11:47:04.897 に答える
4

I / Oを含む、ファイルシステムに関連するすべての操作には、常にScripting.FileSystemObjectを使用します。

Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Dim f As Object
Set f = fs.OpenTextFile("D:\file.txt")
Dim s As String
s = f.ReadLine()

OpenTextFileは多くのオプションパラメータがあります。ここを参照してください。ファイルが読み取り/書き込み用に開いているかどうか、アクセス時に作成する必要があるかどうか、Unicode(UTF16)かどうかなどを指定できます。

あなたが提供した文字列であなたのコードを実行すると、私はあなたと同じ問題を抱えています。ただし、OpenTextFileを使用したコードは正常に実行されます。

于 2012-08-01T11:21:24.060 に答える