Сбой Excel при доступе к файлу .xlam

Я использую файл XLAM для хранения нескольких подпрограмм для общих целей электронных таблиц. XLAM добавлен и проверен в справочниках редактора VBA и проработал более 4 месяцев без каких-либо проблем. Большинство функций довольно простые, такие как создание PDF-файлов или обновление соединений в любой электронной таблице, вызывающей подпрограммы, которые находятся в файле XLAM.

Несколько дней назад ни один из моих утренних процессов не запускался, и когда я проверил, что произошло, у меня было 10 «восстановленных» файлов, которые, когда я пошел проверять ремонт, Excel сказал, что с ними все в порядке. Я попытался пройти через подпрограммы, чтобы увидеть, где они потерпели неудачу, но каждый из них вылетал без сообщения об ошибке от VBA, они просто полностью не работали. Я попытался запустить макросы через файл vbs, вызываемый из Powershell, и получил сообщение «Ошибка удаленного вызова процедуры» в строке, которая вызывала макрос.

Я не менял код ни в одной из своих книг или в файле XLAM, а также никоим образом не менял ссылки на XLAM. Кроме того, код стабильно работает на компьютерах моих коллег.

Я вызываю функции из файла XLAM следующим образом:

Call Project.Module.Function/Sub(argument)

Возможно, это проблема с RPC, но я действительно не знаю, любая помощь будет принята с благодарностью, и я рад опубликовать больше кода.

Иногда код VBA повреждается при сбое Excel (даже если проблема была не в коде). По моему опыту, лучшее решение - сохранить всю кодировку (копировать и вставить в текстовый файл предпочтительнее, чем экспортировать и импортировать), сохранить файл (ы) с кодом как XLSX, близко, повторно открыть, а затем повторно вставить код. Если это код из файла XLAM (надстройка, верно?), Возможно, вам просто придется воссоздать XLAM.

Mistella 09.10.2018 22:53

Спасибо за ответ, Мистелла, я попробовал ваш метод, и мне все еще не удалось заставить его работать, но я собираюсь попробовать еще раз на всякий случай, если я испортил шаг. Кроме того, я заметил, что код работает, если я вообще редактирую любой из VBA. Поэтому, если я запустил сценарии, это не сработает, но если после первой попытки я каким-либо образом изменю код, либо в надстройке, либо в файле, который ссылается на надстройку, это сработает, или если я повторно загрузите надстройку. Еще раз большое спасибо за ваш ответ.

Drusch 10.10.2018 00:39

Что если вы измените «Is Addin» в свойствах проекта на false, сохраните XLSM, затем измените свойство на true и повторно сохраните как XLAM?

ProfoundlyOblivious 10.10.2018 06:11

@Drusch Убедитесь, что вы закрыли книгу после сохранения как «.xlsx». В противном случае он может сохранить часть старого скомпилированного кода, что может привести к переносу проблемы в новую версию. То же самое с экспортом / импортом модулей вместо копирования и вставки текста - проблема может сохраняться. Кроме того, убедитесь, что код выполняет правильную «очистку» (для любой переменной, требующей «set», в конце кода должно быть установлено значение «ничего» или «пусто», очистить / пусто / отменить присвоение массивов, закрыть все приложения). слишком много ненужных объектов остается плавающим вокруг, они также могут вызвать проблемы.

Mistella 10.10.2018 15:20

Кроме того, я только что вспомнил, иногда проблема оставалась, если я заменял старый файл новым. Если вы сохраняете то же имя, переименуйте / повторно сохраните старый файл, чтобы новый файл ничего не перезаписывал.

Mistella 10.10.2018 15:23

Большое спасибо @Mistella, я очень ценю помощь и ваше время. Также извините за задержку с ответом, последние пару дней в моей сфере возникла серьезная проблема, и я отвлекся от своей проблемы. Я сделал все, что вы упомянули, но ничего из этого не сработало! К счастью, я прослушал достаточно людей в моей компании и нашел решение. У кого-то была похожая проблема несколько недель назад, и разработчик исправил ее. Возможно, вы лучше меня знаете, что это такое, но я отредактировал реестр Excel следующим образом: «ForceVBALoadFromSource» = dword: 00000001 Еще раз большое вам спасибо, я ценю вашу помощь, это очень много значит.

Drusch 12.10.2018 21:30
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
6
307
0

Другие вопросы по теме