Программный доступ C # к макросам Excel

Я работаю с каталогом файлов 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 не было обработано - невозможно выполнить операцию, поскольку проект защищен».

5
задан Deduplicator 23 February 2015 в 19:28
поделиться