# Anzeigen einer Excel Datei aus VB heraus



## Trymon (15. Mai 2003)

Hallo,

ich möchte eine Excel Datei über VB 6 öffnen und diese in Excel XP anzeigen lassen. Leider öffnet mir VB nur Excel und von der Datei ist nichts zu sehen. Könnte mir jemand den richtigen Befehl dafür nennen? 

MfG
Trymon


----------



## Sinac (15. Mai 2003)

kp wie du das jetzt gemacht hast, aber normal geht das über ShellExecute.


----------



## Trymon (15. Mai 2003)

Ganz genau so habe ich das gemacht....aus der Eingabeaufforderung von Windows geht es auch ohne Probleme aber sobald ich es im VB drinnen habe öffnet sich nur Excel ohne die Datei.

Edit: Ich habe mich da mal dahinter gesetzt und bin schon fast am Ziel aber nur fast.

öffnen = Shell("C:\Programme\Microsoft Office\Office10\excel.exe " & App.Path & "\Angebot.xls", 3)

Wie erkläre ich meinem Programm jetzt nun das es nicht d:\Eigene.xls heißt sondern D:\Eigene Dateien\Angebot Neu\Angebot.xls?


----------



## Sinac (15. Mai 2003)

Öhm, ich kann dir nicht folgen...


----------



## Trymon (15. Mai 2003)

Die Datei liegt in D:\Eigene Dateien\Angebot neu\Angebot.xls
Wenn ich das aber so aufrufe dann wird als Dateiname D:\Eigene übergeben. Die Leerstelle wird also als Ende angesehen und der Rest wird nicht an Excel übergeben. Ich hoffe nun kannst du mir besser folgen.


----------



## Sinac (15. Mai 2003)

Wie wärs mit
öffnen = Shell("C:\Programme\Microsoft Office\Office10\excel.exe D:\Eigene Dateien\Angebot neu\Angebot.xls", 3)


----------



## Trymon (15. Mai 2003)

Würde ich ja machen wenn der Pfad nicht wariabel wäre...ist halt nur bei mir gerade in dem Ordner aber das Programm an sich kann dann auch an völlig andrer Stelle stehen.


----------



## Sinac (15. Mai 2003)

Woher bekommst du denn den Pfad?
Gibt der User den ein oder über nen Dialog oder was?

Kann ShellExecute nicht auch einfach die Excel-Tabelle öffnen,
ohne Excel mit der Datei als Parameter zu starten?
also in C geht das...

Infos über ShellExecute findest du Hier!


----------



## Trymon (15. Mai 2003)

Die Datei befindet sich im selben Verzeichniss wie das Programm. Deshalb arbeite ich mit App.Path.


----------



## Sinac (15. Mai 2003)

Dann Probier mal 
ShellExecute(App.Path & "\Angebot.xls",3)

eigentlich sollte ShellExeute auch Dokumente mit der
dazugehörigen Application öffnen können.


----------



## Trymon (15. Mai 2003)

Wenn ich das so mache druckt mir das shellexecute das gleich aus. Habe auch die Einträge erweitert, wie im vb Archiv aber das mag auch nicht so richtig.

Edit: Nun bin ich wieder genau so weit vie vorher. D:\Eigene.xls wurde nicht gefunden.


----------



## Sinac (15. Mai 2003)

Hmm... da bin ich dann auch etwas überfragt, in C ist das alles
kein Problem! Frag am besten mal Lirion oder so!

Greetz...
Sinac


----------



## Trymon (15. Mai 2003)

ja....danke für die Hilfe


----------



## Dario Linsky (15. Mai 2003)

ShellExecute ist schon ganz richtig, damit geht das auch.

Erstmal fügst Du ein neues Modul für die Deklarationen der API-Funktionen in Dein Projekt ein, in dem Du die ShellExecute-Funktion importierst:

```
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
```
Dann setzt Du einfach noch einen Verweis auf die Microsoft Scripting Runtime, damit kannst Du einfach überprüfen, ob die Datei existiert.
Die Prozedur zum Aufrufen der Excel-Datei sieht dann so aus:

```
'Variablen und Objekte deklarieren
Dim fso As FileSystemObject
'Objekte erzeugen
Set fso = New FileSystemObject
'Prüfen, ob die Excel-Datei existiert
If fso.FileExists("C:\eigene.xls") Then
    ShellExecute Me.hwnd, "open", "C:\eigene.xls", "", "", 0
Else
    MsgBox "Datei nicht gefunden.", vbExclamation, "Fehler"
End If
'Objekte wieder freigeben
Set fso = Nothing
```

Die andere Möglichkeit wäre, Excel selbst über eine OLE-Schnittstelle in Deinem Projekt einzubinden und darüber dann die Datei zu öffnen - aber das dürfte etwas zu kompliziert sein.


----------



## Trymon (15. Mai 2003)

Danke das hat mir schon mal weiter geholfen. Jetzt habe ich nur noch das Problem das sich Excel sofort wieder schließt. So schnell kann niemand lesen wie das wieder zu ist.


----------



## Dario Linsky (15. Mai 2003)

Bei mir bleibt das auf, ich hab aber auch Office 2000. Das könnte evtl. mit Benutzerrechten oder anderen Systemeinstellungen zu tun haben. Normalerweise sollte Excel sich da nicht direkt wieder schliessen.

Kurz: Da weiss ich auch nicht weiter, das ist aber auch definitiv nicht normal.


----------



## Trymon (15. Mai 2003)

Ich habe Ofice XP und als Admin habe ich mit den Rechen eigentlich auch kein Problem. Merkwürdig aber wäre ja nicht normal wenn es normal laufen würde.


----------

