Здравствуйте, BOSS1999, Вы писали:
BOS>косяк какой то не знаю как он объясняется:
BOS>вообщем делал так — добавил COM референс Excel 5 Object Library
BOS>и соот-но использовал ее. лезла такая ошибка.
Ничего не понимаю.
В чё ты пишеш вообще? В VB или в VBA макросе Office?
Если ты пишеш в VB, то строчка
"Dim ExcelAppl As Excel.Application" у тебя компилироваться не должна, до те пор пока ты в ссылках "Microsoft Excel xx.x Object Libary" не подключишь!
Если в макросе, то если это Excel, то ничего подключать ненадо, т.к. всё подключено, иначе всё так ж как в VB.
Вообще, надо писать так:
Private Sub Print_Documents()
Dim ExcelAppl As Object
Set ExcelAppl = CreateObject("Excel.Application")
ExcelAppl.Workbooks.Open "F:\Document.xlt"
ExcelAppl.Visible = True
End Sub
...тогда ошибок быть не должно.
BOS> причем при просмотре Application в Object Browser показывалось что это интерфейс. А после того как изменил референс — указал в лоб, то опять таки при просмотре в Object Browser теперь уже Application как класс
BOS>ничего не понятно, но по крайней мере тепрь обеъет excel создается и открывается нормально шаблон.
Опять ничего не понимаю.
В Object Browser все интерфейсы это классы. Точнее CoClass'ы COM не показываются вообще, а только их Default Interface.
Вложенный ресурс, как файл шаблона ты Excel'у врядли скормишь напрямую, лучше на диск бинарник сохраняй и потом его имя подсовывай Excel'у -- ну и удаляй вконце. :)
PS: оформляй код тегами языка ([vb][/vb]), так читать удобнее.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
А вопрос ещё такой:почему, когда программно я работаю с базой с помощью библиотеки MS Ecxel 11.0 и одновременно запускаю другую таблицу или прямо эту же, возникает ошибка. С чем это связано?
Здравствуйте, Dmi3Kondakov, Вы писали:
DK>А вопрос ещё такой:почему, когда программно я работаю с базой с помощью библиотеки MS Ecxel 11.0 и одновременно запускаю другую таблицу или прямо эту же, возникает ошибка. С чем это связано?
Судя по всему, Excel не очень любит создавать дополнительные инстансы вызванные не счерез COM а запуском Excel.exe... Помнится он зависает, если есть экземпляр, созданый через COM, если запустить екзешник.
Получается, что единственным выходом будет использование dataadapter и всей этой байды? Есть ли какие-нибудь настройки, в которых можно заблокировать доступ к читаемой таблице или запретить создавать инстанс через com вне моей программы?