ich rufe per VBA eine externe Anwendung auf. Diese wird ein einem neuen aktiven Fester ausgeführt.
Wie kann ich das aktive Fenster mit VBA wechseln?
Ich möchte an dem ExcelSheet weiterarbeiten!
Viele Grüsse und Dank!
Lars
Sub pdfe()
blp = DDEInitiate("WinBlp", "bbk")
Call DDEExecute(blp, "<blp-0>" & "<cancel>" & "PDFE<go><tabr><tabr><tabr><tabr><tabr><tabr><tabr><tabr><tabr><tabr><tabr><tabr><tabr><tabr><tabr><tabr><tabr>Y<go>1<go>")
End Sub
ALT + F11
, um den VBA-Editor in Excel zu öffnen.Einfügen > Modul
.Code einfügen: Kopiere den folgenden VBA-Code in das Modul:
Option Explicit
Private Declare Function SetWindowPos Lib "user32" ( _
ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
Const HWND_TOP = 0
Const HWND_TOPMOST = -1
Const FLAGS = 0 'SWP_NOMOVE Or SWP_NOSIZE
Public Sub WechselZuExcel()
Dim hwnd As Long
hwnd = Application.hWnd ' Holt das Handle des Excel-Fensters
SetWindowPos hwnd, HWND_TOP, 0, 0, 0, 0, FLAGS ' Verschiebt das Excel-Fenster in den Vordergrund
End Sub
ALT + F8
, wähle WechselZuExcel
und klicke auf Ausführen
.Problem: Das Excel-Fenster bleibt im Hintergrund.
SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
, um sicherzustellen, dass Excel in den Vordergrund kommt.Problem: Fehlermeldung beim Ausführen des Makros.
user32
verfügbar ist.Verwendung von API-Funktionen: Anstelle von SetWindowPos
kannst du auch ShowWindow
verwenden, um das Fenster sichtbar zu machen. Beispiel:
Private Declare Function ShowWindow Lib "user32" ( _
ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long
Const SW_SHOW = 5
Public Sub ShowExcelWindow()
Dim hwnd As Long
hwnd = Application.hWnd
ShowWindow hwnd, SW_SHOW
End Sub
Shell-Befehl verwenden: Mit dem Shell-Befehl kannst du Anwendungen direkt aufrufen und den Fokus setzen, bevor du zu Excel zurückkehrst.
Fenster zwischen Excel und einer DDE-Anwendung wechseln:
Sub WechselZuDDE()
Dim blp As Long
blp = DDEInitiate("WinBlp", "bbk")
' Führe DDE-Befehle aus ...
Call WechselZuExcel ' Wechsel zurück zu Excel
End Sub
Anwendung im Vordergrund halten:
Sub SetzeAufTopMost()
Dim hwnd As Long
hwnd = Application.hWnd
SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
End Sub
On Error Resume Next
, um deinen Code robuster zu machen und unerwartete Fehler abzufangen.1. Wie kann ich das aktive Fenster einer Anwendung im Vordergrund halten?
Verwende die SetWindowPos
-Funktion mit dem Parameter HWND_TOPMOST
, um sicherzustellen, dass dein Excel-Fenster immer im Vordergrund bleibt.
2. Welche Excel-Version benötige ich für diese Methoden?
Die beschriebenen VBA-Methoden funktionieren in den meisten Versionen von Excel, die VBA unterstützen, einschließlich Excel 2010 und später.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen