所以我目前有这个代码
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/