VBA +读取带有来自文件的引号的行

时间:2012-08-01 11:15:24

标签: vba vb6

在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没有获取文件行中的内容,txt 并且MsgBox打印空盒子?

请告知为什么pFile会变为空?以及我需要在我的代码中修复的内容,以便将file.txt中的行放在pfile参数

  • 备注如果我从行中删除引号,那么pfile将从文件中获取行

2 个答案:

答案 0 :(得分:9)

Input #的{​​{3}}中,声明:

  

您不应该编写包含嵌入式引号的字符串,例如,“1,2”“X”用于Input#语句:Input#将此字符串解析为两个完整且独立的字符串。

所以这里发生的事情是你的字符串被解析为三个单独的字符串,因为你只使用一个变量作为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 #语句(documentation),它与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"""

然后您可以根据自己的要求进行修改。

答案 1 :(得分:4)

我总是将Scripting.FileSystemObject用于涉及文件系统的所有操作,包括I / O:

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有很多可选参数see here,您可以在其中指定文件是否打开以进行读/写,是否应该在访问时创建,如果是Unicode(UTF16)等

如果我在您提供的字符串上运行您的代码,我会遇到与您相同的问题。 OpenTextFile的代码运行正常。