Run-time error 1004

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

Run-time error 1004

Сообщение mar_val » 26.10.2005 (Ср) 18:52

Есть в VB6 проект, в форму вставлен объект-OLE, в нем открыт документ Excel. Пытаюсь создать фигуру
Код: Выделить всё
...
Set wSheet = OLE1.object.Workbooks(i).Sheets(1)
Set tRange = wSheet.Range("A1")
...
wSheet.Shapes.AddShape msoShapeDiamond, tRange.Left, tRange.Top, tRange.Width, tRange.Height

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

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.10.2005 (Ср) 19:11

А чему у нас равна msoShapeDiamond?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

mar_val
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 26.08.2005 (Пт) 21:32

Сообщение mar_val » 26.10.2005 (Ср) 19:40

msoShapeDiamond = 4
(отдельно определял, значение в Excel-е посмотрел)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.10.2005 (Ср) 21:12

А координаты все чему равны?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

mar_val
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 26.08.2005 (Пт) 21:32

Сообщение mar_val » 27.10.2005 (Чт) 19:20

GSerg
Судя по дебагеру координаты это Variant/Double значения (height=12,7; Left=490,5; Top=25,5; Width=15,75)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.10.2005 (Чт) 21:23

Тада не знаю, но объект OLE вообще вещь в себе ещё та...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

mar_val
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 26.08.2005 (Пт) 21:32

Сообщение mar_val » 28.10.2005 (Пт) 15:31

Так что же делать?

mar_val
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 26.08.2005 (Пт) 21:32

Сообщение mar_val » 30.10.2005 (Вс) 17:13

На всякий случай, решил более полный код выложить. Вдруг поможет в решении проблемы...

Код: Выделить всё
...
        Dim wSheet As Object
        Dim Excel As Object
        Dim i As Integer
        Set Excel = OLE1.object.Application
        For i = 1 To Excel.Workbooks.Count
            If Excel.Workbooks.Item(i).Name = wObjectName Then
                Set wSheet = Excel.Workbooks.Item(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
       
        If tProc.Duration = 0 Then
            Dim tRange As Object, tShape As Object
            Set tRange = wSheet.Range(getCellAdressByDate(tProc.StartDate))
            'Set tShape = OLE1.object.Application.Workbooks(1).Sheets(1).Shapes.AddShape(4, 1, 1, 1, 1)
            wSheet.Shapes.AddShape msoShapeDiamond, tRange.Left, tRange.Top, tRange.Width, tRange.Height
...


Примечания:
Почему-то, если запустить Excel, создать там документ, в нем какой-нибудь макрос, и остановить выполнение макроса (напр. брейкпойнтом), то фигура (Shape) нормально создается... Сделал предположение, что неправильно инициализирую wSheet, пробовал иначе, например так:
Код: Выделить всё
Set wSheet = OLE1.object.Worksheets(1)

но результат всё тот же...

Пожалуйста подскажите что может быть неправильно в коде, или где поискать ответа на мой вопрос?


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 36

    TopList