Применение цифровой подписи к макросам office-vba с помощью c # - PullRequest
0 голосов
/ 08 ноября 2018

После некоторого поиска в интернете, который не увенчался успехом, я спрошу здесь.

В некоторых публикациях в Интернете говорится, что невозможно применить цифровую подпись к макросу VBA в приложении Excel. Но все статьи, которые я нашел, довольно старые, поэтому я надеюсь, что теперь возможно сделать это с помощью кода.

Моя цель - открыть документ 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 # -кода?

1 Ответ

0 голосов
/ 15 июля 2019

Это не C #, но есть способ подписать код VBA в файлах Excel с помощью инструментов командной строки MS. Я вызываю соответствующие команды из моей программы на C #. Решенный вопрос: Можно ли подписать проект Excel VBA, включая отметку времени?

...