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

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

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

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

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

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

提前致谢!

【问题讨论】:

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

标签: excel ms-access import excel-2007


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2012-02-26
      • 2014-11-19
      • 1970-01-01
      • 2019-11-28
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      相关资源
      最近更新 更多