0

我有一个 Excel 工作表,其中在 Sheet1 的 A 列中有大约 1000 个项目编号的列表。目前,我将 Sheet1 导入到名为 Access 的表中ItemNumbers并运行以下查询:

SELECT MyTable.ItemNumber, MyTable.ItemName, MyTable.ItemPrice
FROM [ItemNumbers] INNER JOIN MyTable ON [ItemNumbers].ItemNumber = MyTable.ItemNumber
ORDER BY MyTable.ItemNumber;

然后我将输出复制/粘贴到 Sheet2。

如何在 Excel 中的 VBA 中执行此操作并将结果放入记录集中?我可以弄清楚如何遍历记录集并将结果放入 Sheet2。我只是不确定运行查询的代码。

到目前为止,我有以下内容。只需修改它以使用 Sheet1 Column A 中的值。

Dim cn As Object
Dim rs As Object
Dim strSql As String
Dim strConnection As String
Set cn = CreateObject("ADODB.Connection")
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=C:\MyDatabase.accdb"
strSql = "SELECT MyTable.ItemNumber, MyTable.ItemName, MyTable.ItemPrice " & _
         "FROM MyTable " & _
         "WHERE WHERE (((MyTable.ItemNumber)= ??? IS IN Sheet1!A:A ???  )) " & _
         "ORDER BY MyTable.ItemNumber;"             
cn.Open strConnection
Set rs = cn.Execute(strSql)
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

谢谢!!!

4

1 回答 1

0

如果我理解正确;你问的是join从 Access 到 Excel (ADODB) 中的表的表。

从 SO 检查这个链接,看看它是否有帮助:
Selecting 2 tables from 2 different databases (ACCESS)

我以前没有尝试过将 Access 和 Excel 结合起来,但我猜它也适用于 Excel。

另一种方式(这肯定会奏效):

  1. 运行不带WHERE子句的查询并将结果存储在记录集中;
  2. 将您需要的 Excel 工作表中的数据存储在字典中,其中 ItemNumber (PK?) 是键;
  3. 遍历记录集,用典型的字典Exists函数检查每条记录的ItemNumber是否在字典中可用;
  4. 如果记录可用,请将记录集值存储在单独的数组(或字典)中,以便进一步操作(或执行直接操作,如果这是您想要做的)。
于 2013-10-18T14:23:31.110 回答