我在解除受保護的excel的VBA項目時遇到問題。通過SendKeys保護excel VBA項目
IntPtr hWnd = FindWindow(null, ES.oXL.VBE.MainWindow.Caption);//Find window
if (hWnd != IntPtr.Zero)
{
bool ret = BringWindowToTop(hWnd); //Bring VBE to top.
}
SendKeys.SendWait("%{F11}%TE" + strPassword + "~~%{F11}");
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("xyz");
SendKeys.SendWait("{ENTER}");
我寫了一個像這樣的代碼來解除VBA項目的保護。它在調試應用程序時工作正常。
我們使用com對象模型。當我申請在DLL蜂巢相同的dll,調用函數我越來越感到,提示以下錯誤
System.ComponentModel.Win32Exception: Access is denied at System.Windows.Forms.SendKeys.SendInput(Byte[] oldKeyboardState, Queue previousEvents)
這個爲什麼它的工作任何幫助嗎?
請問爲什麼要在運行時解除VB項目的保護? – 2013-03-07 14:02:32
我們有要求在運行時向excel添加一個新宏 – 2013-03-07 14:38:00
老實說,這不是你想要做的。 您應該打開Excel文件,在Visual Basic編輯器項目瀏覽器中手動解除保護,並在保存宏工作簿並將其提供給用戶之前添加新代碼。 – 2013-03-07 14:58:08