Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何以编程方式将证书分配给excel宏_Vba_Excel_Excel 2007_Digital Signature - Fatal编程技术网

Vba 如何以编程方式将证书分配给excel宏

Vba 如何以编程方式将证书分配给excel宏,vba,excel,excel-2007,digital-signature,Vba,Excel,Excel 2007,Digital Signature,我开发了一些创建excel宏的代码,每次创建新宏后,我都希望以编程方式对宏进行数字签名。您能告诉我是否有任何方法可以创建新的数字证书,并通过编程方式将其分配给宏。谢谢。使用VBA代码无法执行此操作。我认为最好的方法是通过调用Win32 API来模拟实现这一点所需的所有步骤。这将是草率的,但你可以让它工作。基本上,您可以利用键盘上的快捷键打开所需的窗口和应用程序,并选择正确的证书 下面是一些示例代码 Public Declare Function SetFocus Lib "user32" (By

我开发了一些创建excel宏的代码,每次创建新宏后,我都希望以编程方式对宏进行数字签名。您能告诉我是否有任何方法可以创建新的数字证书,并通过编程方式将其分配给宏。谢谢。

使用VBA代码无法执行此操作。我认为最好的方法是通过调用Win32 API来模拟实现这一点所需的所有步骤。这将是草率的,但你可以让它工作。基本上,您可以利用键盘上的快捷键打开所需的窗口和应用程序,并选择正确的证书

下面是一些示例代码

Public Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
    (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
    ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Sub SetFocusFormulaBar()
    SetFocus FindWindowEx(FindWindow("XLMAIN", Application.Caption), _
        0&, "EXCEL<", vbNullString)
End Sub
公共声明函数SetFocus Lib“user32”(ByVal hwnd作为Long)作为Long
公共声明函数findwindowlib“user32”别名“FindWindowA”_
(ByVal lpClassName作为字符串,ByVal lpWindowName作为字符串)长度相同
公共声明函数FindWindowEx Lib“user32”别名“FindWindowExA”_
(ByVal hWnd1等长,ByVal hWnd2等长_
ByVal lpsz1作为字符串,ByVal lpsz2作为字符串)一样长
Sub-SetFocusFormulaBar()
SetFocus FindWindowEx(findwindowe(“XLMAIN”,Application.Caption)_

0&,“EXCEL+1-我喜欢这个问题。对于创建大量宏的人特别有用!