VBA. Данные Access -> Excel.

Программирование на Visual Basic for Applications
Stanislav
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 17.02.2003 (Пн) 20:59
Откуда: Russia

VBA. Данные Access -> Excel.

Сообщение Stanislav » 27.09.2003 (Сб) 9:19

Мне нужно взять программно информацию из базы Access в Excel. То есть в проекте Excel открыть базу Access и взять данные. Как?

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 27.09.2003 (Сб) 10:11

К сожалению, пока могу дать пример взятие таблицы через запрос, более простой способ могу принести в понедельник
ChDir "H:\Моя"
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=База данных MS Access;DBQ=H:\Моя\Имя базы.mdb;DefaultDir=H:\Моя;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTi" _
), Array("meout=5;")), Destination:=Range("A1"))
.CommandText = Array( _
"SELECT год1.`Имя группы`, год1.фамилия, год1.Имя, год1.`дата рождения`" & Chr(13) & "" & Chr(10) & "FROM `H:\Моя\имя базы`.год1 год1" _
)
.Name = "Запрос из Базы данных MS Access"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With

Stanislav
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 17.02.2003 (Пн) 20:59
Откуда: Russia

Сообщение Stanislav » 27.09.2003 (Сб) 10:21

Спасибо большое, у меня не было ничего, теперь есть хоть что-то работающее. Но всё-таки хотелось что-нибудь попроще - с Database и Recorset, или как их там в ADO...

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 27.09.2003 (Сб) 10:40

С этими объектами проблематично в VBA for Excel.
Как то можно создать форму, но Excel должен быть правильно и полность установлен с VBA. Могу сейчас попробовать сделать программку не через запрос, а через указатель. Но повторяю, у меня дома есть пример очень простого способа

Stanislav
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 17.02.2003 (Пн) 20:59
Откуда: Russia

Сообщение Stanislav » 27.09.2003 (Сб) 10:46

Буду несказанно рад любой помощи, любому куску кода, любому совету.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 27.09.2003 (Сб) 11:06

Dim n, n1, b As Database, r As Recordset

Set b = OpenDatabase("полный путь к базе")
Set r = b.OpenRecordset("Имя таблицы")
j = 0

For Each n In r.Fields
j = j + 1
With ActiveSheet
.Cells(1, j).Value = n.Name
k = 2
r.MoveFirst
While Not r.EOF
.Cells(k, j).Value = r.Fields(n.Name).Value
k = k + 1
r.MoveNext
Wend
End With

Next n

r.close
b.close

Включи библиотеку в проекте Microsoft dao 3.6 ...

Stanislav
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 17.02.2003 (Пн) 20:59
Откуда: Russia

Сообщение Stanislav » 27.09.2003 (Сб) 11:17

Я понимаю, что это уже наглость, но нельзя ли ещё кусочек для ADO, а? :lol: :oops:

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 27.09.2003 (Сб) 11:22

:( , могу еще короче без ADO, но в понедельник :lol:

Stanislav
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 17.02.2003 (Пн) 20:59
Откуда: Russia

Сообщение Stanislav » 27.09.2003 (Сб) 11:24

OK :lol:

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 29.09.2003 (Пн) 12:30

Извиняюсь, забыл захватить пример.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 02.10.2003 (Чт) 8:17

Ну вот пример загрузки:

Cells(i, j).CopyFromRecordset _
Workspaces(0).OpenDatabase("D:\Примеры VBA\VBA for access\Имя базы.mdb").OpenRecordset("Имя таблицы")

где i, j – строка и столбец откуда начинаем загружать таблицу Б.Д.

Lider
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 02.06.2004 (Ср) 15:44
Откуда: Москва

Сообщение Lider » 02.08.2004 (Пн) 15:01

давно забытая тема , но мне была нужна
и вот код еще проще


Sub импорт_из_таблицы()

Set wbk = Application.Workbooks.Add


Dim r As Object
Set db = opendatabase("h:\Мои документы\База.mdb")

Set r = db.OpenRecordset("Таблица_или_запрос")

wbk.Worksheets(1).Cells(1, 1).CopyFromRecordset r
r.Close




End Sub


наверное я забыл еще
db.close
Есть 10 тпов людей:
Одни понимают двоичную систему исчисления,
Другие нет!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 98

    TopList