Zum aufzeichnen von Maus-Klicks in Excel-VBA?
Ich versuche ein makro machen, dass die Datensätze, welche ein Benutzer darauf geklickt wird, zeichnet dann die Koordinaten der Maus und die Verzögerung zwischen den Klicks. Diese werden dann wiederholen Sie den Vorgang nach einigen anderen SendKey
änderungen. Wie kann ich erkennen, wenn ich auf die Maus, wenn das makro ausgeführt wird? Ich weiß schon, wie man die Koordinaten und zeichnen Sie die Verspätung, aber was ist die beste Vorgehensweise für die Erkennung der Maus klicken Sie auf und auch, was wäre der beste Weg, um zu speichern alle diese Informationen? Eine text-Datei? Hier ist ein Ausschnitt aus der Maus, klicken Sie auf Ereignisse, die ich benutze:
Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
Public pos As POINTAPI ' Declare variable
Public 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)
Public Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4
Public Const MOUSEEVENTF_RIGHTDOWN As Long = &H8
Public Const MOUSEEVENTF_RIGHTUP As Long = &H10
Public Sub SingleClick()
Dim xval, yval
xval = GetSetting("Will's Program Sheet", "DPS Calibration", "PROGRAM X")
yval = GetSetting("Will's Program Sheet", "DPS Calibration", "PROGRAM Y")
Select Case xval
Case Is = "" 'Runs calibrate if it can't find an xval
Call CALIBRATE
End
End Select
SetCursorPos xval, yval 'x and y position
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub
Gibt es ein anderes makro aufruft SingleClick
wenn es sich bewegt, um eine Konstante x-und y-Klicks, einige Magie, und kehrt zu der position, bevor das makro gestartet. Also, um zu wiederholen, ist es eine einfach oder leicht zu verstehen, Methode zur Aufzeichnung mehrerer Klicks und Verzögerungen zwischen Klicks und Wiedergabe durch Excel-VBA?
- Ich meine nicht, Strich Ihre Hoffnungen, aber ich denke, das könnte nicht möglich sein. Excel hat keine onmouseclick Ereignis, dass ich kenne.
- Was ist mit der user32 Bibliothek? Für Visual Studio ist es möglich, aber warum nicht Excel-VBA? msdn.microsoft.com/en-us/library/aa231228(v=vs. 60).aspx
- Was genau wollen Sie erreichen? Warum tun Sie verfolgen möchten, die Maus klickt und die Koordinaten so?
- Ich bin mit einem CNC-Programm, und es ist erforderlich zu speichern Fräsbahnen in einer bestimmten Reihenfolge, und wir haben, um es zu speichern für 2 Maschinen. Ich möchte Excel zu automatisieren den Prozess von der Aufnahme, welche Klicks ich gemacht und replay Sie für die zweite Maschine.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist theoretisch möglich zu tun, aber Sie würde setzen Sie einen Haken bei WH_MOUSE_LL Nachrichten. Das problem ist, dass ich bezweifle ernsthaft, dass VBA mithalten kann mit der Menge an Nachrichten, die kommen durch das Rohr. Es wäre wie der Versuch, das trinken aus einem Feuerwehrschlauch in VBA. Wenn Sie wirklich wollen, um ihm einen Schuss, Sie können sehen, ob das funktioniert.
Aber zuerst:
HAFTUNGSAUSSCHLUSS
Aller Wahrscheinlichkeit nach, wird Excel nicht mehr reagiert, wenn Sie die Arbeitsmappe und öffnen Sie Sie. Es wird certainlly nicht mehr reagiert, wenn Sie öffnen Sie den VBE. Nicht setzen Sie diese in eine Tabelle, die Sie nicht leisten können, zu löschen. Seien Sie darauf vorbereitet zu haben, um es zu öffnen mit der shift-Taste nach unten, um die änderungen am code. Sie sind gewarnt worden. Ich übernehme keine Verantwortung für das, was Sie tun. Ich weiß es besser, als es versucht, mit alle code in der Ereignisprozedur. Sie werden wahrscheinlich zu einem Absturz von Excel. Sie werden sicherlich crash der VBE. Sie stürzt möglicherweise ab, irgendetwas oder alles andere.
Das sollte es abdecken. So...
In einer Klasse genannt HookHolder:
In "DieseArbeitsmappe":
In ein Modul: