在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参数
中答案 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的代码运行正常。