Страницы: 1
RSS
Может ли работать код в 2010 Excel?, Утверждают, что в 2003 работает
 
Приветствую.
Вчера был задан вопрос, почему не работает код в 2010 Excel.
При этом человек утверждает, что в 2003 все работает.
В файле обнаруживаю код (выжимка)
Код
Private Sub Workbook_Open()
    Application.CommandBars("FFF").Visible = False
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.CommandBars("FFF").Delete
    Cancel = False
End Sub

На мой взгляд, этот код не должен работать нигде.
Или я ошибаюсь, и в 2003 этот код при каких-то условиях работать может?
 
Вообще, работать должен во всех версиях, начиная с 2003. Только вот при открытии книги выпадет в ошибку, т.к. нигде CommandBars("FFF") не создается, зато при закрытии книги удаляется(что тоже вызовет ошибку, т.к. даже удалять нечего).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Я подумал что возможно такое меню изначально в файле есть - поэтому есть что скрывать.
Затем где-то что не видим в процессе работы с файлом создаются ещё такие меню - так что после удаления что-то в файле остаётся, чтоб не ругалось при следующем открытии
Изменено: Hugo - 10.10.2013 13:47:13
 
В том то и дело, что нигде не создается, а при закрытии - удаляется.
Поэтому, естественно, при открытии - ошибка.

Но человек утверждает, что в 2003 работает.

Изначально в файле - это как?
 
Вот Вы логически подумайте: как можно сделать невидимым то, чего и так нет? Естественно ошибка будет - я писал уже об этом. Либо добавьте on Error Resume Next, либо создавайте это меню сами, а потом уже делайте невидимым.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий, как сделать этот код рабочим, я знаю.
 
Так в чем вопрос?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Панель могла создаваться, например, какой-нибудь надстройкой, которая загружалась при открытии Excel 2003.
Тогда код - рабочий
Изменено: ZVI - 10.10.2013 14:59:46
 
Цитата
На мой взгляд, этот код не должен работать нигде.
Или я ошибаюсь, и в 2003 этот код при каких-то условиях работать может?
 
Андрей, см. ответ 17 секундами раньше предыдущего сообщения.
Вы там на что поспорили-то? ;)
 
RAN, я в первом же своем сообщении дал вроде как исчерпывающий ответ. Сам по себе отдельно такой код выдаст ошибку. Если же его использовать с другими кодами, которые до выполнения этого кода создают панель - то он будет работать без ошибок. Что еще осталось непонятным из этого?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
при условии, что панель существует - код рабочий :)

суть не в версии иксель, а в настройках - как указал ZVI, если в 2003м была надстройка, создающая эту панель, а в 2007 она не подключена, то этим и может объясняться результат

видимо кто-то просто делал костыль, убирая эту панель..
Живи и дай жить..
 
Какой-то одноразовый костыль... :)
В смысле "запускать только один раз за сеанс!"
 
Да уж!
Прошу прощения за отнятое время.
Сейчас посмотрел в этом файле инструкцию по использованию.

Оказывается там есть рекомендация скачать с сайта надстойку.

Честно говоря, даже в голову не пришло, что к коду из под макрорекордера еще и надстройка требуется.

Ноги растут отсюда.
 
Ну, котяра!)
 
Цитата
Какой-то одноразовый костыль...  
В смысле "запускать только один раз за сеанс!"

ну .. панель создается один раз - и убираем ее один раз. все логично :) удаление, конечно, совершенно лишнее - так это ж самодельный костыль :)
Живи и дай жить..
Страницы: 1
Наверх