我正在尝试创建一个模板,该模板将利用Access表中的数据,并允许用户在Excel文件中选择参数。此表中的记录数量正在减慢Excel文件的速度,我希望减少根据用户选择导入的数据量。
Access表格有三列:
零件号|行|目录代码
我想导入所有三列,但允许用户根据目录代码选择导入的记录。
用户没有对sql表的读或写权限,因此我在每天结束时运行Access查询以创建他们可以访问的Access表。
我有2007版本。这种类型的导入是否可行?
提前致谢!
答案 0 :(得分:3)
您可以在没有VBA的情况下执行此操作,只需使用MS Query(在Office 2010中工作,我无法检查'07):
From other sources
图标From Microsoft Query
MS Access Database*
Equals
[Parameter please Bob]
Return data to Microsoft Excel
并完成MS Query会询问您参数,然后Excel将询问您希望数据的方式和位置。并显示您的过滤数据。
现在每次刷新数据时,都会再次询问参数,因此您可以轻松更改它。
P.S。如果您不想要“编程”答案,请在superuser.com
上询问答案 1 :(得分:2)
从Access to 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