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

Forumthread: Per VBA Datei öffnen

Per VBA Datei öffnen
04.03.2022 17:07:07
Günther
Hallo in die Expertenrunde,
ich habe eine kleine Frage zu dem Öffnen einer Datei per VBA mittels SHELL und CMD unter der Rahmenbedingung, dass der Dateiname ein & enthält.

shell "cmd /C ""C:\temp\A und B.pdf""" 'funktioniert
shell "cmd /C ""C:\temp\A & B.pdf""" 'funktioniert nicht
Gibt es einen Weg, dies ohne voriges Umbenennen der Datei zu lösen? Wenn ja, wie?
Danke im Voraus für alle Rückmeldungen.
Grüße
Günther
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per VBA Datei öffnen
05.03.2022 08:13:01
Peter
Aus anderen Zusammenhängen kenne ich, dass man manchmal das "&" verdoppeln muss! Teste mal!
AW: Per VBA Datei öffnen
04.03.2022 17:25:33
Nepumuk
Hallo Günther,
versuch es so:

Option Explicit
Private Declare PtrSafe Function ShellExecuteA Lib "shell32.dll" ( _
ByVal hwnd As LongPtr, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As LongPtr
Private Const SW_MAXIMIZE As Long = 3
Public Sub Test()
ShellExecuteA 0, "OPEN", "C:\temp\A & B.pdf", vbNullString, vbNullString, SW_MAXIMIZE
End Sub
Gruß
Nepumuk
Anzeige
AW: Per VBA Datei öffnen
04.03.2022 22:06:58
Günther
Danke Nepumuk - funktioniert bestens - es ist immer ein Vergnügen, vom Profi zu lernen ...
Grüße
Günther
AW: Per VBA Datei öffnen
06.03.2022 15:36:44
Günther
Hallo Nepumuk,
ich habe mich leider zu früh gefreut :-(
Die Lösung mit ShellExecuteA lässt sich zwar von &-Zeichen nicht beirren, dafür werden aber Unicode-Zeichen im Dateinamen nicht unterstützt.
(Mein bevorzugtes Unicode-Testzeichen ist ≤ oder ≥ .)
Selbiges ist wiederum für die Shell/CMD-Variante kein Problem.
Sollte ein Dateiname aber &-Zeichen UND Unicode-Zeichen beinhalten, geht keine der beiden Varianten ... :-(
Kennst Du noch eine Alternative?
Viuele Grüße und Danke
Günther
Anzeige
AW: Per VBA Datei öffnen
06.03.2022 17:04:58
Nepumuk
Hallo Günther,
dann versuch es so:

Option Explicit
Private Declare PtrSafe Function ShellExecuteW Lib "shell32.dll" ( _
ByVal hwnd As LongPtr, _
ByVal lpOperation As LongPtr, _
ByVal lpFile As LongPtr, _
ByVal lpParameters As LongPtr, _
ByVal lpDirectory As LongPtr, _
ByVal nShowCmd As Long) As LongPtr
Private Const SW_MAXIMIZE As Long = 3
Public Sub Test()
Dim strFilename As String
strFilename = Dir("C:\temp\*.pdf")
ShellExecuteW 0, StrPtr("OPEN"), StrPtr("C:\temp\Test" & ChrW$(&H2264) & ".pdf"), 0, 0, SW_MAXIMIZE
End Sub
Meine Testdatei hat den Namen: Test≤.pdf
Gruß
Nepumuk
Anzeige
AW: Per VBA Datei öffnen
07.03.2022 09:25:15
Günther
Hallo Nepumuk,
Danke Dir - funktioniert super!
Grüße Günther
AW: Per VBA Datei öffnen
06.03.2022 17:31:30
Anton
Hallo Günther ,
probier es so:

Sub b()
  Dim pfad As String  
  pfad = Range("A1")  'Pfad in Zelle A1 speichern
  CreateObject("Shell.Application").ShellExecute pfad, "", "", "open", 1
End Sub  

mfg Anton
Anzeige
AW: Per VBA Datei öffnen
07.03.2022 09:24:07
Günther
Hallo Anton,
Danke Dir - funktioniert super!
Grüße Günther
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Dateien mit VBA in Excel öffnen


Schritt-für-Schritt-Anleitung

  1. Öffnen des VBA-Editors: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Einfügen eines Moduls: Rechtsklicke im Projektfenster auf „VBAProject (DeineDatei.xlsm)“ und wähle Einfügen > Modul.
  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Option Explicit
    Private Declare PtrSafe Function ShellExecuteA Lib "shell32.dll" ( _
       ByVal hwnd As LongPtr, _
       ByVal lpOperation As String, _
       ByVal lpFile As String, _
       ByVal lpParameters As String, _
       ByVal lpDirectory As String, _
       ByVal nShowCmd As Long) As LongPtr
    Private Const SW_MAXIMIZE As Long = 3
    
    Public Sub DateiÖffnen()
       ShellExecuteA 0, "OPEN", "C:\temp\A & B.pdf", vbNullString, vbNullString, SW_MAXIMIZE
    End Sub
  4. Anpassen des Dateipfades: Ersetze C:\temp\A & B.pdf mit dem Pfad und Dateinamen, den du öffnen möchtest.
  5. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.

Häufige Fehler und Lösungen

  • Fehler bei verbotenen Zeichen: Wenn der Dateiname ein &-Zeichen enthält, musst du es möglicherweise verdoppeln. Teste den Namen als A && B.pdf.

  • Unicode-Zeichen: Wenn du Unicode-Zeichen wie ≤ oder ≥ im Dateinamen verwenden möchtest, benutze die ShellExecuteW-Funktion. Beispiel:

    Private Declare PtrSafe Function ShellExecuteW Lib "shell32.dll" ( _
       ByVal hwnd As LongPtr, _
       ByVal lpOperation As LongPtr, _
       ByVal lpFile As LongPtr, _
       ByVal lpParameters As LongPtr, _
       ByVal lpDirectory As LongPtr, _
       ByVal nShowCmd As Long) As LongPtr

Alternative Methoden

  1. Datei öffnen mit CreateObject:

    Sub DateiÖffnenMitShell()
       Dim pfad As String
       pfad = Range("A1") ' Pfad in Zelle A1 speichern
       CreateObject("Shell.Application").ShellExecute pfad, "", "", "open", 1
    End Sub
  2. Access VBA: Wenn du Access verwendest, kannst du mit ähnlichem Code Dateien öffnen. Verwende die DoCmd-Funktion, um beliebige Dateien zu finden und zu öffnen.


Praktische Beispiele

  • Öffnen einer PDF-Datei:

    Public Sub PDFÖffnen()
       Shell "cmd /C ""C:\temp\deine_datei.pdf"""
    End Sub
  • Öffnen einer DLL-Datei:

    Public Sub DLLÖffnen()
       ShellExecuteW 0, StrPtr("OPEN"), StrPtr("C:\temp\deine_datei.dll"), 0, 0, SW_MAXIMIZE
    End Sub

Tipps für Profis

  • Verwende Variablen: Um den Code flexibler zu gestalten, speichere Dateipfade in Variablen.

  • Fehlerbehandlung: Implementiere On Error GoTo für eine bessere Kontrolle bei Fehlern.

  • Testzeichen: Achte auf die korrekte Handhabung von Testzeichen, um sicherzustellen, dass die Datei ohne Probleme geöffnet wird.


FAQ: Häufige Fragen

1. Wie kann ich eine Excel-Datei über VBA öffnen?
Du kannst eine Excel-Datei öffnen, indem du Workbooks.Open "Pfad\zur\Datei.xlsx" verwendest.

2. Unterstützt VBA alle Dateiformate?
VBA kann die meisten Dateiformate öffnen, aber für spezielle Formate wie DLL oder andere nicht-native Formate kann es Einschränkungen geben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige