首页 > 解决方案 > VBA 连接到文件服务器上的另一个工作簿

问题描述

我想将数据从一个工作簿导入另一个工作簿,并且在 OLEDB 驱动程序的帮助下完成了。但是它只适用于我的本地机器。当我尝试在实际生产环境中对其进行测试时,它无法连接到源文件。运行文件和源文件都存在于具有身份验证要求的文件服务器上,但我具有读/写访问权限,但无法打开源文件。

每次我尝试从 excel 工作簿中获取数据时,我都会收到一条错误消息,指出我尝试连接的文件已经打开并且无法访问。我确定没有人在使用源文件。我尝试过使用不同的方式来编写文件路径,并且每个变体都会给我不同的错误。(“\FILERP\...”以及驱动器号“G:...”)

您可以在下面找到我尝试过但没有成功的字符串连接之一。

strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                "Data Source=" & filepath & ";" & _
                "User ID=" & userName & ";" & _
                "IMEX=1;" & _
                "Mode=Read;" & _
                "Extended Properties=""Excel 12.0 Xml;" & _
                "HDR=NO;"""

我得到的一些错误示例:

strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                "Data Source=" & filepath & ";" & _
                "Extended Properties=""Excel 12.0 Xml;HDR=No;"""

运行时错误“-2147467259 (80004005)”“无法更新。数据库或对象被写保护。”

strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                "Data Source=" & filepath & ";" & _
                "Integrated Security=SSPI;" & _
                "Extended Properties=""Excel 12.0 Xml;HDR=No;"""

运行时错误“-2147217887 (80040e21)”“多步 OLE DB 操作产生错误。检查每个 OLE DB 状态值”

    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                "Data Source=" & filepath & ";" & _
                "User Id=" & userName & ";" & _
                "Password=****;" & _
                "Extended Properties=""Excel 12.0 Xml;HDR=No;"""

运行时错误'-2147217843 (80040e4d)“无法启动程序。工作组的信息文件丢失或被其他用户独占打开。”

标签: excelvbaoledbfileserver

解决方案


经过长时间的尝试不同的事情,答案其实超级简单,也很尴尬。

在我的文件路径中,我认为它是 \FILEREP\,而实际上它是 \FILERP\

所以我给所有人的教训是,在开始查看其他内容之前,请确保您拥有正确的文件路径!:)

最后,我需要的只是下面看到的标准连接字符串!

strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                "Data Source=" & filepath & ";" & _
                "Extended Properties=""Excel 12.0 Xml;HDR=No;"""

推荐阅读