【发布时间】:2019-04-11 19:29:24
【问题描述】:
在网上搜索了一段时间没有成功,我会在这里问。
互联网上的一些帖子说不可能将数字签名应用于 Excel 应用程序内的 VBA 宏。但是我发现的所有文章都很旧,所以我希望现在可能可以通过代码来做到这一点。
我的目标是打开一个 Excel 文档并对 vba 宏应用数字签名,假设存在宏。
我有以下代码来检测excel文档中是否有VBMacros:
string filePath = @"E:\OfficeDocuments\Sample1.xlsm";
object isReadonly = true;
object missing = Missing.Value;
_Application application = new Microsoft.Office.Interop.Excel.Application();
workbook = application.Workbooks.Open(
filePath, missing, isReadonly, missing, missing, missing,
missing, missing, missing, missing, missing, missing,
missing, missing, missing);
bool workbookHasVbProject = workbook.HasVBProject;
效果很好。
现在我获取了我想用来签署宏的证书:
X509Store store = new X509Store(StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection x509Certificate2Collection = store.Certificates;
X509Certificate2Collection certificate2Collection = x509Certificate2Collection.Find(X509FindType.FindBySubjectName, "MyCertificate 01", true);
if (certificate2Collection.Count > 0)
{
X509Certificate2 certificate = certificate2Collection[0];
}
现在我不知道如何继续。
我试过了:
VBE vbe = application.VBE;
VBProject vbProject = vbe.VBProjects.Item(1);
但我看不到任何签署宏的机会。
真的没有办法用c#-code对宏进行签名吗?
【问题讨论】:
-
我好好找了你,恐怕没有运气。
-
这是您尝试使用 C# 代码完成的任务吗? support.office.com/en-us/article/…
-
是的,这就是我想要实现的目标。
标签: c# excel digital-signature