2016-10-04 5 views
0

Я хочу загрузить некоторые данные из Access в Excel User Form ListBox. Теперь я создаю ADODB.Connection для подключения и создания ADODB.Recordset для хранения данных, во-первых. Во-вторых, я использую Range("xx").CopyFromRecordset для копирования данных на лист Excel. В-третьих, укажите, что диапазон excel равен «ResultSet». В-четвертых, используйте Me.ListName.RowSource="ResultSet" для копирования данных с листа excel в ListBox.Как загрузить данные в Excel Userform Listbox из формы доступа напрямую?

Как вы можете видеть, я использую четыре шага, чтобы закончить эту работу. Есть ли способ пропустить шаги 2 и 3, скопировав данные из Access в ListBox напрямую?

Благодаря

+0

ли динамический набор записей? Я бы использовал внешние инструменты данных Excel для импорта данных Access в электронную таблицу в Excel. Если выбор в пользовательской форме часто меняет источник списка, это может быть не усилитель производительности. Если набор записей более или менее статичен, вы можете установить источник исходного и исходного данных один раз и использовать кнопку обновления Excel в любое время, необходимое для обновления источника данных. Если вы ссылаетесь на таблицу, используйте параметр «От доступа», иначе «Из других источников»> «От Microsoft Query» должен предоставить вам доступ к таблицам или запросам. – MoondogsMaDawg

+0

@ChristopherD. Спасибо за ответ. Да, это динамично. Кроме того, причина, по которой я хочу пропустить шаг 2 и шаг 3, заключается в том, что я не хочу, чтобы пользователи видели данные в Excel. Мне просто нужны данные, отображаемые в Listbox. – kzhang12

ответ

0

Для одного ListBox колонке

Try вручную редактировать список с помощью цикла:

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.

+0

Спасибо за ответ. Один вопрос: загрузка данных по одной ячейке за другой, не так ли? Будет ли это медленнее, чем 'CopyFromRecordset'? – kzhang12

+0

@ kzhang12 Да, он загружается по одному и медленнее вашего текущего кода. В зависимости от размера, возможно, не заметно медленнее, но копирование набора записей или привязка к внешним данным будет быстрее. Вы можете попробовать напрямую установить источник списка в набор записей, но я никогда не пробовал это раньше. Я использую Access вместо userforms, так что это немного вне моего опыта. – MoondogsMaDawg

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) 

Благодаря