使用VBA将Excel表格或命名范围导出为Access

我有以下代码,我正在使用从Excel工作表插入到Access表中的值。 有用

Dim cn As ADODB.Connection Dim strQuery As String Set cn = New ADODB.Connection With cn .Provider = "Microsoft.ACE.OLEDB.12.0" .ConnectionString = "Data Source=" & Application.CurrentProject.Path & "\Excel\testdb.accdb;" .Open End With ssql = "INSERT INTO Table1 SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=Z:\Docs\Test.xls].[Sheet1$]" 

我知道我也可以通过执行以下操作来在指定范围内执行相同操作:

 ssql = "INSERT INTO Table1 SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=Z:\Docs\Test.xls].[Sheet1$a1:a4]" 

然而,在尝试了所有的东西并且到处寻找之后,我无法弄清楚如何为Excel表格或命名范围做到这一点。是否有可能? 谁能帮忙?

其实,我能够做到这一点:

 SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=Z:\Docs\Test.xls].range_name" 

我以前遇到的问题是,我使用的Excel表是由连接到外部数据(实际上是相同的Access数据库)创build的。 我试图从Access导入并链接到Excel表格,并且只有在Excel文件closures时才能这样做。 我想这是为了防止某种循环引用。

您不需要在WHERE子句中再次指定工作簿,因为它已经在连接string中被引用。

要回答你的问题,定义名称的范围决定了语法:

 SELECT * FROM [YourSheetName$SheetScopedNamedRange] 

要么

 SELECT * FROM WorkbookScopedNamedRange 

请注意,第二个例子中没有方括号。