Две проблемы с OLE (scroll и shapes)
От: mar_val Россия  
Дата: 31.10.05 11:22
Оценка:
Есть проект VB 6.0, на форме находится контрол OLE, в нем открывается файл Excel. Требуется:
1. Произвести скролл, т.е. прокрутку листа Excel внутри этого контрола.
Пробовал использовать функции VBA.Excel следующим образом:
' Раз
OLE1.object.Windows(1).SmallScroll toRight:=1
' Два
OLE1.object.Windows(1).ScrollColumn = HScroll1.Value
' Три
OLE1.DoVerb
OLE1.object.Windows(1).Panes(1).SmallScroll ToRight:=HScroll1.Value - wLeftPosition
OLE1.Close
' Четыре
OLE1.Left = -HScroll1.Value * 300

Из вышеприведенного варианты 1 и 2 не работают вовсе (т.е. значение ScrollColumn изменяется и функция скрола отрабатывает без ошибки, но в OLE-объекте отображается всё тот же документ без сдвигов). Вариант 3 условно работает, но по понятным причинам не устраивает. Вариант 4 видится достаточно работоспособным, но возникает проблема: в компоненте OLE есть некое "внутреннее окно" отображающее какую-то часть документа Excel, так вот при перемещении самого контейнера, рано или поздно доходим до границы этого внутреннего окна, а пользователь должен иметь возможность полноценно перемещаться по всему документу. По сути мне было бы достаточно научиться изменять параметры этого окна, если знаете/скажете как, буду очень признателен!!!

2. Вставить в документ фигуру (Shape)
При выполнении следующего кода
For i = 1 To Excel.Workbooks.Count
    If Excel.Workbooks.Item(i).Name = wObjectName Then
        Set wSheet = Excel.Workbooks(i).Sheets(1)
        Exit For
    End If
Next i
If wSheet Is Nothing Then
    MsgBox "Error! Fatal error 131. Can't access the source file application"
    Exit Sub
End If

Dim tRange As Object
Dim tShape As Object
Set tRange = wSheet.Range(getCellAdressByDate(tProc.StartDate))
Set tShape = wSheet.Shapes.AddShape msoShapeDiamond, tRange.Left, tRange.Top, tRange.Width, tRange.Height

в последней строчке возникает ошибка:

Run-time error 1004: Ошибка определенная Объектом или Приложением

Не понимаю, что не так и как всё-таки добавить в этот документ фигуру. Буду исключительно признателен любой помощи!
Всё это Рок-н-Ролл...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.