根据参数从 Access 表导入 Excel

Posted

技术标签:

【中文标题】根据参数从 Access 表导入 Excel【英文标题】:Import to Excel from Access table based on parameters 【发布时间】:2012-01-18 12:53:48 【问题描述】:

我正在尝试创建一个模板,该模板将利用 Access 表中的数据,并允许用户选择 Excel 文件中的参数。此表中的记录量使 Excel 文件变慢,我想减少基于用户选择导入的数据量。

Access 表将包含三列: 零件编号|行|目录代码

我想导入所有三列,但允许用户根据目录代码选择导入的记录。

用户对 sql 表没有读取或写入权限,因此我在每天结束时运行 Access 查询以创建他们可以访问的 Access 表。

我有 2007 版本。这种导入方式可行吗?

提前致谢!

【问题讨论】:

有可能。你目前做得怎么样? 目前,我在每天结束时运行 Access 查询来更新表。 Excel 文件链接到 Access 中的该表,以显示上面的三列。他们可以从那里使用 Excel 过滤器,但速度真的很慢。 这不仅是可能的,使用 ADO 甚至不是特别困难:support.microsoft.com/kb/257819,在 *** 上也发布了一些示例。为了安全起见,您可以使用命令对象和参数。 谢谢!我对 VBA 很陌生,所以我必须花一些时间来使用它。我希望有没有 VBA 的方法。 @Remou,该链接似乎是从 Excel 工作表而不是从 Access 数据库中获取数据。 【参考方案1】:

您可以在没有 VBA 的情况下执行此操作,只需使用 MS Query(适用于 Office 2010,我无法检查 '07):

在 Excel 中,转到数据功能区并单击 From other sources 图标 点击From Microsoft Query 选择MS Access Database* 浏览并选择您的数据库。 在向导中选择您需要导入的列 在下一页选择您要过滤的列 选择您需要的过滤器类型,即Equals 不要在下一个框中选择值,而是输入 [Parameter please Bob] 在下一页输入您的排序 选择Return data to Microsoft Excel 并完成

MS Query 会询问您的参数,然后 Excel 会询问您需要数据的方式和位置。并且您的过滤数据将出现。

现在每次刷新数据时都会再次询问您的参数,因此您可以轻松更改它。

附言如果您不想要“编程”答案,请在superuser.com 上提问

【讨论】:

【参考方案2】:

从 Access 到 Excel 示例。

Dim cn As Object
Dim rs As Object
Dim strFile As String
Dim strCon As String
Dim strSQL As String
Dim s As String
Dim i As Integer, j As Integer

''Access database

strFile = "z:\docs\dbfrom.mdb"

''This is the Jet 4 connection string, you can get more
''here : http://www.connectionstrings.com/excel

strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile & ";"

''Late binding, so no reference is needed

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open strCon

'Rough idea
intID = Sheet1.[A1]

strSQL = "SELECT * " _
       & "FROM Test " _
       & "WHERE ID = " & intID

rs.Open strSQL, cn, 3, 3


''Pick a suitable empty worksheet for the results

Worksheets("Sheet3").Cells(2, 1).CopyFromRecordset rs

''Tidy up
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

【讨论】:

以上是关于根据参数从 Access 表导入 Excel的主要内容,如果未能解决你的问题,请参考以下文章

根据字段值将 Access/Excel 表拆分为多个 Excel 工作表

如何仅将表结构从 csv 文件导入 Access

Access 数据库 - 即使使用 IMEX=1 从 Excel 工作表导入数据也无法正常工作

从 Access 导入 SQL Server

将 EAN-13 从 Excel 导入 Access

Microsoft Access 中有没有一种方法可以从具有复合主键的 Excel 文件中导入?