如何在保存到OneDrive的Excel工作簿中运行SQL查询?

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

我想对所有包含在一个Excel工作簿中的表格运行SQL查询,我的VBA代码使用ADODB来运行这些SQL查询。我的VBA代码使用ADODB来运行这些SQL查询。

当工作簿保存在 OneDrive 中时,打开连接失败,但当工作簿保存到本地驱动器时,打开连接成功。

我如何在单个excel工作簿中的表上运行SQL,同时保存在OneDrive中?

当工作簿保存在本地但不保存在OneDrive上时,该代码可以工作。 唯一的变化是文件路径,在每种情况下,它看起来相当不同。

OneDrivePathExample = "https://d.docs.live.net/....xlsb"

LocalPathExample = "C:\My Documents\....xlsb"

我在连接字符串中的文件路径上做了一些实验 但是,不出所料,它们没有工作。

  1. 原始的

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=https://d.docs.live.net/.../Documents/Financial Tracker.xlsb;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1";
    
  2. 将""改为""。

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=https:\\d.docs.live.net\...\Documents\Financial Tracker.xlsb;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1";`
    
  3. 在路径周围添加方括号

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[https://d.docs.live.net/.../Documents/Financial Tracker.xlsb];Extended Properties="Excel 12.0;HDR=Yes;IMEX=1";
    
  4. 在路径上添加引号

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source="https://d.docs.live.net/.../Documents/Financial Tracker.xlsb";Extended Properties="Excel 12.0;HDR=Yes;IMEX=1";
    

我意识到,我可以在运行这段代码时将其保存在本地,之后再保存回OneDrive,从而避免这种情况的发生,但如果可能的话,我希望避免这种情况。

我还意识到,我可以写VBA代码,用SQL来做我想做的事情,然而我最初是这样做的,但改用SQL方法,因为SQL更快。

这是我的代码。

Function OpenRST(strSQL As String) As ADODB.Recordset
''Returns an open recordset object

Dim cn As ADODB.Connection
Dim strProvider As String, strExtendedProperties As String
Dim strFile As String, strCon As String

strFile = ThisWorkbook.FullName

strProvider = "Microsoft.ACE.OLEDB.12.0"
strExtendedProperties = """Excel 12.0;HDR=Yes;IMEX=1"";"


strCon = "Provider=" & strProvider & _
     ";Data Source=" & strFile & _
     ";Extended Properties=" & strExtendedProperties

Set cn = CreateObject("ADODB.Connection")
Set OpenRST = CreateObject("ADODB.Recordset")

cn.Open strCon  ''This is where it fails

OpenRST.Open strSQL, cn

End Function

在... cn.Open strCon 行,出现以下错误。

运行时错误'-2147467259 (80004005)'; 对象'_Connection'的方法'Open'失败。

谢谢!我想对所有包含在一个Excel工作簿中的表格运行SQL查询。

sql excel vba onedrive adodb
1个回答
1
投票

用""代替htpps:。这将使你更进一步。

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