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

Forumthread: Problem mit Notepad++ öffnen aus Makro

Problem mit Notepad++ öffnen aus Makro
16.03.2022 11:46:40
flo4711
Hallo zusammen,
ich hätte da eine Frage (bzw. ein Problem) mit dem Handling aktiver Fenster nach dem Öffnen von Notepad++ aus einem Makro heraus.
Hierbei spielen 2 Szenarien eine Rolle:
1. Zum Zeitpunkt der Makroausführung ist Notepad++ nicht geöffnet
In diesem Fall ist alles ok, da die angesprochene Textdatei im Notepad++ minimiert und ohne Focus geöffnet wird.
D.h. die im Makro danach definierte Messagebox erscheint im Excel im Vordergrund.
2. Zum Zeitpunkt der Makroausführung ist Notepad++ bereits geöffnet
In diesem Fall wird die angesprochene Datei ebenfalls im bereits aktiven Notepad++ geöffnet.
Allerdings erscheint die dann definierte Messagebox erst dann im Vordergrund, wenn per Mausklick das entsprechende Excel-Fenster wieder aktiviert wird.
Ich habe hierzu eine kleine Beispielmappe hochgeladen:
https://www.herber.de/bbs/user/151794.xlsm
Zum Testen muss im Verzeichnis "C:\temp" die Datei "test.txt" angelegt werden!
Gibt es für den 2. Fall oben eine Lösung?
Gruß
Gode
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Notepad++ öffnen aus Makro
16.03.2022 12:38:40
Nepumuk
Hallo Gode,
so:

Option Explicit
Private Declare PtrSafe Function SetForegroundWindow Lib "user32.dll" ( _
ByVal hwnd As LongPtr) As Long
Sub Verarbeiten()
Call Notepad_oeffnen
Call SetForegroundWindow(Application.hwnd)
MsgBox "Ich bin jetzt im Vordergrund"
End Sub
Gruß
Nepumuk
Anzeige
AW: Problem mit Notepad++ öffnen aus Makro
16.03.2022 13:08:02
flo4711
Hallo Nepumuk,
das klappt perfekt! :-)
Nur dass ich das auch einigermaßen verstehe:
Die Eigenschaft .hwnd liefert einen Zahlenwert zurück über den eindeutig die Excel-Anwendung definiert ist, in der das Makro ausgeführt wird?
Auf alle Fälle vielen Dank !!
Gruß
Gode
AW: Problem mit Notepad++ öffnen aus Makro
16.03.2022 13:12:34
Nepumuk
Hallo Gode,
hwnd ist die Fensterzugriffsnummer (handle window
Gruß
Nepumuk
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Notepad++ aus Excel-Makro öffnen und Fensterhandling optimieren


Schritt-für-Schritt-Anleitung

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

  2. Ein neues Modul erstellen: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.

  3. Code einfügen: Kopiere den folgenden Code und füge ihn in das Modul ein:

    Option Explicit
    Private Declare PtrSafe Function SetForegroundWindow Lib "user32.dll" ( _
    ByVal hwnd As LongPtr) As Long
    
    Sub Verarbeiten()
        Call Notepad_oeffnen
        Call SetForegroundWindow(Application.hwnd)
        MsgBox "Ich bin jetzt im Vordergrund"
    End Sub
    
    Sub Notepad_oeffnen()
        Dim notepadPath As String
        notepadPath = "C:\Program Files\Notepad++\notepad++.exe"
        Shell notepadPath & " " & "C:\temp\test.txt", vbNormalFocus
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Führe das Makro „Verarbeiten“ aus, um Notepad++ zu öffnen und die Messagebox anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler 1: Notepad++ öffnet keine Datei: Stelle sicher, dass der Pfad zu Notepad++ korrekt ist und die Datei "test.txt" im Verzeichnis "C:\temp" existiert.

  • Fehler 2: Messagebox erscheint nicht im Vordergrund: Wenn Notepad++ bereits geöffnet ist, wird die Messagebox erst sichtbar, wenn du das Excel-Fenster aktivierst. Verwende die Funktion SetForegroundWindow, um Excel in den Vordergrund zu bringen.


Alternative Methoden

  • Notepad++ Makro erstellen: Du kannst auch ein Notepad++ Makro verwenden, um mehrere Dateien zusammenzuführen oder doppelte Zeilen zu markieren. Dies erfolgt direkt in Notepad++ und kann die Effizienz steigern.

  • Automatisierung mit Batch-Dateien: Statt VBA kannst du eine Batch-Datei verwenden, um Notepad++ zu öffnen. Dies eignet sich gut, wenn du mehrere Dateien gleichzeitig bearbeiten möchtest.


Praktische Beispiele

  • Notepad++ mit mehreren Fenstern: Wenn du mehrere Instanzen von Notepad++ benötigst, kannst du den Shell-Befehl mehrfach aufrufen. Beispiel:

    Shell notepadPath & " " & "C:\temp\file1.txt", vbNormalFocus
    Shell notepadPath & " " & "C:\temp\file2.txt", vbNormalFocus
  • Symbolleiste anpassen: Du kannst zusätzlich die Symbolleiste in Notepad++ anpassen, um den Zugriff auf häufig genutzte Funktionen zu erleichtern.


Tipps für Profis

  • VBA und Notepad++ kombinieren: Nutze notepad++ vba, um noch effizienter zu arbeiten. Verwende die Möglichkeit, Zeilennummern auszublenden oder spezifische Textdateien zu bearbeiten.

  • Fehlerprotokollierung: Implementiere eine Methode zur Fehlerprotokollierung in deinem VBA-Code, um Probleme beim Öffnen von Notepad++ frühzeitig zu erkennen.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Dateien gleichzeitig in Notepad++ öffnen?
Du kannst mehrere Shell-Befehle hintereinander ausführen, um verschiedene Dateien zu öffnen.

2. Was mache ich, wenn Notepad++ nicht im Vordergrund bleibt?
Stelle sicher, dass du SetForegroundWindow(Application.hwnd) nach dem Öffnen von Notepad++ aufrufst, um Excel aktiv zu halten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige