"We are back" « oc.at

VB : Files Öffnen

Vivo 04.01.2003 - 20:56 586 4
Posts

Vivo

Dreamworker
Avatar
Registered: May 2002
Location: Tal der Könige
Posts: 1478
Hio,

hab wiederma eine kleine VB - Frage :

Wie öffne ich ein File mit dem Windows-Standardprogramm über VB ...
Nur kurz zur Verdeutlichung : Ich sage ich möchte das File 'hallo.doc' öffnen und das vb-prog öffnet das dann zb. im Word ...

tia Vivo

btw. bitte kein g0t google antorten auch wenns sauleicht is, hab grad bisschen nen stress und soll dieses Prog auch noch nebenbei machen und hab jetzt in der Eile nichts gefunden ...

JC

Vereinsmitglied
Disruptor
Avatar
Registered: Feb 2001
Location: Katratzi
Posts: 9066
Du musst das das File, dass du über den Open-Dialog (CommonDialog-Control) auswählst, mit der API-Anweisung ShellExecute ausführen. Da kann du angeben, dass das File mit dem zugehörigen Programm zu öffnen ist. Des weiteren kannst du hier auch verschiedene Parameter übergeben.

Mehr dazu findest in der MSDN-Library. :)

Vivo

Dreamworker
Avatar
Registered: May 2002
Location: Tal der Könige
Posts: 1478
Danke für deinen Tip, aber da ich es nur für Office Dokumente brauche (was ich zugegebenermasen nicht dazugepostet hab) hab ich es folgendermasen gelöst (in dem Fall mit Access Projekt) :
Code:
' Access-Objekt Variable definieren
Dim acApp As Object
Dim sAccessFilename As String

sAccessFilename = App.Path + "database.mdb"


'Access-Objekt erzeugen
'Set acApp = CreateObject("Access.Application")
Set acApp = New access.Application

With acApp
  ' Access anzeigen
  .Application.Visible = True
  .Application.OpenCurrentDatabase sAccessFilename

  ' Access-Dokument laden und anzeigen
  '.Documents.Open sAccessFilename

End With
Also das is nur für den Fall das dies wiedermal jemand braucht. Geht mit Word, Excel, etc. fast gleich ...

NG Vivo

JC

Vereinsmitglied
Disruptor
Avatar
Registered: Feb 2001
Location: Katratzi
Posts: 9066
So ist das aber recht ineffizient. What 'bout this? Der Code ist nur aus einer meiner Klassen rauskopiert, sollte sich aber so ohne weiteres in ein Modul einfügen lassen.
Code:
Private 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

Private Const SW_SHOWMINIMIZED = 2
Private Const SW_SHOWMAXIMIZED = 3
Private Const SW_SHOWNOACTIVATE = 4
Private Const SW_SHOW = 5

Public Enum udeWinDisplayState
   [_Hidden_LB_WinDisplay] = 2
   Minimized = SW_SHOWMINIMIZED
   Maximized = SW_SHOWMAXIMIZED
   NormalNoActivate = SW_SHOWNOACTIVATE
   NormalAndActivate = SW_SHOW
   [_Hidden_UB_WinDisplay] = 5
End Enum

Public Sub OpenWith0wner(hWnd As Long, FileName As String, WindowsState _
  As udeWinDisplayState)
    Dim lRetVal As Long

    On Error Resume Next
    If WindowsState < [_Hidden_LB_WinDisplay] Or _
      WindowsState > [_Hidden_UB_WinDisplay] Then _
      WindowsState = NormalAndActivate
    lRetVal = ShellExecute(hWnd, "Open", FileName, 0&, 0&, WindowsState)

    'Hier ErrorHandling nicht vergessen.
End Sub
Bearbeitet von JC am 05.01.2003, 14:55 (spelling)

Vivo

Dreamworker
Avatar
Registered: May 2002
Location: Tal der Könige
Posts: 1478
Is cool ... den werd ich gleichma auschecken und notieren ...
Ist ein bisschen vielseitiger als mein Codausschnitt :D ...

thx
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz