所以我目前有这个代码
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中用作表。
有没有办法轻松做到这一点?
答案 0 :(得分:2)
INSERT INTO
附加到现有表格,SELECT .... INTO
会创建新表格。
如果您想将该查询重写为SELECT INTO
,那么就像这样简单:
ssql = "SELECT * INTO Table1 "
ssql = ssql & "FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh
请注意,如果要覆盖它,首先需要删除该表。
您的问题有几个问题。我可以在特定列的ADO中创建链接,但您没有展示尝试,也没有分享足够的信息来编写适用的答案。
答案 1 :(得分:2)
详细说明TransferSpreadsheet方法的示例:
Dim sNT as String, sWB as String, sRN as String
sNT = "Table1"
sWB = "C:\MyWorkBook.xls"
sRN = "namedrange1"
DoCmd.TransferSpreadSheet acLink, , sNT, sWB, True, sRN
这必须在ms-access中的模块中运行。