【发布时间】:2018-10-05 07:34:51
【问题描述】:
我必须从 Access 文件、Test.accdb 和名为“CONFIG”的表中导入信息。
我有许多 Access 文件,它们总是以相同的方式生成,感兴趣的表总是“CONFIG”。
我们的想法是提取所有这些表以在 Excel 中编译它们的数据库。
没有任何 Access 经验,我使用 Excel 中的宏记录器:
ActiveWorkbook.Queries.Add Name:="CONFIG", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Access.Database(File.Contents(""C:\Users\Astrashar\Desktop\Projet\Test.accdb""), [CreateNavigationProperties=true])," & Chr(13) & "" & Chr(10) & " _CONFIG = Source{[Schema="""",Item=""CONFIG""]}[Data]" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " _CONFIG"
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""CONFIG"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [CONFIG]")
.ListObject.DisplayName = "CONFIG"
.Refresh BackgroundQuery:=False
End With
代码有效,但是当我尝试在代码中修改“C:\Users\Astrashar\Desktop\Projet\Test.accdb”以放置一个变量时,将其称为“Path”,我得到一个错误:
1004 “应用程序定义或对象定义错误”。
修改后的代码如下:
Dim Path
Path = "C:\Users\Astrashar\Desktop\Projet\Test.accdb"
ActiveWorkbook.Queries.Add Name:="CONFIG", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " ' Source = Access.Database(File.Contents(""Path""), [CreateNavigationProperties=true])," & Chr(13) & "" & Chr(10) & " _CONFIG = Source{[Schema="""",Item=""CONFIG""]}[Data]" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " _CONFIG"
我尝试将 Path 定义为 String,添加、删除双引号等等。
【问题讨论】:
-
欢迎来到 SO。我可以建议你一个不同的方法吗?我的意思是,我已阅读 并且感兴趣的表始终是“CONFIG”。我们的想法是提取所有这些表以在 Excel 中编译它们的数据库。我建议使用Range.CopyFromRecordset Method (Excel)。我认为这将是编译所有 configs 表的最佳方式。只是一个建议。
标签: excel vba ms-access import