Программно определить, содержит ли файл Excel (.xls) макросы - PullRequest
6 голосов
/ 09 июня 2010

Есть ли способ программно определить, содержит ли .xls макросы, не открывая его в Excel?

Также существуют ли способы проверить, с каким сертификатом (включая сертификат временной метки) эти макросы подписаны? Снова без использования Excel.

Мне, в частности, интересно, есть ли строки, которые всегда отображаются в необработанных данных файла Excel при наличии макросов.

Ответы [ 2 ]

2 голосов
/ 09 июня 2010

Да, вы можете открыть файл .xls как файл составного документа и проверить, содержит ли он папку VBA и потоки, содержащие код VBA.

Пример кода доступен в этой статье CodeProject:

Другой OLE Doc Viewer, но с возможностью редактирования

Информация о сертификате хранится в потоке DocumentSummaryInformation . Если вы хотите прочитать информацию оттуда, вам следует изучить спецификации формата файлов, доступные в Microsoft:

[MS-OSHARED]: Спецификация структуры общих типов данных и объектов Office

[MS-OFFCRYPTO]: спецификация структуры криптографии офисных документов

0 голосов
/ 09 июня 2010

Файл xls, содержащий макрос, должен содержать строку, похожую на

Keyboard Shortcut:

Не знаю, верное ли это решение, хотя

...