Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: А как обработать ошибку возникающую в Excel из Access?
 
 автор: dmsrv803   (04.05.2010 в 10:19)   личное сообщение
 
 

Проблема в следующем - необходимо импортировать данные из Excel в Access. При открытии таблицы Excel в программном модуле возникает ошибка. Как в Access програмно возможно обработать эту ошибку, игнорировать ее и продолжить выполнение программы?

  Ответить  
 
 автор: osmor   (04.05.2010 в 10:22)   личное сообщение
 
 

как импортируете данные?
При использовании запросов по идее не должно быть проблем.
если через ole то попробуйте создавать объект с withevents тогда можно попробовать отловить ошибку

  Ответить  
 
 автор: dmsrv803   (04.05.2010 в 10:39)   личное сообщение
 
 

Данные из Excel перетаскиваю через объектную переменную
- Set ExcelApp = CreateObject("Excel.Application") , и т.д.
А про "создавать объект с withevents " можно поподробнее.

  Ответить  
 
 автор: osmor   (04.05.2010 в 11:02)   личное сообщение
 
 

для использования withevents придется подключить библиотеку excel (как называется не помню)
переменную описывать так
dim withevents ExcellApp as Excel.application
set ExcelApp = new Excel.application
дальше все как обычно, но вам будут доступны события происходящие в excel.

почему не используете запросы или связанные таблицы?

  Ответить  
 
 автор: dmsrv803   (04.05.2010 в 15:39)   личное сообщение
 
 

osmor, подскажите пож. а где вообще можно узнать какую ocx или dll нужно подключать для работы тех или иных компонентов? В Help я этой информации пока не нашел.

  Ответить  
 
 автор: osmor   (04.05.2010 в 16:01)   личное сообщение
 
 

каждый/ая ocx, dll (если она это подериживает) содержит набор опредленных объектов. В зависимости от того что вам нужно вы выбираете ту или иную библиотеку или ocx и их используете.
Если вам нужнен календарь, одну, если дерево и листвью - другую.... (причем если вам не нравится дерево которое есть в этой библиотеке, можете взять другую) в общем вопрос не ясен

  Ответить  
 
 автор: dmsrv803   (04.05.2010 в 16:12)   личное сообщение
 
 

Параметр withevents описывается в Help. Но там ни слова не сказано о том, какую библиотеку необходимо подключать. В этом и состоит вся проблема. И с подобными проблема рпиходится сталкиваться регулярно.
Если есть описание того, или иного компонента VBA в Help, то почему невозможно узнать название библиотеки, которая его содержит и без которой он не будет работать?

  Ответить  
 
 автор: osmor   (04.05.2010 в 16:22)   личное сообщение
 
 

withevents не имеет никакого отношения к какой либо конкретной библиотеке или контролу.
Если вы будете создавать объект form (ACCESS), то никаких библиотек подключать не нужно, разница будет только в том что
dim myfrm as form - даст объект формы без доступа к событиям
dim withevents myfrm as form - с возможность описать обработку событий

вот http://hiprog.com/index.php?option=com_content&task=view&id=307

  Ответить  
 
 автор: dmsrv803   (04.05.2010 в 17:42)   личное сообщение
 
 

уважаемый osmor, статья безусловно интересная и для меня очень ценная. Но в данный момент мне по зарез необходимо перетащить информацию из более чем полутора тысяч excelевских таблиц. Выполнение данной процедуры как Вы понимаете занимает не один час. И как правило я ее запуская на ночь. Но при открытии некоторых таблиц возникает ошибка, которая прерывает выполнение всей процедуры импорта данных. Поэтому мне крайне необходимо найти решение для программной обработке возможных ошибок.
Исходя из вышеизложенного не могли бы Вы подсказать - как мне найти эту библиотеку для withevents??????????

  Ответить  
 
 автор: osmor   (04.05.2010 в 18:17)   личное сообщение
 
 

В вашем случае подключить нужно EXcel, как точно называется библиотеке не помню, посмотреть сейчас не могу у меня нет ни офиса ни Windows. Смогу посмотреть позже, как до дома доберусь.
Подключить его нужно только для того что бы описать переменную с withevents, просто как as Object нельзя.

своим вторым топиком я задал вопрос почему не используете запросы, чем вызвано использование ole?

  Ответить  
 
 автор: dmsrv803   (04.05.2010 в 18:37)   личное сообщение
 
 

По поводу использования запросов для импорта из Excel - то тут я совсем не в теме. Просветите если не сложно.

  Ответить  
 
 автор: osmor   (04.05.2010 в 21:32)   личное сообщение
 
 

Библиотека называется
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 не будет "запускаться" и макросы в нем выполняться не будут

  Ответить  
 
 автор: dmsrv803   (05.05.2010 в 21:14)   личное сообщение
 
 

Огромное человеческое Спасибо!!!! Обязательно попробую реализовать все способы, но только завтра. Сегодня на работу не попал.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList