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

Forumthread: Linke Maustaste mit VBA clicken

Linke Maustaste mit VBA clicken
alexander
Hallo,
ich habe ein kleines Makro geschrieben um automatisch in einem anderen Programm etwas zu aktualsieren. Wie ich die Maus über den Bildschirm bewege habe ich bereits herausgefunden. Leider finde ich nicht, wie ich das clicken der linken Maustaste auslöse.
Weiß jemand Rat
Sub gagsasg()
Call SetCursorPos(420, 150) 'Listenname
-> hier sollte jetzt die linke Maustaste geclickt werden
SendKeys "M16-3420"
SendKeys "{ENTER}"
Call SetCursorPos(920, 555) 'Wählen
Call SetCursorPos(1120, 785) 'Knopf anwählen
End Sub

zugehörige Funktion
'API-Funktion deklarieren
Public Declare

Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
'Nur bei Verwendung von CenterCursor nötig:
Public Declare 

Function GetWindowRect Lib "user32" (ByVal hWnd As Long, Rect As Rect) As Long
Public Type Rect
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Vielen Dank akex


		
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
Linke Maustaste mit VBA clicken
15.12.2010 18:07:35
Anton
Hallo Alexander,
probier's hiermit:
Private Declare Sub mouse_event Lib "user32" _
(ByVal dwFlags As Long, _
ByVal dx As Long, _
ByVal dy As Long, _
ByVal cButtons As Long, _
ByVal dwExtraInfo As Long)
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
Sub click()
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, cButt, dwEI
End Sub
mfg Anton
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Linke Maustaste mit VBA automatisieren


Schritt-für-Schritt-Anleitung

Um die linke Maustaste in einem VBA-Makro zu simulieren, kannst du die Funktion mouse_event verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor in Excel mit ALT + F11.

  2. Füge ein neues Modul hinzu: Rechter Mausklick auf "VBAProject (deine Arbeitsmappe)" > Einfügen > Modul.

  3. Deklariere die benötigten API-Funktionen. Kopiere den folgenden Code in dein Modul:

    Private Declare Sub mouse_event Lib "user32" _
       (ByVal dwFlags As Long, _
       ByVal dx As Long, _
       ByVal dy As Long, _
       ByVal cButtons As Long, _
       ByVal dwExtraInfo As Long)
    
    Const MOUSEEVENTF_LEFTDOWN = &H2
    Const MOUSEEVENTF_LEFTUP = &H4
  4. Erstelle eine Subroutine für den Mausklick:

    Sub ClickLinkeMaustaste()
       mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
       mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
    End Sub
  5. Führe das Makro aus: Du kannst nun das Makro ClickLinkeMaustaste aufrufen, um einen Mausklick zu simulieren.


Häufige Fehler und Lösungen

  • Fehler: Das Makro führt keinen Klick aus.

    • Lösung: Stelle sicher, dass das Zielprogramm, in dem der Klick ausgeführt werden soll, aktiv ist. Der Mausklick wird nur an der aktuellen Position des Cursors ausgeführt.
  • Fehler: mouse_event wird nicht erkannt.

    • Lösung: Überprüfe, ob du die Deklaration der Funktion korrekt in deinem Modul eingefügt hast.

Alternative Methoden

Eine weitere Möglichkeit, die linke Maustaste zu simulieren, ist die Verwendung von SendKeys. Dies ist jedoch weniger zuverlässig, da es vom Fokus der Anwendung abhängt. Hier ein einfaches Beispiel:

Sub SendKeysBeispiel()
    AppActivate "Name des Programms"
    SendKeys "{ENTER}"
End Sub

Diese Methode funktioniert besser, wenn du mit Tasteneingaben anstelle von Mausklicks arbeiten möchtest.


Praktische Beispiele

Hier ist ein vollständiges Beispiel, das die linke Maustaste an einer bestimmten Position klickt und anschließend einige Tastenanschläge sendet:

Sub AutomatisierungBeispiel()
    Call SetCursorPos(420, 150) ' Bewege den Cursor
    ClickLinkeMaustaste         ' Simuliere den Mausklick
    SendKeys "M16-3420"
    SendKeys "{ENTER}"
End Sub

Vergewissere dich, dass die Funktion SetCursorPos korrekt deklariert ist, um den Cursor zu bewegen.


Tipps für Profis

  • Nutze mouse_event in Kombination mit GetWindowRect, um die genaue Position eines Fensters zu bestimmen und deinen Cursor präzise zu steuern.
  • Achte darauf, dass die mouse_event-Funktionen die Koordinaten im Bildschirmraum erwarten. Wenn du MOUSEEVENTF_ABSOLUTE verwenden möchtest, musst du die Koordinaten entsprechend skalieren.

FAQ: Häufige Fragen

1. Wie kann ich die Position des Cursors vor einem Klick ermitteln?
Du kannst die Funktion GetCursorPos verwenden, um die aktuelle Cursor-Position zu ermitteln und diese in deinen Makros zu verwenden.

2. Funktioniert das auch in Excel 2016 und höheren Versionen?
Ja, die beschriebenen Methoden funktionieren in Excel 2016 sowie in neueren Versionen, solange du die richtigen API-Deklarationen verwendest.

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