Avatar billede stefanfuglsang Juniormester
23. juni 2005 - 09:43 Der er 1 løsning

VBA: Returnere korrekt type ved activeX/OLE-objekter

Jeg har en MSGraph i et dokument, men jeg kan ikke finde ud af at referere til den i VBA (det går fint, hvis jeg indsætter en ny med CreateObject, men jeg ønsker at ændre en eksisterende graf).

Jeg har forsøgt nedenstående, men får meddelelsen:
"Class does not support Automation or does not support expected interface"


Dim Curve As Graph.Application

Sub GetCurve()
    Dim s As InlineShape
    On Error GoTo ErrorLabel
    For Each s In ActiveDocument.InlineShapes
        If s.AlternativeText = "Curve1" Then
            Set Curve = s.OLEFormat.Object
            Exit For
        End If
    Next
    Exit Sub
ErrorLabel:
    'Display error message (with possibillity to copy message to clipboard):
    InputBox Error, "Fejl", Error
End Sub
Avatar billede stefanfuglsang Juniormester
24. juni 2005 - 11:11 #1
Jeg har fundet ud af det:
1) Curve skal være Object ("late binding")
2) OLE-objektet skal aktiveres
3) Curve skal sættes lig med .Oleformat.Object
4) Diagrammet refereres gennem Curve.Application

Dim Curve As Object
Sub GetCurve()
    Dim ils As InlineShape
    On Error GoTo ErrorLabel
   
    For Each ils In ActiveDocument.InlineShapes
        If ils.AlternativeText = "Curve1" Then
            ils.OLEFormat.Activate
            Set Curve = ils.OLEFormat.Object
            ' anvend objektet:
            Curve.Application.Chart.Width = 500
            Exit For
        End If
    Next
    Exit Sub
ErrorLabel:
    'Display error message (with possibilty to copy message to clipboard
    InputBox Error, "Fejl", Error
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Tag et kursus i Word og øg effektiviteten

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester