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

Anonim

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

Суб ГетВорксхеетДата (стрСоурцеФиле Ас Стринг, стрСКЛ Ас Стринг, ТаргетЦелл Ас Ранге) Дим дб Као ДАО.Датабасе, рс Као ДАО.Рецордсет, ф Као цео број, р Све док ТаргетЦелл није ништа Затим изађите из Суб Он Грешка Настави Следећи скуп дб = ОпенДатабасе (стрСоурцеФиле, Фалсе, Труе, "Екцел 8.0; ХДР = Да;") 'само за читање' Сет дб = ОпенДатабасе (стрСоурцеФиле, Фалсе, Фалсе, "Екцел 8.0; ХДР = Иес;") 'врите' Сет дб = ОпенДатабасе ( "Ц: \ Име фасцикле \ Име датотеке.клс", Нетачно, Тачно, _ "Екцел 8.0; ХДР = Да;") 'само за читање' Постави дб = ОпенДатабасе ("Ц: \ Име фасцикле \ Име датотеке.клс", Нетачно, Нетачно, _ "Екцел 8.0; ХДР = Да;") 'писати при грешци Иди на 0 Ако дб није ништа Тада МсгБок "Не могу да пронађем датотеку!", ВбЕкцламатион, ТхисВоркбоок.Наме Изађи Под крај Ако' 'имена радних листова листа' За ф = 0 За дб.ТаблеДефс.Цоунт - 1 'Дебуг.Принт дб.ТаблеДефс (ф). Назив' Нект ф 'отвори скуп записа Он Еррор Ресуме Нект Сет рс = дб.ОпенРецордсет (стрСКЛ)' Сет рс = дб.ОпенРецордсет ( "СЕЛЕЦТ * ФРОМ [СхеетНаме $]") 'Сет рс = дб.ОпенРецордсет ("СЕЛЕЦТ * ФРОМ [СхеетНаме $]" & _ "ВХЕРЕ [Наме Наме] ЛИКЕ 'А*'") 'Сет рс = дб.ОпенРецордсет ("СЕЛЕЦТ*ФРОМ [СхеетНаме $]" & _ "ВХЕРЕ [Фиелд Наме] ЛИКЕ' А*'ОРДЕР БИ [Фиелд Наме]" ) Он Еррор ГоТо 0 Иф рс Ис Нотхинг тхен МсгБок "Цан'т опен тхе филе!", ВбЕкцламатион, ТхисВоркбоок.Наме дб.Цлосе Сет дб = Нотхинг Екит Суб Енд Иф РС2ВС рс, ТаргетЦелл рс.Цлосе Сет рс = Ништа дб. Затвори Сет дб = Ништа Крај Суб Суб РС2ВС (рс Као ДАО.Рецордсет, ТаргетЦелл Ас Ранге) Дим ф Ас Интегер, р Ас Лонг, ц Ас Лонг Ако рс није ништа Затим изађите из Суб -а ако ТаргетЦелл није ништа Затим изађите из Суб -а са апликацијом. = клЦалцулатионМануал .СцреенУпдатинг = фалсе. ). р, ц + ф) .Формула = рс.Фиелдс (ф). Име Он Еррор Иди на 0 Следеће ф 'врите рец ордс Он Еррор Ресуме Нект рс.МовеФирст Он Еррор ГоТо 0 До Вхиле Нот рс.ЕОФ р = р + 1 Фор ф = 0 То рс.Фиелдс.Цоунт - 1 Он Еррор Ресуме Нект .Целлс (р, ц + ф) .Формула = рс.Фиелдс (ф) .Вредност укључена Грешка Иди на 0 Следеће ф рс.МовеНект Лооп. Редови (ТаргетЦелл.Целлс (1, 1) .Ров) .Фонт.Болд = Труе .Цолумнс ("А: ИВ"). АутоФит Заврши са применом .СтатусБар = Фалсе .Цалцулатион = клЦалцулатионАутоматиц .СцреенУпдатинг = Труе Енд Витх Енд Суб

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