文件存在后打开文本文件

问题描述 投票:0回答:1

类似于 VBScript OpenTextFile 无效的过程调用或参数

我正在尝试访问一个看似存在的文件,但给我一个错误 5。

这是我的代码:

`Strfilepath="...\query.txt"
Set DBs = currentdb()

Set fso = CreateObject("Scripting.FilesystemObject")
If fso.FileExists(strfilepath) then
Set file = fso.opentextfile(strfilepath,ForReading, false, -1)
End if
StrSqlquery= file.readall
File.close

The error occurs on the fso opentextfile line`

我尝试了上面的代码

vba ms-access readfile
1个回答
0
投票

给您更详细的答复。您将从文档中了解到,有一个常量值 ForReading。从技术上讲,这是枚举的一部分,但如果您引用相关库,则只能访问此枚举。然而,您的代码正在使用所谓的后期绑定。它创建一个对象,该对象仅在运行时解析,在此过程中您无权访问任何相关枚举,因此您需要自己设置 ForReading 的值。

另一种方法是使用早期绑定,这几乎适用于我推荐的所有目的。为此,首先添加对 Microsoft Scripting Runtime 的引用(在“工具”、“引用”下,向下滚动并选中相关框)。现在您可以将代码更改为如下所示:

Dim filepath As String
Dim qry As String
Dim file As TextStream
Dim fso As New FileSystemObject
 
    filepath = "C:\test\test.txt"
    If fso.FileExists(filepath) Then
        Set file = fso.OpenTextFile(filepath, ForReading, False, 0)
        qry = file.ReadAll
        file.Close
    End If  

请注意,因为我已经引用了该库,所以我不再需要提供 ForReading 的定义。其他优点是可以在编译时捕获拼写错误。例如,如果您将 ReadAll 错误拼写为 ReadAl,您会收到一个编译警告,但如果您使用后期绑定,则不会收到该警告 - 该错误仅在运行时出现,并且运行时错误通常比编译时错误更难解决。

© www.soinside.com 2019 - 2024. All rights reserved.