访问Excel功能区按钮和控件

时间:2016-12-14 08:30:31

标签: vba excel-vba ribbon excel

在工作中,我们有一个带有一些功能区按钮的加载项供我们使用。加载项受密码保护,我们甚至无法看到这些功能区按钮正在调用的内容。因此,我知道在加载项中看不到任何子例程或宏的任何名称。

我想知道是否有可能编写一些可以模仿按钮点击的内容?我需要能够与这些按钮交互的东西。我希望这是可能的,因为稍后我也想编写一些可以点击网页上的链接和其他程序上的按钮的内容。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用十六进制编辑器将pass替换为addin(如果此插件是使用excel创建的,但看起来像是这样),因此您只需要十六进制编辑器(例如Xvi32)。

好的,让我们试试吧:

  1. 将加载项文件重命名为zip(filename.xlam - > filename.xlam.zip)
  2. 从该存档中提取vbaProject.bin
  3. 使用十六进制编辑器打开vbaProject.bin并找到字符串" DPB" picture
  4. 将DPB替换为DPx,保存文件并将该混蛋放回存档并替换。
  5. 将文件重命名为.xlam(filename.xlam.zip - > filename.xlam)
  6. 打开它,会弹出一些错误,但不要担心,我们是黑客,只是接受它并继续前进!
  7. 在VBE编辑器中右键单击addon,转到属性 - >保护
  8. 设置新密码,保存加载项并重新打开以查看此处没有错误。
  9. 干杯(:

答案 1 :(得分:0)

要使用网页,您应该使用Selenium

模拟鼠标点击永远不是一个好方法。如果界面发生变化,或者您尝试在具有不同分辨率的不同屏幕上使用它,那么一切都不像以前那样会怎么样?

无论如何,你可以使用VBA发送鼠标点击:

Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
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

Private Sub SingleClick()
  SetCursorPos 100, 100 'x and y position
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub

或者您可以使用AutoIt等外部程序。

但与插件的autohours交谈会更好,并要求可编程接口。那将更加强大。