在Access中使用VBA创build多个链接表

所以我现在有这个代码

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表中。 我希望能够修改这个来创build链接表,基于我在Excel中命名的范围列表,以便所有命名的范围将被转换为Access中的表。 格式化不是问题,因为我知道名为范围的格式是可以用作Access中的表。

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

INSERT INTO附加到现有的表, SELECT .... INTO创build新的表。

如果你想把这个查询重写成一个SELECT INTO ,那么这将是简单的:

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

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

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

详细介绍TransferSpreadsheet方法的示例:

 昏暗snt作为string,sWB作为string,sRN作为string 
sNT =“Table1”
sWB =“C:\ MyWorkBook.xls”
sRN =“namedrange1”
DoCmd.TransferSpreadSheet acLink,,sNT,sWB,True,sRN

这必须在ms-access模块​​中运行。