【问题标题】:How to load data into Excel Userform Listbox from Access form directly?如何直接从 Access 表单将数据加载到 Excel 用户表单列表框中?
【发布时间】:2016-10-04 16:42:23
【问题描述】:

我想将一些数据从 Access 加载到 Excel 用户表单列表框中。我现在正在做的是首先创建ADODB.Connection 来连接访问并创建ADODB.Recordset 来存储数据。其次,我使用Range("xx").CopyFromRecordset 将数据复制到 Excel 表。第三,将该excel范围命名为“ResultSet”。第四,使用Me.ListName.RowSource="ResultSet"将数据从excel表复制到ListBox。

如您所见,我使用四个步骤来完成这项工作。有没有办法跳过第2步和第3步,直接将数据从Access复制到ListBox?

谢谢

【问题讨论】:

  • 记录集是动态的吗?我会使用 Excel 的外部数据工具将 Access 数据导入 Excel 中的电子表格。如果您的用户窗体上的选择经常更改列表框源,这可能不是性能增强器。如果记录集或多或少是静态的,您可以设置一次外部源和列表框源,并在需要更新数据源的任何时候使用 Excel 的刷新按钮。如果您要链接到表,请使用“来自访问”选项,否则“来自其他来源”>“来自 Microsoft Query”应该可以让您访问表或查询。
  • @ChristopherD。谢谢回复。是的,它是动态的。此外,我想跳过第 2 步和第 3 步的原因是我不希望用户在 Excel 中看到数据。我只希望数据显示在 Listbox 中。

标签: excel vba ms-access userform


【解决方案1】:

我找到了一篇文章。下面是代码,这是link

  With rs
    .MoveLast
    NoOfRecords = .RecordCount
    .MoveFirst
  End With
  'Set the number of ListBox columns = number of fields in the recordset
  ListBox1.ColumnCount = rs.Fields.Count
  'Load the listbox with the retrieved records
  ListBox1.Column = rs.GetRows(NoOfRecords)

谢谢

【讨论】:

    【解决方案2】:

    对于单列列表框

    尝试使用循环手动编辑列表:

    Me.ListName.Clear 'First clear existing list
    With Me.ListName
        While rs.EOF = False
            .AddItem rs.Fields(0).Value
            rs.MoveNext
        Wend
    End With
    

    使用步骤 2-4 交换该代码。

    【讨论】:

    • 感谢您的回复。一个问题:它是一个接一个地加载数据,对吗?会比CopyFromRecordset慢吗?
    • @kzhang12 是的,它一次加载一个,并且比您当前的代码慢。根据大小,可能不会明显变慢,但复制记录集或链接到外部数据会更快。您可以尝试将列表框源直接设置为记录集,但我以前从未尝试过。我使用 Access 而不是用户表单,所以这有点超出我的经验。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2019-11-02
    • 1970-01-01
    • 2021-09-29
    相关资源
    最近更新 更多