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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Памагите какая -то засада с ЭКСЕЛЕМ+ АКСЕС
 
 автор: Andrew   (07.11.2006 в 18:37)
 
 

' Вот кусок кода
' RecSet- обыкновенный рекордсет типа DAO
...........
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
xlBook.Worksheets(1).Range("A4").CopyFromRecordset RecSet
До сих пор все работало на ура: создавали ексель-объект дотавляли книгу и туда копировали набор записей как таблицку- все замечательно но после выходных
вот эта строка
xlBook.Worksheets(1).Range("A4").CopyFromRecordset RecSet
выдает ошибку типа (по аглицки правда): ОШИБКА АВТОМАТИЗАЦИИ этот объект не поддерживает данный метод. Хотя на других компотах работает все пучком. Сам метод никуда не делся. Акс +EXcEL стоит 2003. Пробовал переустановить оффис с полным сносом предыдущей версии - ничего не помогает. Отчего возникла данная ошибка. Пробовал специально для этого компа прицепить Excel бибилиотеку в референсах и попытался действовать через нее - результат= 0

  Ответить  
 
 автор: osmor   (08.11.2006 в 08:41)   личное сообщение
 
 

попробуйте сделать по кускам

Set xlsSheet = xlsBook.Worksheets(1)
set xlsRange = xlsSheet.Cells("A4")
 xlsRange.CopyFromRecordset RecSet

  Ответить  
 
 автор: KrukVN   (08.11.2006 в 09:11)   личное сообщение
 
 

С объектами не подерживающими автоматизацию уже сталкивался, т.е. из родного приложения (excel, word) все работает, а из стороннего (напримиер из access) нет.
победил так: (хотя может есть решение и по красивше, а меня сроки оч поджимали)
- создал шаблон документа (в моем случае word);
- создал макрос (функцию с параметрами) непосредственно в шаблоне;
- в самой функции прописал то, что не поддерживает автоматизацию из access;
- далее из access создаю документ используя вышеописанный шаблон;
- и при помощи метода runmacro выполняю эту функцию с необходимыми параметрами.
Все работает как часики
Можно конечно попробовать и программно создать функцию в документе и выполнить её, но в моем случае без шаблона все равно было не обойтись

Хотя, у меня в Office XP вот это:

Private Sub wefwefwewef()
Dim RecSet As DAO.Recordset
Dim xlApp As Object
Dim xlBook As Object

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add

Set RecSet = CurrentDb.OpenRecordset("tab_proba", dbOpenSnapshot)

xlApp.Visible = True

xlBook.Worksheets(1).Range("A4").CopyFromRecordset RecSet

RecSet.Close
Set RecSet = Nothing
End Sub

проходит вполне нормально
а в office 2003 возникает та самая ошибка :/

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

честно говоря не сталкивался, ну иногда бывали свякие проблемы когда пытался использовать selection или какой нибуть ActiveWorkbook, но если от них отказаться то все вроде работало, хотя конечно все это было до 2003.

СЕйчас проверил у себя - работает
офис 2003, win XP SP2
код скопировал от сюда, даже название таблицы такое же

  Ответить  
 
 автор: Andrw   (08.11.2006 в 17:56)
 
 

Дело в том что все работает на соседнем компютере (который не сервер). Такое впечатление что упала одна из сслыкок оффиса в реестре - ( которая не знаю !!!). Сегодня попробовал оффис XP, и 2000 - проблема осталась - ошибка выскакивает - т.е. excel - перестал воспримать команду ....CopyFromRecordset ..... В чем проблема ?. Хотя даже на других копах где офис 2003 Тоже самое не происходит. Хотя бы посоветуйте КАК сНЕСТИ ОФФИС - СО ВСЕМИ ПОТРОХАМИ

  Ответить  
 
 автор: Explorer   (08.11.2006 в 18:05)   личное сообщение
 
 

перекатать офис - не всегда помогает (точнее даже уж и не знаю когда имеет смысл его сносить)

просто проверьте ссылки на библиотеки в VBA_Editor - Tools>Referenses

  Ответить  
 
 автор: Andrew   (09.11.2006 в 06:17)
 
 

Да дело в том что со ссылками в референсесах все нормально.

  Ответить  
 
 автор: osmor   (09.11.2006 в 08:46)   личное сообщение
 
 

На одном из форумов нашел совет перерегистрить DAO360.DLL
Regsvr32.exe "C:\Program Files\Common Files\Microsoft
Shared\DAO\DAO360.DLL"

  Ответить  
 
 автор: Andrew   (09.11.2006 в 10:08)
 
 

Респект и УВАЖУ}{А !!!! СПАСИБО ВЕЛИЧАЙШЕЕ !!!! ЗАРАБОТАЛО !!!! после перерегистрации .
osmor - СПАСИБО !!! .

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