2016-12-14 39 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

相關問題