Импорт в Excel из таблицы Access на основе параметров - PullRequest
1 голос
/ 12 декабря 2011

Я пытаюсь создать шаблон, который будет использовать данные из таблицы Access и позволять пользователю выбирать параметры в файле Excel. Количество записей в этой таблице замедляет работу файла Excel, и я хотел бы уменьшить объем импортируемых данных на основе выбора пользователя.

Таблица доступа будет иметь три столбца:
Номер детали | Линия | Код по каталогу

Я хотел бы импортировать все три столбца, но позволить пользователю выбирать импортированные записи на основе кода каталога.

Пользователи не имеют доступа для чтения или записи к таблицам sql, поэтому я выполняю запрос Access в конце каждого дня, чтобы создать таблицу Access, к которой они могут получить доступ.

У меня есть версии 2007 года. Возможен ли этот тип импорта?

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 13 декабря 2011

Вы можете сделать это без 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 спросит вас, как и где вы хотите получить данные. и ваши отфильтрованные данные появятся.

Теперь каждый раз, когда вы обновляете данные, вам снова задают параметр, чтобы вы могли легко его изменить.

p.s. Если вам не нужен «программный» ответ, спросите на superuser.com

2 голосов
/ 13 декабря 2011

Пример из 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
...