Хочу управлять офисными приложениями на VB6. GetOpenFileName открываю файл.
CreateObject("Excel.Application") открываю excel
objExcel.Workbooks.Open (OpenFile.lpstrFile) через myCell.Range. могу менять свойства и содержимое ячеек. А вот как изменить сoбытие Worksheet_SelectionChange
не знаю. Хочу при наступлении события сохранить адрес выделенного диапазона в переменной чтобы обработать данные и вставить в другой документ. В VBA просто в ProjectExplorer щелчок на Лист, и на Worksheet, а в VB6 пока не знаю. Прошу помощи.
Здравствуйте, tyt, Вы писали:
tyt> А вот как изменить сoбытие Worksheet_SelectionChange
tyt>не знаю. Хочу при наступлении события сохранить адрес выделенного диапазона в переменной чтобы обработать данные и вставить в другой документ.
Ну вопервых неясно, зачем тебе CreateObject, когда есть References?
Вот когда запользуешь References, тогда надо будет просто в форме (или ином модуле класса) объявить модульную (сверху, под Option Explicit) переменную.
Private WithEvents objWS as Excel.Worksheet
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Здравствуйте, ZAMUNDA, c интерессом прочитал Ваш совет. Програмирую на ВБ6 уже 3 дня, и очень мало его знаю. Попробую повозиться с References но поражает мощь для офиса
lReturn = GetOpenFileName(OpenFile)
If lReturn <> 0 Then Set objExcel = CreateObject("Excel.Application"): _
'objExcel.Workbooks.Add
If lReturn <> 0 Then objExcel.Workbooks.Open (OpenFile.lpstrFile): _
objExcel.Visible = True
три строчки и открыли файл в Excel еще две открыли Word взять Workbooks(1) и вытащить из неё Worksheet легко, и это пол страницы кода. Должен же быть доступ к событиям и этого Worksheet'а.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, ZAMUNDA, c интерессом прочитал Ваш совет. Програмирую на ВБ6 уже 3 дня, и очень мало его знаю. Попробую повозиться с References но поражает мощь для офиса
Чего-то мало вы с References возились. Они такие же как в VBA только в другом месте Project->References.
Вот например, создаю "Standart Exe" и подключаю "Microsoft Excel x.x Object Libary".
Option Explicit
Private WithEvents objWS As Excel.Worksheet
Private Sub Form_load()
' ... ... ...
Dim lReturn As Long
Dim objExcel As Excel.Application
lReturn = GetOpenFilename(OpenFile)
If lReturn = 0& Then
Me.Cls
Me.Print "Can't open file!"
Exit Sub
End If
Set objExcel = New Excel.Application
Set objWS = objExcel.Workbooks.Open(OpenFile.lpstrFile).Worksheets(1)
objExcel.Visible = True
Set objExcel = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim objWB As Excel.Workbook
Set objWB = objWS.Parent
Set objWS = Nothing
objWB.Close False
Set objWB = Nothing
End Sub
Private Sub objWS_SelectionChange(ByVal Target As Excel.Range)
Me.Cls
Me.Print Target.Address(False, False, xlA1)
End Sub
Не проверял, т.к. лень с GetOpenFileName возиться...
А>три строчки и открыли файл в Excel еще две открыли Word взять Workbooks(1) и вытащить из неё Worksheet легко, и это пол страницы кода.
Открывается книга одной строчкой, а остальное можно только один раз делать, при старте приложения.
И кстати в C++ это ещё больше строчек -- там надо ещё HRESULT анализировать и создавть/уничтожать COM объекты ручками. Так что зря вы ругаетесь.
А>Должен же быть доступ к событиям и этого Worksheet'а.
Он есть -- смотрите пример мой выше.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков