Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

In Excel externes Programm starten | Herbers Excel-Forum

Forumthread: In Excel externes Programm starten

In Excel externes Programm starten
14.01.2010 09:02:27
Axel F

Hallo zusammen,
folgendes Problem: Ich möchte in meinem Excel-Sheet ein externes Programm starten, welches Daten aus einem Datenbanksystem in mein Excel-sheet überträgt (das ist bei uns ein kommerzielles IBM Programm "i-Series"). Der Start funktioniert nicht mit Shell (ich vermute, da es kein .exe file ist).
Ich habe mir jetzt so geholfen, dass ich mir einen Hyperlink in mein Excel-Sheet lege und diesen per Makro starte. Dann popt allerdings das Fenster des externen Programms auf und will noch mit zwei Mausclicks im Programm bestätigt werden. Jetzt meine Frage: Kann man evtl diese beiden Mausclicks mit dem Makro steuern? D.h. kann ich Excel sagen: clicke jetzt an eine ganz bestimmte Cursor-Position?
Ich hoffe man kann mir helfen
Gruß
Axel

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In Excel externes Programm starten
14.01.2010 10:07:51
Tino
Hallo,
versuch mal Dein Programm hiermit zu starten.
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
Sub beliebigeDateiÖffnen()
Dim strPfad As String
Const SW_NORMAL = 1
'Hier Dein Programm angeben
strPfad = "C:\Datei.???" 'Pfad zur Datei
Call ShellExecute(0, "open", strPfad, "", "", SW_NORMAL)
End Sub
Gruß Tino
Anzeige
Beliebige Datei mit verknüpftem Programm starten
14.01.2010 11:24:51
NoNet
Hallo Axel F ;-),
mit folgendem Code kannst Du eine beliebige Datei mit dem für den Dateityp assoziierten Programm starten :
Sub BeliebigeDateiStarten()
Dim strDateiname As String, strOrdner As String
strOrdner = "C:\Temp\" 'Mit "\" am Ende !!!
strDateiname = "Irgendeine Datei.xyz" 'Dateiname bitte anpassen !
If Dir(strOrdner & strDateiname) <> "" Then StarteDatei (strOrdner & strDateiname)
End Sub

Sub StarteDatei(strDateiname)
Dim myShell As Object
Set myShell = CreateObject("WScript.Shell")
myShell.Run strDateiname
Set myShell = Nothing
End Sub
Gruß, NoNet
Anzeige
AW: Beliebige Datei mit verknüpftem Programm starten
14.01.2010 14:28:38
Axel F
Hallo NoNet,
vielen Dank, so funktioniert der Start des Programms.
Aber ich muss immer noch in dem externen Programm, welches sich dann öffnet, zwei Mausclicks tätigen. Kann man die auch automatisieren???
Gruß
Axel
Nicht so ohne Weiteres evtl. per API...
14.01.2010 14:47:38
NoNet
Hallo Axel,
nur mit reinen Excel Bordmitteln lässt sich das nicht bewerkstelligen, aber ich könnte mir vorstellen, dass man per API den Handle des geöffneten Programms ermitteln kann und diesem Prozess dann die zwei "Klicks" übergeben kann.
Das müssten allerdings die API-Spezialisten hier im Forum lösen, da ich davon leider keine Ahnung habe ;-)
Gruß, NoNet
Anzeige
AW: Nicht so ohne Weiteres evtl. per API...
14.01.2010 22:20:44
Nepumuk
Hallo NoNet,
so einfach ist das nicht. Wenn ich an dem Rechner sitzen würde und mir alle meine Hilfsmittel zur Verfügung ständen, wär's kein Problem. Aber ein Programm, das du nicht vorliegen hast und auch nicht kennst von außen anzusteuern (bei VBA bescheiden) ist es ein ziemliches.
Versuch mal einem Dreijährigen per Funk alleine einem Jumbojet landen zu lassen, der noch für 5 Minuten Treibstoff im Tank hat. ;-)
Gruß
Nepumuk
Anzeige
AW: Nicht so ohne Weiteres evtl. per API...
14.01.2010 22:24:44
MichaV
"Versuch mal einem Dreijährigen per Funk alleine einem Jumbojet landen zu lassen" ..da fällt mir doch spontan SendKeys ein.
Gruss- Micha
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Externes Programm in Excel starten mit VBA


Schritt-für-Schritt-Anleitung

Um ein externes Programm in Excel zu starten, kannst Du VBA (Visual Basic for Applications) verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklicke im Projektfenster auf „VBAProject (DeineDatei.xlsx)“ und wähle Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    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
    
    Sub externesProgrammStarten()
       Dim strPfad As String
       Const SW_NORMAL = 1
       'Hier Dein Programm angeben
       strPfad = "C:\Pfad\zu\deinem\Programm.exe" 'Pfad zur Datei
       Call ShellExecute(0, "open", strPfad, "", "", SW_NORMAL)
    End Sub
  4. Passe den Pfad zu deinem externen Programm an und speichere das Modul.

  5. Starte das Makro: Gehe zurück zu Excel und drücke ALT + F8, wähle externesProgrammStarten und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Programm startet nicht: Überprüfe den angegebenen Pfad und stelle sicher, dass die Datei existiert.
  • Zugriffsfehler: Stelle sicher, dass Du die nötigen Berechtigungen hast, um das Programm zu starten.
  • VBA-Fehler: Achte darauf, dass die VBA-Referenzen korrekt gesetzt sind. Gehe zu Extras > Verweise im VBA-Editor und aktiviere die benötigten Bibliotheken.

Alternative Methoden

Falls das direkte Öffnen des Programms nicht funktioniert, kannst Du versuchen:

  • Hyperlinks: Erstelle einen Hyperlink in Excel, der das Programm öffnet.
  • WScript.Shell: Verwende die WScript.Shell Methode, um das Programm zu starten:

    Sub externesProgrammMitShell()
       Dim myShell As Object
       Set myShell = CreateObject("WScript.Shell")
       myShell.Run "C:\Pfad\zu\deinem\Programm.exe"
       Set myShell = Nothing
    End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele für das Starten von Programmen:

  1. Starten eines Texteditors:

    Sub StartTexteditor()
       Call ShellExecute(0, "open", "notepad.exe", "", "", 1)
    End Sub
  2. Starten eines Browsers:

    Sub StartBrowser()
       Call ShellExecute(0, "open", "C:\Program Files\Internet Explorer\iexplore.exe", "", "", 1)
    End Sub

Diese Beispiele zeigen, wie Du mit VBA externe Programme in Excel starten kannst.


Tipps für Profis

  • Automatisierung: Für komplexe Interaktionen mit dem externen Programm kannst Du die SendKeys-Methode verwenden, um Tasteneingaben zu simulieren. Aber sei vorsichtig, da diese Methode unzuverlässig sein kann.

    Application.SendKeys "%(n)" ' Drückt Alt + N
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um sicherzustellen, dass Dein Makro robust ist.


FAQ: Häufige Fragen

1. Kann ich auch Programme öffnen, die kein .exe sind?
Ja, Du kannst auch Dateien mit ihren standardmäßigen Programmen öffnen, solange der Dateityp verknüpft ist.

2. Wie kann ich sicherstellen, dass das Programm im Vordergrund bleibt?
Du kannst den Aufruf von ShellExecute anpassen, um das Programm im Vordergrund zu öffnen, indem Du den letzten Parameter entsprechend setzt.

3. Funktioniert das in allen Excel-Versionen?
Ja, der VBA-Code sollte in allen gängigen Excel-Versionen funktionieren, die VBA unterstützen.

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