Користите затворену радну свеску као базу података (АДО) користећи ВБА у Мицрософт Екцелу

Anonim

Помоћу доље наведених поступака можете користити АДО за преузимање записа из затворене радне књиге и читање/писање података.
Позовите процедуру овако:

ГетВорксхеетДата "Ц: ФолдернамеФиленаме.клс", "СЕЛЕЦТ * ФРОМ [СхеетНаме $];", ТхисВоркбоок.Ворксхеетс (1) .Ранге ("А3")
Замените СхеетНаме именом радног листа са ког желите да преузмете податке.

Суб ГетВорксхеетДата (стрСоурцеФиле као низ, стрСКЛ као низ, ТаргетЦелл као опсег)
Дим цн Ас АДОДБ.Цоннецтион, рс Ас АДОДБ.Рецордсет, ф Ас Интегер, р Ас Лонг
Ако ТаргетЦелл није ништа, изађите из Суб
Поставите цн = Нова АДОДБ.Веза
На Грешка Настави даље
цн.Опен "ДРИВЕР = {Мицрософт Екцел Дривер (*.клс)}; ДриверИд = 790; РеадОнли = Труе;" & _
"ДБК =" & стрСоурцеФиле & ";"
'ДриверИд = 790: Екцел 97/2000
'ДриверИд = 22: Екцел 5/95
'ДриверИд = 278: Екцел 4
'ДриверИд = 534: Екцел 3
Он Еррор ГоТо 0
Ако цн није ништа онда
МсгБок "Не могу да пронађем датотеку!", ВбЕкцламатион, ТхисВоркбоок.Наме
Екит Суб
Крај Ако

„Отвори скуп записа
Поставите рс = Нови АДОДБ.Рецордсет
На Грешка Настави даље
рс.Опен стрСКЛ, цн, адОпенФорвардОнли, адЛоцкРеадОнли, адЦмдТект
'рс.Опен "СЕЛЕЦТ * ФРОМ [СхеетНаме $]", _
цн, адОпенФорвардОнли, адЛоцкРеадОнли, адЦмдТект
'рс.Опен "СЕЛЕЦТ * ФРОМ [СхеетНаме $]", _
цн, адОпенСтатиц, адЛоцкОптимистиц, адЦмдТект
'рс.Опен "СЕЛЕЦТ * ФРОМ [СхеетНаме $] ВХЕРЕ [Фиелд Наме] ЛИКЕ' А%'", _
цн, адОпенСтатиц, адЛоцкОптимистиц, адЦмдТект
'рс.Опен "СЕЛЕЦТ * ФРОМ [СхеетНаме $] ВХЕРЕ [Фиелд Наме] ЛИКЕ' А%'ОРДЕР БИ [Фиелд Наме]", _
цн, адОпенСтатиц, адЛоцкОптимистиц, адЦмдТект

'опционални начини преузимања скупа записа
'Сет рс = цн.Екецуте ("[А1: З1000]")' први радни лист
'Сет рс = цн.Екецуте ("[ДефинедРангеНаме]")' било који радни лист

Он Еррор ГоТо 0
Ако рс није ништа онда
МсгБок "Не могу отворити датотеку!", ВбЕкцламатион, ТхисВоркбоок.Наме
цн.Цлосе
Поставите цн = Ништа
Екит Суб
Крај Ако

РС2ВС рс, ТаргетЦелл
Опциони приступ „ТаргетЦелл.ЦопиФромРецордсет рс“ за Екцел 2000 или новији

Ако је рс.Стате = адСтатеОпен Онда
рс.Затворити
Крај Ако
Поставите рс = Ништа
цн.Цлосе
Поставите цн = Ништа
Енд Суб

Пример макроа претпоставља да је ваш ВБА пројекат додао референцу у библиотеку објеката АДО.
То можете учинити из ВБЕ -а одабиром менија Алати, Референце и одабиром Мицрософт
АцтивеКс Дата Објецтс к.к Објектна библиотека.