所以我当前有此代码
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
但这将插入现有的访问表中。我希望能够根据我在Excel中拥有的命名范围的列表来修改以创建链接表,以便将所有命名范围转换为访问中的表。格式不是问题,因为我知道命名范围的格式可以用作访问中的表。
有没有办法轻松执行此操作?
INSERT INTO
附加在现有表上, SELECT .... INTO
创建了新的表。
如果要将该查询重写为 SELECT INTO
,那将是如此简单:
ssql = "SELECT * INTO Table1 "
ssql = ssql & "FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh
请注意,如果要覆盖它,则首先需要删除表。
您的问题有几个子问题。我可以在特定列上的ADO中创建链接,但是您尚未显示尝试,也没有共享足够的信息来编写适用的答案。
详细说明Transferspreadsheet方法的样本:
dim snt作为字符串,swb为字符串,srn as string
snt =" table1"
swb =" c: myworkbook.xls"
srn =" nasurerange1"
docmd.transfersferspreadsheetAclink,SNT,SWB,True,SRN
这必须在MS-Access的模块中运行。