OLE и Excel

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
shurik58
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 12.03.2008 (Ср) 17:17

OLE и Excel

Сообщение shurik58 » 12.03.2008 (Ср) 17:20

Вопрос следующий.
Есть форма. На ней OLE Сontrol.
Как в него загрузить произвольный файл Excel.
Как перехватить событие в OLE на конкретном листе, например
изменение значения в ячейке А1.
Без OLE все работает, но хотелось бы открывать документ Excel
именно в форме, а не в отдельном окне.
т.е.
OLE1.CreateEmbed "", "Excel.Sheet.8"
OLE1.DoVerb vbOLEUIActivate
OLE1.SizeMode = 1
а дальше стопор:
strFileName = "111.xls"
OLE1.object.SourceDoc = strFileName - и сообщение - ошибка 438 -
Объект не поддерживает метод или свойство.
Пробовал
OLE1.CreateEmbed strFileName , "Excel.Sheet.8"
Результат тот же!
Помогите, кто может.
Спасибо.
Спасибо и успехов!

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 12.03.2008 (Ср) 19:23

По поводу OLE1.CreateEmbed strFileName, "Excel.Sheet.8" -- всё должно работать. Проверь, что у тебя в strFileName. Там должен быть ПОЛНЫЙ путь к файлу.

По поводу отслеживания изменений. Подключи Microsoft Excel xx Object Library. Далее попробуй так:

Код: Выделить всё

Private ea As New Excel.Application
Private WithEvents ws As Excel.Worksheet

Private Sub Form_Load()
    Dim strFileName As String
    strFileName = "C:/1.xls"
    OLE1.CreateEmbed strFileName, "Excel.Sheet.8"
    Set ea = OLE1.object.Application
    Set ws = ea.Workbooks(1).Worksheets(1)
End Sub

Private Sub ws_SelectionChange(ByVal Target As Excel.Range)
    MsgBox Target.Address
End Sub
Salus populi suprema lex

shurik58
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 12.03.2008 (Ср) 17:17

Сообщение shurik58 » 13.03.2008 (Чт) 10:57

Спасибо!
С событиями понял!
Но путь у меня полный, через CommonDialog.
Пробовал и с коротким и с полным путем.
OLE1.CreateLink strFileName работает!
И без указания имени файла OLE1.CreateEmbed "", "Excel.Sheet.8" работает, но как туда засунуть
требуемый файл?
Библиотека подключена Excel 11(Of 2003).
Может здесь собака?
Или VB требует апгрейта?
Спасибо и успехов!

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 13.03.2008 (Чт) 11:29

У меня тоже Excel 11. Всё работает. Если не разберешься, то как приду домой выложу пример.
Salus populi suprema lex

shurik58
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 12.03.2008 (Ср) 17:17

Сообщение shurik58 » 13.03.2008 (Чт) 11:53

Кажется почти разобрался!?
Все работает, если в пути к файлу нет
русских букв?
Например: D:/1.xls - работает
D:/fff/1.xls - работает, а
D:/новая папка/1.xls - нет!
Что делать, как заставить пользователя т. Машу
перемещать файл в корень?
Или в программе самому копировать файл в корень,
загружать, а после отработки удалять?
Исходные данные могут храниться и на удаленных
машинах!
Еше раз спасибо.
Спасибо и успехов!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot, Yandex-бот и гости: 16

    TopList