2016-12-14 40 views
0

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

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

贺拉斯

+2

是外接程序VBA –

回答

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

但是,与插件的自动时间通话并要求可编程接口会更好。这将会更加强大。

+0

是要求一个可编程的接口是什么我在平推 – user3759627

+0

我希望有认识的文字和链接的方式,因此就知道了。 对于界面的东西,变化会变得非常缓慢,并且可能带有一些图像识别功能,我可以识别按钮或至少在界面发生变化时识别并终止代码 – user3759627

1

您可以尝试用十六进制编辑器替换传递给外接程序(如果此外接程序是使用Excel创建的,但看起来像是这样),所以只需要十六进制编辑器(例如Xvi32)。

好吧,让我们试试吧:

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

干杯(?:

+0

http:// stackoverflow。com/questions/22663809/excel-vba-password-via-hex-editor – CommonSense

+0

或者可能重命名为zip,查看在动作调用中放置的自定义功能区,然后可以引用插件并调用相同的调用。 –

+0

在zip中只有我的xla文件,档案中没有bin文件。 – user3759627

相关问题