我如何在vba中使用ADODB连接

问题描述 投票:0回答:2
  1. 我需要数组数据
  2. 目标文件在网络上,10秒内添加数据值
  3. 需要连接到此文件(
    .xls
    )并制作实时图表

现在的问题是如何使用

ADODB
来打开这个文件

发生2个案例:

第一:

dim path as string, DB as string
dim cnt as ADODB.Connection
OLEDB = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & path & DB & "; 
extended properties=""excel 12.0 xmlHDR=YES"";"
Set cnt = New ADODB.Connection
cnt.Open OLEDB

然后我收到“找不到 ISAM 安装”错误

第二:

dim path as string, DB as string
dim cnt as ADODB.Connection
OLEDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & DB &"; 
extended properties=""excel 8.0;HDR=YES;IMEX=1;';"""
Set cnt = New ADODB.Connection
cnt.Open OLEDB

然后我得到了

3706 runtime error, cant find supporter

那我到底是怎么了?

excel vba ado adodb
2个回答
0
投票

这就是我通常运行它的方式:

DbConn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & path & ";" & _
            "Extended Properties=""Excel 12.0; HDR=YES"";"

其中path是完整的文件路径+文件名。 您可以在此处

找到有关连接字符串的更多信息

工作表名称和范围然后进入 SQL 语句。例如:

sqlWhere = sheetName & "$A1:$Z1000"
DbRecSet.Open "SELECT * FROM [" & sqlWhere & "]", DbConn, adOpenStatic

编辑:

如果我理解正确的话, 您有一个单元格每 10 秒更改一次值,并且您希望通过 ADODB 获取该值。

首先,在这种情况下,您可以从连接字符串中删除

HDR=YES

假设该单元格是

A1

sqlWhere = sheetName & "$A1"
DbRecSet.Open "SELECT * FROM [" & sqlWhere & "]", DbConn, adOpenStatic
returnValue = DbRecSet.Fields(0)

0
投票

路径= test_fdr&“”&today_total&“.xls”

 OLEDB = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & path & 
 ";Extended Properties=""Excel 8.0;HDR=YES"";"

  Set cnt = New ADODB.Connection
  cnt.Open OLEDB

  Rcdset.Open Source:="[" & TestSheetName & "$]", _
  ActiveConnection:=cnt, _
  CursorType:=adOpenStatic, _
  LockType:=adLockReadOnly, _
  Options:=adCmdTable

  With Sheets(3).QueryTables.Add(Connection:=Rcdset, Destination:=Target_rng)
© www.soinside.com 2019 - 2024. All rights reserved.