|
|
|
| Проблема в следующем - необходимо импортировать данные из Excel в Access. При открытии таблицы Excel в программном модуле возникает ошибка. Как в Access програмно возможно обработать эту ошибку, игнорировать ее и продолжить выполнение программы? | |
|
| |
|
|
|
| как импортируете данные?
При использовании запросов по идее не должно быть проблем.
если через ole то попробуйте создавать объект с withevents тогда можно попробовать отловить ошибку | |
|
| |
|
|
|
| Данные из Excel перетаскиваю через объектную переменную
- Set ExcelApp = CreateObject("Excel.Application") , и т.д.
А про "создавать объект с withevents " можно поподробнее. | |
|
| |
|
|
|
| для использования withevents придется подключить библиотеку excel (как называется не помню)
переменную описывать так
dim withevents ExcellApp as Excel.application
set ExcelApp = new Excel.application
дальше все как обычно, но вам будут доступны события происходящие в excel.
почему не используете запросы или связанные таблицы? | |
|
| |
|
|
|
| osmor, подскажите пож. а где вообще можно узнать какую ocx или dll нужно подключать для работы тех или иных компонентов? В Help я этой информации пока не нашел. | |
|
| |
|
|
|
| каждый/ая ocx, dll (если она это подериживает) содержит набор опредленных объектов. В зависимости от того что вам нужно вы выбираете ту или иную библиотеку или ocx и их используете.
Если вам нужнен календарь, одну, если дерево и листвью - другую.... (причем если вам не нравится дерево которое есть в этой библиотеке, можете взять другую) в общем вопрос не ясен | |
|
| |
|
|
|
| Параметр withevents описывается в Help. Но там ни слова не сказано о том, какую библиотеку необходимо подключать. В этом и состоит вся проблема. И с подобными проблема рпиходится сталкиваться регулярно.
Если есть описание того, или иного компонента VBA в Help, то почему невозможно узнать название библиотеки, которая его содержит и без которой он не будет работать? | |
|
| |
|
|
|
| withevents не имеет никакого отношения к какой либо конкретной библиотеке или контролу.
Если вы будете создавать объект form (ACCESS), то никаких библиотек подключать не нужно, разница будет только в том что
dim myfrm as form - даст объект формы без доступа к событиям
dim withevents myfrm as form - с возможность описать обработку событий
вот http://hiprog.com/index.php?option=com_content&task=view&id=307 | |
|
| |
|
|
|
| уважаемый osmor, статья безусловно интересная и для меня очень ценная. Но в данный момент мне по зарез необходимо перетащить информацию из более чем полутора тысяч excelевских таблиц. Выполнение данной процедуры как Вы понимаете занимает не один час. И как правило я ее запуская на ночь. Но при открытии некоторых таблиц возникает ошибка, которая прерывает выполнение всей процедуры импорта данных. Поэтому мне крайне необходимо найти решение для программной обработке возможных ошибок.
Исходя из вышеизложенного не могли бы Вы подсказать - как мне найти эту библиотеку для withevents?????????? | |
|
| |
|
|
|
| В вашем случае подключить нужно EXcel, как точно называется библиотеке не помню, посмотреть сейчас не могу у меня нет ни офиса ни Windows. Смогу посмотреть позже, как до дома доберусь.
Подключить его нужно только для того что бы описать переменную с withevents, просто как as Object нельзя.
своим вторым топиком я задал вопрос почему не используете запросы, чем вызвано использование ole? | |
|
| |
|
|
|
| По поводу использования запросов для импорта из Excel - то тут я совсем не в теме. Просветите если не сложно. | |
|
| |
|
|
|
| Библиотека называется
Microsoft Excel Object Library
Excel.exe
Листы Excel можно использовать в ACCESS как связанные таблицы, в этом случае в ACCESS с ними можно работать как с родными таблицами.
Можно не связывать листы как таблицы, а использовать запросы с ключевым словом IN
SELECT * FROM [Sheet1$A18:N65000] AS T IN 'C:\Путь\Файл.xls'[Excel 8.0;HDR=NO;IMEX=1]
|
это выборка, а можно сразу Insert into в таблицу ACCESS
Еще можно создать ADODB.connection к книге и получить лист в Recordset
как-то так
dim xlscon as adodb.connection
dim rst as adodb.recordset
set xlscon = new adodb.connection
set rst = new adodb.recordset
xlscon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Excelеtest.xls;Extended Properties=Excel 8.0"
rst.open "Select * from [Лист1]",xlscon
|
в этом случае файл Excel не будет "запускаться" и макросы в нем выполняться не будут | |
|
| |
|
|
|
| Огромное человеческое Спасибо!!!! Обязательно попробую реализовать все способы, но только завтра. Сегодня на работу не попал.
| |
|
| |