Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Beliebige Datei öffnen

Beliebige Datei öffnen
17.11.2015 13:01:59
muehli
Guten Tag zusammen,
ich versuche gerade per VBA eine x-beliebige zu öffnen.
Ich bin das Ganze so angegangen:
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 Declare Function GetDesktopWindow Lib "user32" () As Long

Private Sub btn_ETOproject_Click()
Pfad = Range("S10").Value
rc = ShellExecute(0, "open", Pfad, "", "", SW_HIDE)
End Sub
In Range S10 steht:
C:\Tools\ETO Project.xlsm
irgendwie funktioniert es aber nicht.
Kann mir jemand helfen?
Freundliche Grüße
muehli

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beliebige Datei öffnen
17.11.2015 13:23:22
Herbert
Hallo,
hast Du es schon mal mit dem Datei-Dialog versucht:
   Dim vFile As Variant
'* Dialog zum öffnen einer Datei
vFile = Application.GetOpenFilename
If vFile = False Then Exit Sub
Workbooks.Open vFile
Ansonsten solltest Du anstatt Deines "Private Declare Function..." den folgenden Code nehmen:
#If VBA7 Or Win64 Then
Private Declare PtrSafe 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
#Else
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
#End If
#If VBA7 Or Win64 Then
Private Declare PtrSafe Function GetDesktopWindow Lib "user32" () As Long
#Else
Private Declare Function GetDesktopWindow Lib "user32" () As Long
#End If
Servus

Anzeige
AW: Beliebige Datei öffnen
17.11.2015 14:11:12
muehli
Hallo Herbert,
vielen Dank für die schnelle Antwort!
mit Workbooks.Open vFile kann man nur EXCEL-Files öffnen, wenn ich das richtig verstanden habe.
Reicht für meine Anwengung auch zu 80%.
Ich nehme an, dass dann die zweite Variante ein beliebiges Dateiformat öffnet, oder?
Freundliche Grüße und danke
Muehli

Anzeige
AW: Beliebige Datei öffnen
17.11.2015 21:27:17
Uduuh
Hallo,
versuchs mal mit
Sub yyy ()
dim myshell as object
set myshell = createobject("wscript.shell")
myshell.run chr(34) & Range("S10").Value & chr(43)
End Sub
Gruß aus’m Pott
Udo

Anzeige
AW: Beliebige Datei öffnen
18.11.2015 07:53:47
muehli
Hi Udo,
danke für die Antwort.
Habe es gerade mit deinem Code versucht. Aber die Methode ist "fehlgeschlagen".
Freundliche Grüße
Muehli

AW: Beliebige Datei öffnen
21.11.2015 17:54:36
Michael
Hi zusammen,
noch ein Versuch: Shell öffnet PROGRAMME, aber man kann auch DATEIN starten, wobei Windows das jeweils passende Programm dafür mit öffnet, also bei .DOCX eben word usw.
Dazu muß man dem Shell das "cmd" voranstellen, das ist der "Kommandoprozessor".
Das Makro:
Option Explicit
Sub aufrufen()
Dim i&
Dim ergebnis
Dim aufruf As String
For i = 2 To 5
aufruf = "cmd /c " & Range("B" & i).Value
ergebnis = Shell(aufruf, vbNormalFocus)
MsgBox "Das war Nr. " & i & " Ergebnis: " & ergebnis
Next
End Sub

Ich habe mal getestet mit:
B2: C:\Windows\System32\calc.exe          das öffnet den Taschenrechner
B3: C:\A_Herber\BlaBla.txt                das öffnet den Editor mit der Textdatei
B4: C:\A_Herber\Formel_Werte.GIF          das öffnet (leider) den IE mit dem Bild
B5: C:\A_Herber\PDF-Test.pdf              das öffnet den Acrobat Reader samt PDF

Vielleicht hilft das ja weiter.
Schöne Grüße,
Michael
P.S.: ein Umweg über Batch-Datei wurde hier beschrieben:
https://www.herber.de/forum/archiv/720to724/721183_cmd_befehle_mit_vba_ausfuehren.html
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Beliebige Datei in Excel mit VBA öffnen


Schritt-für-Schritt-Anleitung

Um eine beliebige Datei mit VBA in Excel zu öffnen, kannst du verschiedene Methoden verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke im Menü auf Einfügen > Modul.

  3. Code einfügen: Füge den folgenden Code in das Modul ein:

    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 Sub btn_ETOproject_Click()
       Dim Pfad As String
       Pfad = Range("S10").Value
       ShellExecute 0, "open", Pfad, vbNullString, vbNullString, vbHide
    End Sub
  4. Dateipfad eingeben: Stelle sicher, dass der Pfad zur Datei in Zelle S10 eingetragen ist.

  5. Makro ausführen: Führe das Makro aus, um die Datei zu öffnen.


Häufige Fehler und Lösungen

  • Fehler: "Die Methode ist fehlgeschlagen"

    • Überprüfe, ob der Pfad in Zelle S10 korrekt ist. Achte darauf, dass die Datei existiert und der Pfad keine Tippfehler enthält.
  • Fehler: "Datei nicht gefunden"

    • Stelle sicher, dass die Datei im angegebenen Verzeichnis liegt. Überprüfe auch, ob die Dateierweiterung korrekt ist.
  • ShellExecute funktioniert nicht

    • Vergewissere dich, dass du den richtigen Code für deine Excel-Version verwendest. Verwende den PtrSafe-Schlüsselwort für 64-Bit-Versionen.

Alternative Methoden

Falls du eine andere Methode ausprobieren möchtest, kannst du den Datei-Dialog verwenden:

Sub DateiOeffnen()
    Dim vFile As Variant
    vFile = Application.GetOpenFilename
    If vFile = False Then Exit Sub
    Workbooks.Open vFile
End Sub

Diese Methode eignet sich gut, wenn du eine Excel-Datei öffnen möchtest. Für andere Dateiformate solltest du die vorherige Methode verwenden.


Praktische Beispiele

Hier sind einige praktische Beispiele, um verschiedene Dateitypen zu öffnen:

  1. Öffnen einer EXCEL-Datei:

    Workbooks.Open "C:\Pfad\zu\deiner\Datei.xlsx"
  2. Öffnen eines Textdokuments:

    Shell "notepad.exe C:\Pfad\zu\deiner\Datei.txt"
  3. Öffnen eines Bildes:

    Shell "C:\Pfad\zu\deinem\Bild.jpg"

Diese Beispiele zeigen, wie einfach es ist, verschiedene Dateiformate mit VBA zu öffnen.


Tipps für Profis

  • Verwende ShellExecute für verschiedene Dateitypen: Mit ShellExecute kannst du beliebige Dateien öffnen und Windows das passende Programm dafür auswählen lassen.

  • Batch-Dateien nutzen: Wenn du mehrere Dateien gleichzeitig öffnen möchtest, erstelle eine Batch-Datei und führe diese über VBA aus.

  • Parameter anpassen: Experimentiere mit den Parametern in ShellExecute, um das Verhalten beim Öffnen der Datei zu steuern (z.B. Sichtbarkeit).


FAQ: Häufige Fragen

1. Kann ich eine DLL-Datei mit VBA öffnen?
Nein, DLL-Dateien sind keine ausführbaren Dateien. Du kannst sie jedoch in deinem VBA-Projekt verwenden, um Funktionen zu deklarieren.

2. Welche Excel-Version benötige ich für diese Methoden?
Die beschriebenen Methoden funktionieren in Excel 2010 und neueren Versionen. Achte darauf, den Code für 32-Bit oder 64-Bit Excel entsprechend anzupassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige