Проблема с excel workbook_open
У меня есть небольшая проблема с Excel - некоторые шаги за пределами моей базовой компетенции ...
Я хочу сделать какое-то действие, если откроется книга Excel. Я обнаружил, что за это отвечает Workbook_Open-метод (объявленный внутри Workbook-script).
Если я сохраню свой файл в формате Excel97-как xyz.XLS он работает правильно.
Но если я сохраню его als xyz.XLSM (я использую Excel 2010), это событие не будет вызвано - независимо от того, что я делаю внутри метода. Все остальные методы событий (внутри рабочей книги или таблицы) работают правильно.
Так... где же моя ошибка ?
Или я должен изменить свойство в любом месте на другое значение ?
Что я уже пробовал:
Поиск в Интернете, несколько попыток ... задайте вопрос здесь ... :)
Maciej Los
Ральф, покажи свой код, который "не работает". Какой метод вы используете для сохранения файла Excel: с помощью кода или вручную?
Ralf Meier
Привет Мацей,
Это совершенно независимо от того, что я делаю в Workbook_Open-методе - он работает, если я сохраняю его в Excel97-XLS, и он не работает, если я сохраняю его как Excel-XLSM.
Я сохраняю его вручную - это означает : сохраненный вручную XLS-файл запускает метод при открытии книги и выполняет действие-XLSM - файл (с полным тем же содержимым) этого не делает !!!
В данный момент я использую старый XLS-формат, чтобы иметь эту функцию, но это не может быть решением проблемы ... :(
Maciej Los
Пробовали ли вы скомпилировать код VBA перед сохранением файла excel с расширением xlsm?
Ralf Meier
Извиняюсь... Excel и компиляция ???
Maciej Los
Да! Перейдите в панель кода VBA (ALT + F11), меню "Debug->Compile VBAProject".
Ralf Meier
Никакое изменение ...
Но я думаю, что Excel делает это тоже автоматически ...
Maciej Los
Ну, Excel не делает этого автоматически.
Вы пробовали открыть этот xlsm файл на другой машине? Приняли ли вы предупреждение Excel при первом запуске файла xlsm?
Ralf Meier
Да ... такое же поведение.
И да (конечно) Я переключил макро-защиту внутри доверительного центра на самый низкий уровень.
Он не исходит из содержания метода - он работает правильно, если я запускаю его в режиме отладки, а также (еще раз), если я сохраняю абсолютно тот же файл в формате Excel97 (*.XLS).
Это мне непонятно ... но я предполагаю, что есть свойство (внутри Excel), которое уже отключено, которое вызывает такое поведение.
Чтобы сделать все завершенным : внутри рабочей книги есть еще один метод-Object (Workbook_BeforeClose) - этот метод работает всегда (также внутри XLSM-файла) - означает : это событие вызывается (или обработчик подключен к этому методу), и мне кажется, что в случае Workbook_Open-метода Eventhandler не подключен к методу. Но я не мог манипулировать этим поведением ... :(
Я думаю, мы немного знаем друг друга и надеюсь, вы знаете, что вам не нужно искать основное-неудачи у меня ;-)
Maciej Los
:)
Ну, ш...т бывает... Не могли бы вы оказать мне услугу? Создайте новую рабочую книгу, добавьте метод Workbook_Open() и сохраните ее в обоих форматах. Затем, можете ли вы поделиться ими (через Google Диск или что-то подобное)? Я бы посмотрел на них и дал вам знать, если бы такое же странное поведение произошло на моей машине.
Ralf Meier
Хорошее предложение ...
Если я создаю новый (голый) XLSM-файл, он работает - я вызываю MsgBox внутри Workbook_Open, и это происходит.
Но это не решает моей проблемы - вопрос все тот же : почему он (мой проект) работает как XLS-файл и почему он не работает как XLSM-файл ?
Чего я до сих пор не пробовал, так это (но скоро я это сделаю) :
Сохранить проект в формате xls, а потом открыть xls-файл и сохранить (и конвертировать) его в xlsm. Посмотрим ...
Maciej Los
Похоже, ваша исходная книга сломана (и не может быть правильно сохранена в формате OpenXML). Как я уже говорил, иногда такое случается.
Ralf Meier
Я не верю, что она сломана - возможно, что-то другое.
Я сделал свой тест - отрицательный результат. Это все то же самое : XLS работает (без каких-либо ограничений), а с XLSM Workbook_Open не работает. Каждая другая функциональность (а ее очень много) работает правильно ...
Я полагаю, что есть установка, которая делает это, но я понятия не имею, где ...
Но спасибо за Вашу поддержку, Мацей ... :-)
Maciej Los
Извините, но здесь нет декораций. Думать об этом. Если вновь созданная книга работает так же, почему ваша исходная книга не работает должным образом, когда вы сохраняете ее как xlsm? Он сломан и не может быть сохранен в формате OpenXML.
Удачи вам!
Ralf Meier
Я согласен (в основном) с вами ... а также нет (я попробовал то же самое с некоторыми другими книгами, которые у меня есть - с тем же результатом) ...
Maciej Los
Нет, я не ищу в тебе элементарных неудач ;)