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

Forumthread: Mausklick mit VBA

Mausklick mit VBA
marspoki
Hallo,
ich habe mal wieder ein kleines Problem.
Ich möchte gerne mittels VBA in einen Mausklick erzeugen.
Diverse Anleitungen habe ich im Internet schon gefunden aber keine Funktioniert.
Ich nutze Excel 2003. Hat jemand ein ein Beispiel für mich was auch schon funktioniert?
Vielen Dank schonmal für eure Mühe.
LG
Sebastian
Anzeige

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

Betreff
Benutzer
Anzeige
für was?
06.08.2009 09:46:38
Tino
Hallo,
kannst Du auch sagen für was du dies brauchst?
Frage offen!
Gruß Tino
AW: für was?
06.08.2009 09:50:50
marspoki
Hallo,
Ich muß einen VBA Anweisung schreiben die einen Linksklick an eine bestimmte stelle im Bildschirm macht, auserhalb von Excel.
Vielen Dank
müsste so gehen.
06.08.2009 10:14:19
Tino
Hallo,
Private Declare Sub mouse_event Lib "user32.dll" _
    (ByVal dwFlags As Long, ByVal dx As Long, _
    ByVal dy As Long, ByVal dwdata As Long, _
    ByVal dwExtraInfo As Long)

Sub MausLinks_Klick()
Const MOUSEEVENT_LEFTDOWN = &H2
Const MOUSEEVENT_LEFTUP = &H4
  
  mouse_event MOUSEEVENT_LEFTDOWN, 0, 0, 0, 0   'Linksklick 
  mouse_event MOUSEEVENT_LEFTUP, 0, 0, 0, 0     'Taste los lassen 
End Sub
Gruß Tino
Anzeige
AW: da kommt ein Rechtsklick
06.08.2009 10:28:14
marspoki
Hallo,
kann es sein das da die Rechte Maustaste gedrückt wird?
kann man irgendwo noch Kordinaten eingeben wo gedrückt weden soll.
Vielen Dank
AW: da kommt ein Rechtsklick
06.08.2009 10:34:40
marspoki
Hallo,
kann es sein das da die Rechte Maustaste gedrückt wird?
kann man irgendwo noch Kordinaten eingeben wo gedrückt weden soll.
Vielen Dank
Anzeige
bei Rechtsklick...
06.08.2009 10:48:47
Tino
Hallo,
würde doch ein Menü aufgehen und wenn ich im Hintergrund eine Webseite habe und die Maus über einen Link platziere und mit F5 das Makro starte, wird der Link angeklickt.
Hier noch mit Mausposition.
Private Declare Sub mouse_event Lib "user32.dll" _
    (ByVal dwFlags As Long, ByVal dx As Long, _
    ByVal dy As Long, ByVal dwdata As Long, _
    ByVal dwExtraInfo As Long)
    
Private Declare Function SetCursorPos Lib "user32" _
    (ByVal X As Long, ByVal Y As Long) As Long

Sub MausLinks_Klick()
Const MOUSEEVENT_LEFTDOWN = &H2
Const MOUSEEVENT_LEFTUP = &H4
  
  'Position 1. Parameter Horizontal, 2.Parameter Vertikal 
  SetCursorPos 50, 300
  mouse_event MOUSEEVENT_LEFTDOWN, 0, 0, 0, 0   'linksklick 
  mouse_event MOUSEEVENT_LEFTUP, 0, 0, 0, 0     'Taste loslassen 
End Sub
Gruß Tino
Anzeige
AW: bei Rechtsklick...
06.08.2009 11:22:32
marspoki
Das funktioniert super. Vielen Dank schon mal. Kann man eigentlich auch zur vorhergehenden Mausposition zurückspringen? Oder besser die Position auslesen.?
Vielen Dank
geht auch...
06.08.2009 11:37:59
Tino
Hallo,
Private Declare Sub mouse_event Lib "user32.dll" _
    (ByVal dwFlags As Long, ByVal dx As Long, _
    ByVal dy As Long, ByVal dwdata As Long, _
    ByVal dwExtraInfo As Long)
    
Private Declare Function SetCursorPos Lib "user32" _
    (ByVal X As Long, ByVal Y As Long) As Long
    
Private Declare Function GetCursorPos Lib "user32" _
(lpPoint As Maus_Pos) As Long

Private Type Maus_Pos
    X As Long
    Y As Long
End Type

Sub MausLinks_Klick()
Dim Maus As Maus_Pos
Dim X_Pos As Long, Y_Pos As Long
Const MOUSEEVENT_LEFTDOWN = &H2
Const MOUSEEVENT_LEFTUP = &H4
  
GetCursorPos Maus

X_Pos = Maus.X 'Horizontal 
Y_Pos = Maus.Y 'Vertikal 
  
  'Position 1. Parameter Horizontal, 2.Parameter Vertikal 
  SetCursorPos X_Pos, Y_Pos
  mouse_event MOUSEEVENT_LEFTDOWN, 0, 0, 0, 0   'linksklick 
  mouse_event MOUSEEVENT_LEFTUP, 0, 0, 0, 0     'Taste loslassen 
