Я работаю с каталогом файлов Excel, чтобы получить информацию о каждом файле. Я пытаюсь использовать взаимодействие C # Excel для сбора информации о макросах VBA, связанных с некоторыми из этих файлов. Код для этого находится ниже. Проблема в том, что ни один из файлов Excel не имеет программного доступа к макросам. Я могу вручную переключить это на локальные копии файла, но в настоящее время у меня есть доступ только для чтения к каталогу файлов. Есть ли способ временно изменить настройку программного доступа внутри моего кода (чтобы читать код VBA, а не вносить никаких изменений) без разрешения на запись?
Кроме того, я знаю только, как внести изменения в программный доступ вручную ( через настройки в каждом файле Excel). Поскольку в конечном итоге мне может понадобиться просто получить доступ для чтения / записи, могу ли я сделать это в пакетном режиме, чтобы сэкономить много времени при открытии и закрытии файлов вручную?
VBA.VBProject project = WorkBook.VBProject;
VBA.VBComponents VBComponents = project.VBComponents;
string projectName = project.Name;
VBA.vbext_ProcKind procedureType = Microsoft.Vbe.Interop.vbext_ProcKind.vbext_pk_Proc;
VBA.VBComponent vbFunction;
foreach (Excel.Worksheet sheet in VBComponents)
{
vbFunction = sheet as VBA.VBComponent;
if (vbFunction != null)
{
VBA.CodeModule componentCode = vbFunction.CodeModule;
int componentCodeLines = componentCode.CountOfLines;
int line = 1;
while (line < componentCodeLines)
{
//EXAMINE LINE
line++;
}
}
}
.
EDIT:
Выдается точное сообщение об ошибке: «COMException не было обработано - программный доступ к проекту Visual Basic не является доверенным».
С тех пор я обнаружил, что получаю другое сообщение об ошибке, если открываю один из файлов, доступных только для чтения, и изменяю Настройки. Я не могу сохранить файл, но если я оставлю его открытым, когда он достигнет первого файла .xlsm, он распечатает сообщение об ошибке «COMException не было обработано - невозможно выполнить операцию, поскольку проект защищен».