Toon posts:

[Visio2002]OLE & VBA

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer een willekeurig document te openen vanuit visio met een macro. Dit lukt als het om bv een word document gaat, maar niet met bv txt, jpg en gif.
De foutmelding is:
runtime error '432':
File name or class name not found during automation operation
Het uiteindelijkde doel is om de filenaam te specificeren in een custom property UserManual en de gebruiker de macro te laten draaien (dubbel klik of context menu).

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    Dim sel As Visio.Selection
    Set sel = ActiveWindow.Selection
    sel.IterationMode = visSelModeSkipSub

    If sel.Count <> 1 Then
        MsgBox "Select only one shape", vbCritical & vbOKOnly
    Else
        Dim s As Visio.Shape
        Set s = sel(1)
        Dim cellObj As Visio.Cell
        Dim DocObject As Object

        If s.CellExists("prop.UserManual", True) Then
            Set cellObj = s.Cells("prop.UserManual.value")
            Debug.Print s.Cells("prop.UserManual.value").Formula
'            Set DocObject = GetObject("J:\Digital\Satellites\Eutelsat_Satellite_fleet_mid2001.jpg")
'            Set DocObject = GetObject("F:\WimSDocuments\visio\PAS7\PAS7.doc")
'            Set DocObject = GetObject("F:\WimSDocuments\visio\PAS7\visio.txt")
            Set DocObject = GetObject("F:\WimSDocuments\visio\PAS7\Panamsat_Satellites_Polar_View2.gif")
            DocObject.Application.Visible = True
        End If
    End If
Iemand een idee

PS Zoeken hier op GOT en het internet brengt mij niet veel verder. De meeste zaken aangaande automation gaan de ander kant uit (open visio vanuit word of zo)

[ Voor 11% gewijzigd door Verwijderd op 25-05-2005 15:19 ]


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

OLE OLE, Office topics mogen tegenwoordig in Officesuites en -software dus SA -> OFF :P

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Vogens mij lukt het alleen met GetObject alleen met eenWorddocument, omdat voor deze extentie een automation handler aanwezig is ( namelijk Word ) en voor JPG niet.

Als het je alleen gaat om het openen van het bestand in de bijbehorende applicatie zoals ook gebeurd in de verkenner, is het het makkelijkst om de ShellExeute functie te gebruiken. Dit is geen standaard VBA functie, maar is met een Declare toe te voegen.

Voeg deze code toe aan je module ( buiten een functie )
Visual Basic:
1
2
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Const SW_NORMAL = 1


Door nu de volgende regel te gebruiken, kun je ieder bestand openen alsof je het dubbelklikte in de verkenner :
Visual Basic:
1
Call ShellExecute(0, "open", "J:\Digital\Satellites\Eutelsat_Satellite_fleet_mid2001.jpg", "", "", SW_NORMAL)



Tip : Als je "open" vervangt door "print", zal het bestand worden afgedrukt, indien dit wordt ondersteund.

Voor meer info over ShellExecute raad ik je aan om te Googlen.

[ Voor 5% gewijzigd door Verwijderd op 25-05-2005 15:27 ]


Verwijderd

Topicstarter
Dank u, werkt als een trein. Nu nog 'even' linken aan het contect menu of aan een dubbel-klik