End Sub
Gruß Tino
Anzeige
AW: Mausklick mit VBA
06.08.2009 10:40:19
MichaV
Hallo,
Option Explicit
Private Declare Sub mouse_event Lib "user32.dll" _
(ByVal dwFlags As Long, ByVal dx As Long, _
ByVal dy As Long, ByVal dwdata As Long, _
ByVal dwExtraInfo As Long)
Private Declare Function SetCursorPos Lib "user32" _
(ByVal X As Long, ByVal Y As Long) As Long
Private Const MOUSEEVENT_LEFTDOWN = &H2
Private Const MOUSEEVENT_LEFTUP = &H4
Private Sub Click()
SetCursorPos 60, 100
mouse_event MOUSEEVENT_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENT_LEFTUP, 0, 0, 0, 0
End Sub
Gruß- Micha
PS: Google ist Dein Freund.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Mausklick mit VBA in Excel 2003


Schritt-für-Schritt-Anleitung

Um einen Mausklick mit VBA zu simulieren, musst du die mouse_event Funktion aus der user32.dll Bibliothek verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie du das umsetzen kannst:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel 2003.

  2. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.

  3. Deklariere die benötigten Funktionen:

    Private Declare Sub mouse_event Lib "user32.dll" _
    (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal dwdata As Long, ByVal dwExtraInfo As Long)
    
    Private Declare Function SetCursorPos Lib "user32" _
    (ByVal X As Long, ByVal Y As Long) As Long
  4. Konstanten für Mausklicks definieren:

    Private Const MOUSEEVENT_LEFTDOWN = &H2
    Private Const MOUSEEVENT_LEFTUP = &H4
  5. Erstelle die Subroutine für den Mausklick:

    Sub MausLinks_Klick()
       ' Setze die Kordinaten für den Mausklick
       SetCursorPos 100, 200 ' Beispielkoordinaten
       mouse_event MOUSEEVENT_LEFTDOWN, 0, 0, 0, 0 ' Linksklick
       mouse_event MOUSEEVENT_LEFTUP, 0, 0, 0, 0   ' Taste loslassen
    End Sub
  6. Führe die Subroutine aus: Du kannst die Subroutine direkt im VBA-Editor ausführen oder einen Button in Excel erstellen, um den Mausklick zu simulieren.


Häufige Fehler und Lösungen

  • Fehler: Mausklick funktioniert nicht
    Lösung: Stelle sicher, dass die Kordinaten, die du eingibst, auf dem aktiven Bildschirm liegen. Überprüfe auch, ob ein anderes Programm im Vordergrund die Eingaben blockiert.

  • Fehler: Rechtsklick anstelle von Linksklick
    Lösung: Achte darauf, dass du die richtigen Konstanten für Linksklick (MOUSEEVENT_LEFTDOWN und MOUSEEVENT_LEFTUP) verwendest.


Alternative Methoden

Neben der mouse_event-Methode kannst du auch die SendKeys-Funktion verwenden, um Tastenanschläge zu simulieren. Dies ist jedoch weniger präzise als die Verwendung von mouse_event.

Sub SendKeysExample()
    SendKeys "{ENTER}" ' Sendet einen Enter-Tastendruck
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, Mausklicks mit VBA zu simulieren:

  1. Mausklick an einer spezifischen Kordinaten:

    Sub KlickBeispiel()
       SetCursorPos 150, 250 ' Setze die Kordinaten
       mouse_event MOUSEEVENT_LEFTDOWN, 0, 0, 0, 0
       mouse_event MOUSEEVENT_LEFTUP, 0, 0, 0, 0
    End Sub
  2. Mausposition zurücksetzen:

    Sub ZurueckZurPosition()
       Dim Maus As Maus_Pos
       GetCursorPos Maus
       SetCursorPos Maus.X, Maus.Y ' Zur vorherigen Position zurückspringen
    End Sub

Tipps für Profis

  • Kordinaten dynamisch setzen: Verwende Variablen, um die Kordinaten zur Laufzeit zu bestimmen, anstatt feste Werte zu verwenden.
  • Fehlerbehandlung einbauen: Füge Fehlerbehandlungsroutinen hinzu, um unerwartete Probleme zu vermeiden.
  • Testen in verschiedenen Bildschirmauflösungen: Stelle sicher, dass deine Makros auf verschiedenen Bildschirmauflösungen funktionieren.

FAQ: Häufige Fragen

1. Frage
Kann ich mit VBA auch einen Rechtsklick simulieren?
Antwort: Ja, dafür musst du die Konstanten MOUSEEVENT_RIGHTDOWN und MOUSEEVENT_RIGHTUP verwenden.

2. Frage
Wie kann ich die aktuelle Mausposition auslesen?
Antwort: Du kannst die GetCursorPos Funktion verwenden, um die aktuelle Position der Maus zu ermitteln und in Variablen zu speichern.

3. Frage
Funktioniert dieser Code in neueren Excel-Versionen?
Antwort: Ja, der Code funktioniert auch in neueren Excel-Versionen, jedoch kann die Handhabung von Sicherheitsrichtlinien variieren.

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