Прикладываю файл к своему вопросу. Создается вкладка Quality Standard, изменяющаяся в зависимости от перехода на листы. Всё работает до операции "Сохранить как".
Что не правильно? Чего не хватает?
Спасибо.
Прикладываю файл к своему вопросу. Создается вкладка Quality Standard, изменяющаяся в зависимости от перехода на листы. Всё работает до операции "Сохранить как".
То с чем вы столкнулись - известный баг, а по мнению многих даже и не баг, а стандартное поведение, именно Save As (ribbon тут не при делах), которое было, есть и будет (присутствует в 2013, в следующих версиях тоже едвали изменят). MS по этому поводу безмолствует и скромно советует пользоваться надстройками, отдавая предпочтение VSTO.
Подробности по данному вопросу доступны в гугле.
Ну теперь хотябы понятно, обо что там у вас.
То с чем вы столкнулись - известный баг, а по мнению многих даже и не баг, а стандартное поведение, именно Save As (ribbon тут не при делах), которое было, есть и будет (присутствует в 2013, в следующих версиях тоже едвали изменят). MS по этому поводу безмолствует и скромно советует пользоваться надстройками, отдавая предпочтение VSTO.
Подробности по данному вопросу доступны в гугле.ElenHim
А может есть возможность после "Сохранить как" перезапустить макрос, запускаемый из xml через onLoad (в моем случае это Sub OnRibbonLoad(ribbon As IRibbonUI)) может тогда ribbon "освежится"?
Спасибо, утешил
А может есть возможность после "Сохранить как" перезапустить макрос, запускаемый из xml через onLoad (в моем случае это Sub OnRibbonLoad(ribbon As IRibbonUI)) может тогда ribbon "освежится"?Seregey_M
Всё дело в том, как реализован пресловутый SaveAs: сохраняется копия текущей книги собственно же книга, копия которой сохранена в предыдущем шаге - закрывается без сохранения
При этом проедаются все полимеры объекты, ассоциированные с изначальной книгой, а взамен получаем набор новых, принадлежащих полученной в результате копии. Ribbon же, как и некоторые другие объкты, связан именно с книгой (Workbook), а не Application, но у нас нет способа инвокнуть его "по требованию", только в колбэке "OnLoad". Строго говоря, именно поэтому нам и нужно сохранять копию ribbon при первом запуске, потом его взять будет неоткуда.
Если же в событии книги BeforeSave отменить SaveAs, а вместо него явно сохранить копию книги и явно же её открыть (с целью инвокнуть колбэк "OnLoad" в новой книге) - получим ошибку выполнения "бла-бла-бла ... in breake mode ... бла-бла-бла "
Выход из ситуации, как я упоминал ранее, запилить ribbon в надстройке (с пространствами имён и прочим блэкджеком), но это уже немного другой уровень
С текущим подходом - нет.
Всё дело в том, как реализован пресловутый SaveAs: сохраняется копия текущей книги собственно же книга, копия которой сохранена в предыдущем шаге - закрывается без сохранения
При этом проедаются все полимеры объекты, ассоциированные с изначальной книгой, а взамен получаем набор новых, принадлежащих полученной в результате копии. Ribbon же, как и некоторые другие объкты, связан именно с книгой (Workbook), а не Application, но у нас нет способа инвокнуть его "по требованию", только в колбэке "OnLoad". Строго говоря, именно поэтому нам и нужно сохранять копию ribbon при первом запуске, потом его взять будет неоткуда.
Если же в событии книги BeforeSave отменить SaveAs, а вместо него явно сохранить копию книги и явно же её открыть (с целью инвокнуть колбэк "OnLoad" в новой книге) - получим ошибку выполнения "бла-бла-бла ... in breake mode ... бла-бла-бла "
Выход из ситуации, как я упоминал ранее, запилить ribbon в надстройке (с пространствами имён и прочим блэкджеком), но это уже немного другой уровеньElenHim
Хотя, я пожалуй лучше руками. Я только сейчас понял, что неохота заморачиваться с соблюдением структуры XML. Но тому, кто захочет, ниточка удалено, ссылка не имеет отношения к теме;)
Хотя, я пожалуй лучше руками. Я только сейчас понял, что неохота заморачиваться с соблюдением структуры XML. Но тому, кто захочет, ниточка удалено, ссылка не имеет отношения к теме;)Константин
Как вы программно ни бейтесь, а такого удобного варианта настройки "под себя", который был в Офисе до рождения в чьём-то воспалённом мозгу риббона уже не добиться. Вместе с водой мелкомягкие из ванночки ребёнка выплеснули. И ведь что обидно: именно к гибкости интерфейса претензий к офису как раз и не было. Где тебе удобно, там кнопочку и поставишь или пенель создашь, рисунок на кнопочке какой хочешь сделаешь... Умеешь программно - флаг тебе в руки. Не умеешь - есть встроенный редактор элементов панелей управления. И очень многие разработчики стали применять эту оказавшуюся удачной методику настройки и вид меню. Это "де-факто" стало стандартом построения панелей управления программ. Так ведь нет! Какому-то дебилу с очень короткой памятью, но с очень большим влиянием в Микрософте оказалось трудно запомнить, где и какая команда на панелях в меню расположена. И по руководящей "как всегда гениальной мысли" нижестоящие начальники пополизы решили "а пусть программа сама за нас думает, какие элементы управления и когда нам нужны". Я хочу сам решать когда, где и что из инструментов мне нужно! НЕНАВИЖУ РИББОН-ИНТЕРФЕЙС! Но что делать... "Мыши кололись, плакали, но продолжали жрать кактус"
Как вы программно ни бейтесь, а такого удобного варианта настройки "под себя", который был в Офисе до рождения в чьём-то воспалённом мозгу риббона уже не добиться. Вместе с водой мелкомягкие из ванночки ребёнка выплеснули. И ведь что обидно: именно к гибкости интерфейса претензий к офису как раз и не было. Где тебе удобно, там кнопочку и поставишь или пенель создашь, рисунок на кнопочке какой хочешь сделаешь... Умеешь программно - флаг тебе в руки. Не умеешь - есть встроенный редактор элементов панелей управления. И очень многие разработчики стали применять эту оказавшуюся удачной методику настройки и вид меню. Это "де-факто" стало стандартом построения панелей управления программ. Так ведь нет! Какому-то дебилу с очень короткой памятью, но с очень большим влиянием в Микрософте оказалось трудно запомнить, где и какая команда на панелях в меню расположена. И по руководящей "как всегда гениальной мысли" нижестоящие начальники пополизы решили "а пусть программа сама за нас думает, какие элементы управления и когда нам нужны". Я хочу сам решать когда, где и что из инструментов мне нужно! НЕНАВИЖУ РИББОН-ИНТЕРФЕЙС! Но что делать... "Мыши кололись, плакали, но продолжали жрать кактус" Alex_ST
Дата: Понедельник, 09.12.2013, 16:28 |
Сообщение № 33
Группа: Гости
Alex_ST, а мне нравится ленточная панель. Чтобы привыкнуть, потребовалась 1 неделя. Зато при работе в 1,5-3 раза меньше времени уходит на перемещение по меню и кликанье (а для того, кто 8 часов за офисом сидит - это время значительное). Чтобы разобраться со структурой xml времени, конечно, требуется больше. Кому нравятся надстройки - так их в 12 версии и выше никто не отменял. Пишите как удобно "без юзабилити". Разве что вас выводит из себя, что кнопки теперь на отдельной вкладке. Ну так они же есть! Про минусы тоже согласен: теперь файл нужно распаковать (и только закрытый), затем валидатором пройтись по структуре и снова запаковать. >> Я хочу сам решать когда, где и что из инструментов мне нужно! Где-то была надстройка, делающая из ленточного меню стандартное 2003 ;) Так что проблем не вижу (надо её только погуглить).
ElenHim спасибо за подсказки - было что погуглить. А с консервантами вообще разговаривать не хочу: даёшь ссылки как реализовать, так им ещё и не нравится.
Alex_ST, а мне нравится ленточная панель. Чтобы привыкнуть, потребовалась 1 неделя. Зато при работе в 1,5-3 раза меньше времени уходит на перемещение по меню и кликанье (а для того, кто 8 часов за офисом сидит - это время значительное). Чтобы разобраться со структурой xml времени, конечно, требуется больше. Кому нравятся надстройки - так их в 12 версии и выше никто не отменял. Пишите как удобно "без юзабилити". Разве что вас выводит из себя, что кнопки теперь на отдельной вкладке. Ну так они же есть! Про минусы тоже согласен: теперь файл нужно распаковать (и только закрытый), затем валидатором пройтись по структуре и снова запаковать. >> Я хочу сам решать когда, где и что из инструментов мне нужно! Где-то была надстройка, делающая из ленточного меню стандартное 2003 ;) Так что проблем не вижу (надо её только погуглить).
ElenHim спасибо за подсказки - было что погуглить. А с консервантами вообще разговаривать не хочу: даёшь ссылки как реализовать, так им ещё и не нравится.Константин
Дата: Понедельник, 09.12.2013, 16:38 |
Сообщение № 34
Группа: Гости
Офф: Pelena, это касается только меня и того модератора, что удалил мою ссылку. А поскольку вы тут вообще ответственность несёте за то, что на форуме размещается, а размещённое мной является объектом исключительного авторского права (если я докажу это в суде), то у вас нет никаких законных прав на редактирование моих сообщений. Исходя из изложенного тон здесь вполне уместный. Так что у вас тут за правила такие, нарушающие законы РФ, Украины и международного права?
Офф: Pelena, это касается только меня и того модератора, что удалил мою ссылку. А поскольку вы тут вообще ответственность несёте за то, что на форуме размещается, а размещённое мной является объектом исключительного авторского права (если я докажу это в суде), то у вас нет никаких законных прав на редактирование моих сообщений. Исходя из изложенного тон здесь вполне уместный. Так что у вас тут за правила такие, нарушающие законы РФ, Украины и международного права?Константин
Где-то была надстройка, делающая из ленточного меню стандартное 2003
Нет такой надстройки, которая заменяет риббон-меню. Есть несколько надстроек (самая приличная из них, ИМХО, UBit Old Menu) которые создают дополнительную вкладку, на которой элементы управления расположены примерно так, как было ПО УМОЛЧАНИЮ в 2003. Добавить/удалить/переместить/переименовать/сменить рисунок на кнопках и менюшках этой панели можно только через XML-редактор, а это огромный геморр при настройке. Ведь если вдруг подумал, что логичнее было бы какую-то кнопку переместить в другое место, то это целая история, начиная уже с того, что нужно вспоминать, где лежит файл настроек и чем его править, а потом вспомнить основы XML, прочно забытые за ненадобностью в повседневной жизни (а с комментариями в XML совсем туго - один на секцию, не то что в VBA - хоть каждую строку комментируй чтобы потом было проще разобраться)
Разве что вас выводит из себя, что кнопки теперь на отдельной вкладке.
В том-то и дело, что я в повседневной работе использую несколько десятков макросов, кнопки для вызова которых имеют смысловые рисунки и расположены по смыслу в нужных панелях управления, а не на одной вкладке.
Где-то была надстройка, делающая из ленточного меню стандартное 2003
Нет такой надстройки, которая заменяет риббон-меню. Есть несколько надстроек (самая приличная из них, ИМХО, UBit Old Menu) которые создают дополнительную вкладку, на которой элементы управления расположены примерно так, как было ПО УМОЛЧАНИЮ в 2003. Добавить/удалить/переместить/переименовать/сменить рисунок на кнопках и менюшках этой панели можно только через XML-редактор, а это огромный геморр при настройке. Ведь если вдруг подумал, что логичнее было бы какую-то кнопку переместить в другое место, то это целая история, начиная уже с того, что нужно вспоминать, где лежит файл настроек и чем его править, а потом вспомнить основы XML, прочно забытые за ненадобностью в повседневной жизни (а с комментариями в XML совсем туго - один на секцию, не то что в VBA - хоть каждую строку комментируй чтобы потом было проще разобраться)
Разве что вас выводит из себя, что кнопки теперь на отдельной вкладке.
В том-то и дело, что я в повседневной работе использую несколько десятков макросов, кнопки для вызова которых имеют смысловые рисунки и расположены по смыслу в нужных панелях управления, а не на одной вкладке.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Понедельник, 09.12.2013, 16:51
Офф: Pelena, это касается только меня и того модератора, что удалил мою ссылку… размещённое мной является объектом исключительного авторского права … у вас нет никаких законных прав на редактирование моих сообщений
Я-то пишу, объясняю… А это тролль, оказывается. Лена, бань наглеца! (проверь, к стати, это не Паттт ли вернулся?) [moder]Убил. _Boroda_
Офф: Pelena, это касается только меня и того модератора, что удалил мою ссылку… размещённое мной является объектом исключительного авторского права … у вас нет никаких законных прав на редактирование моих сообщений
Я-то пишу, объясняю… А это тролль, оказывается. Лена, бань наглеца! (проверь, к стати, это не Паттт ли вернулся?) [moder]Убил. _Boroda_Alex_ST
немного по ribbon... Нашел в сети описание как вручную сделать ribbon, там в целом, про то, как распаковать файл надстройки, с расширением xlam и создать директорию customui, в ней создать файл customui\customui.xml и там прописать вот такую структуру xml
Так вот... Русские названия вкладок не работают? Как бы это исправить?
немного по ribbon... Нашел в сети описание как вручную сделать ribbon, там в целом, про то, как распаковать файл надстройки, с расширением xlam и создать директорию customui, в ней создать файл customui\customui.xml и там прописать вот такую структуру xml
А где там у Вас русские названия? В примере - только английские. Или это работающий пример? Тогда зачем Вы его выкладываете, а не тот, что не работает? Хотя, вообще то, русские или английские имена влиять не должно. А вот лидирующие и финиширующие пробелы внутри тэгов мне не очень нравятся. Я попробовал чуть подправить: убрал лишние пробелы, чуть поправил названия для внятности образца, ну и табами подравнял для читабельности. Попробуйте для начала так:[vba]
[/vba] а если не заработает, попробуйте убрать указание, перед какой вкладкой вставлять Вашу. (если Вы не правильно указываете её имя, то схема просто не срабатывает, а если просто не указать, то вкладка вставится по умолчанию в конце)
А где там у Вас русские названия? В примере - только английские. Или это работающий пример? Тогда зачем Вы его выкладываете, а не тот, что не работает? Хотя, вообще то, русские или английские имена влиять не должно. А вот лидирующие и финиширующие пробелы внутри тэгов мне не очень нравятся. Я попробовал чуть подправить: убрал лишние пробелы, чуть поправил названия для внятности образца, ну и табами подравнял для читабельности. Попробуйте для начала так:[vba]
[/vba] а если не заработает, попробуйте убрать указание, перед какой вкладкой вставлять Вашу. (если Вы не правильно указываете её имя, то схема просто не срабатывает, а если просто не указать, то вкладка вставится по умолчанию в конце)Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Четверг, 23.10.2014, 21:26
Хм... Вопрос так и стоял, как вместо английских имен вставить русские. То, что я в примере напишу русские не сильно поможет делу, потому как кодировку он какую-то загадочную записывает... Собственно, видимо, дело в кодировке... Но воспользовавшись RibbonXMLEditor_4_1 проблему решил, хотя вопрос о кодировке остался. А вот еще один вопрос. Вставляю эту конструкцию в файл personal.xlsb, а она не работает... Вставил через RibbonXMLEditor_4_1
Хм... Вопрос так и стоял, как вместо английских имен вставить русские. То, что я в примере напишу русские не сильно поможет делу, потому как кодировку он какую-то загадочную записывает... Собственно, видимо, дело в кодировке... Но воспользовавшись RibbonXMLEditor_4_1 проблему решил, хотя вопрос о кодировке остался. А вот еще один вопрос. Вставляю эту конструкцию в файл personal.xlsb, а она не работает... Вставил через RibbonXMLEditor_4_1vlasssov71
Сообщение отредактировал vlasssov71 - Четверг, 30.10.2014, 14:40
vlasssov71, т.е. с английскими именами схема работает, а с кириллическими нет? Чудеса! Вы через Ribbon XML Editor редактируете? Какая Винда? При копировании-вставке в форум текста из VBE вместо русских букв "кракозябры" не получаются? Загляните в топик Борьба с "кракозябрами" в VISTA и Win-7 и, как там указано, замените c_1252.nls на c_1251.nls
vlasssov71, т.е. с английскими именами схема работает, а с кириллическими нет? Чудеса! Вы через Ribbon XML Editor редактируете? Какая Винда? При копировании-вставке в форум текста из VBE вместо русских букв "кракозябры" не получаются? Загляните в топик Борьба с "кракозябрами" в VISTA и Win-7 и, как там указано, замените c_1252.nls на c_1251.nlsAlex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Четверг, 30.10.2014, 14:25