根据参数从 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 工作表