excel - 使用 VBA 在 Access 中创建多个链接表

标签 excel vba ms-access adodb linked-tables

所以我目前有这个代码

Public Sub DoTrans()

   Set cn = CreateObject("ADODB.Connection")

   dbPath = Application.ActiveWorkbook.Path & "\db1.accdb"
   dbWb = Application.ActiveWorkbook.FullName
   dbWs = Application.ActiveSheet.Name

   scn = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & dbPath
   dsh = "[" & Application.ActiveSheet.Name & "$]" & "namedrange1"

   cn.Open scn
   ssql = "INSERT INTO Table1 ([fdName], [fdOne], [fdTwo]) "
   ssql = ssql & "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh

   cn.Execute ssql

End Sub

但这会插入到现有的 Access 表中。我希望能够修改它以根据 Excel 中的命名范围列表创建链接表,以便所有命名范围都将转换为 Access 中的表。格式不是问题,因为我知道命名范围的格式可以用作 Access 中的表。

有没有办法轻松做到这一点?

最佳答案

INSERT INTO 追加到现有表,SELECT .... INTO 创建新表。

如果您想将该查询重写为 SELECT INTO,那么就像这样简单:

ssql = "SELECT * INTO Table1  "
ssql = ssql & "FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh

请注意,如果要覆盖该表,您首先需要删除该表。

您的问题有几个子问题。我可以在 ADO 中的特定列上创建链接,但您没有尝试过,也没有共享足够的信息来编写适用的答案。

关于excel - 使用 VBA 在 Access 中创建多个链接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46367813/

相关文章:

excel - 与 500 多个应用程序集成

vba - _Change 移动数据透视图的事件过程

带有 SELECT 和 INNER JOIN 的 SQL INSERT INTO

vba - Excel VBA 中引用相邻单元格的最有效方法是什么?

sql - ms-access:而不是行源,从查询运行

ms-access - 加入时语法错误,但没有加入查询

VBA Excel PageSetup 标题未打印

Excel INDEX & MATCH 使用多个条件

excel - 如何从 VBA 更改列名

excel - 检查用户选择的范围或取消