Ralf Meier Ответов: 1

Проблема с 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

Нет, я не ищу в тебе элементарных неудач ;)

1 Ответов

Рейтинг:
2

Maciej Los

В связи с нашей дискуссией в комментариях к этому вопросу...

Там нет настройки (в книге Excel), которая swithces/forces выполнение Workbook_Open() макрос между файлами *.xls и *.xlsm. Этот макрос выполняется независимо от версии файла Excel. Видеть: Рабочая тетрадь.Открытое мероприятие (в формате Excel) | Майкрософт документы[^]

Я думаю, что что-то не так с установкой/конфигурацией MS Office. Пожалуйста, выполните следующие действия:: Книга Excel с поддержкой макросов (.файл xlsm) макросы отключены и нет очевидного способа повторного включения- переполнение стека [^]


Ralf Meier

Весьма интересный ... Я перепробовал все без особого успеха.
Но... если я иду в Trustcenter и отключаю выполнение макросов, чтобы "выбрать отключить все макросы с уведомлением" и перезапустить Excel, я должен подтвердить выполнение макросов. Если я решу "Да", это сработает (Workbook_Open) - но только эта попытка. 2-й вызов приводит к уже известному результату.
Так что это становится все более и более непонятным для меня.
Дома, где я тоже попробовал, у меня есть другая офисная версия, чем на работе-с тем же результатом. Так что это не может быть версия-depandant.
Но это, возможно, может быть "особенностью" от чего-то другого, что существует на работе, а также дома ...

Так что, извини Мацей, я не могу принять это решение ...

Maciej Los

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

Похоже, у вас недостаточно прав для изменения настроек Office permament. Это может быть вызвано политиками windows (рекомендуется повторное создание профиля) или установкой Office (требуется ремонт).

Удачи вам!

Ralf Meier

Я немного подумал о том, что вы написали :
Это не логично, что у меня есть проблема с моей офисной установкой : если вы правы, то это не будет новая рабочая книга. Это должно быть что - то внутри самой книги-но и это не могло быть так (из-за всего того, что я писал раньше).
Но я понимал - это общая проблема ... но это также швы, что нет никакого решения. Поэтому я буду работать с рабочими книгами в формате Excel97 и иметь функциональность. Но это глупый обходной маневр ... извините ...

Я дал вам 5+ за вашу помощь и поддержку ...
Всегда приятно писать и обсуждать с вами Мацей ...

Maciej Los

Спасибо, Ральф.
Мне также очень приятно обсудить это с вами.

Наконец, я бы посоветовал прочитать эту тему: excel - есть ли проблема совместимости между макросами, написанными для XLS, XLSX и XLSM? - переполнение стека[^Там вы можете найти что-то полезное для решения вашей проблемы (особенно во втором ответе).

Ваше здоровье!
Мацей