Цитата |
---|
Ткач Александр написал: данные о системе |
Восстановление связи с Ribbon
17.10.2019 17:38:32
|
|
|
|
17.10.2019 17:43:58
См. ниже
Изменено: |
|
|
|
17.10.2019 17:52:26
Вставил в модуль API_function вместо строки с RtlMoveMemory такой код:
Компилируется без проблем, строка после #Else помечена красным и это нормальное описанное в документации поведение VBA, означающее, что данный фрагмент в 64-битной версии не используется. Проверьте, пожалуйста, у Вас с этим файлом при подобной замене кода выводится сообщение об ошибке при VBE - Debug - Compile VBAProject ?
Изменено: |
|||||
|
|
17.10.2019 17:57:53
По вопросам из тем форума, личку не читаю.
|
|||
|
|
17.10.2019 18:07:30
Михаил, спасибо за уточнение
|
|
|
|
17.10.2019 22:20:56
Ткач Александр, я привел сравнение с плюсами не для того чтобы выделить какой либо язык, а наоборот, сказать о том, что для каждого языка есть своя ниша, где он хорошо справляется. Наверное теория Дарвина работает и здесь, раз жив, значит востребован. Ведь не поспоришь... Вот вы на Шарп какой функционал перевели? В какой форме: надстройка VSTO, Excel-DNA, СОМ-библиотека или обычная процедурная? А ведь еще есть возможности написать решения для Excel на (VBA - уже знаем, вам не подходит ), C/C++, JavaScript (коллеги дополните, если что упустил). Провокационный вопрос, какой из них лучший, и почему именно он?
Собственно заканчиваю: ИМХО, лучшего нет. Да и конечно Владимир прав, обсуждение багов VBA - лучше в отдельную тему, не делать кашу здесь. К сожалению, сейчас не могу протестировать решение предложенное Владимиром, но за темой слежу.
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
|
18.10.2019 13:40:46
Добрый день коллеги!
Я поддерживаю предложение о том, что в данной теме должно быть обсуждение именно ее. Поэтому давайте закончим с багами, если кто-то хочет может открыть эту тему, я присоединюсь и буду выкладывать туда материалы. Поймите правильно, у меня крайне мало времени, я часто езжу в командировки (вчера писал из Москвы, сегодня из Тулы), вести тему форума я не смогу физически. Дело не только в том, что строка красная. Я использую процедуры перезаписи кода из кода во время исполнения с перекомпиляцией, и в этом случае перекомпиляция не выполняется. И этого вполне достаточно, чтобы не использовать такой подход. Еще учтите тот факт, что в файле может быть не 8-10 API (как в выложенном файле, который находится в начале разработки), а 30-40 штук. Теперь представьте себе массив объявлений самих API, и массив переменных типа LongPtr в различных модулях в разных частях проекта.
Давайте все-таки вернемся к теме RibbonFluent, а то мы зашли совсем в другую сторону, заблудились можно сказать))) |
|||
|
|
18.10.2019 16:02:27
Продолжая тему
Изменено: |
|||
|
|
18.10.2019 20:20:21
Изменено: |
|||
|
|
18.10.2019 22:32:09
По теме, за вариант кода плюсую и согласен с Владимиром, на любителя, но возможно кто-то будет использовать именно ваш.
«Бритва Оккама» или «Принцип Калашникова»?
|
|||||
|
|
19.10.2019 06:50:33
У Автора темы все правильно: [RibbonPointer] = Evaluate("RibbonPointer") и выдает требуемое число, так как RibbonPointer это не переменная, а имя. |
|||||
|
|
24.10.2019 09:03:12
Добрый день, уважаемые коллеги!
ZVI, у автора темы п. 4, строки кода 6, 9
bedvit, если действительно интересно, то мы использовали следующий подход. Книга Excel - user interface, строки и колонки - поля данных, и просто разметка листа типа координатной сетки. Наша надстройка на C# уровня файла (не приложения!). Каждый файл заточен под определенные данные. Например, в одном Организация корпоративов, в другом Анализ проектов предевелопмента и т.д. Данные хранятся в базе. При открытии файла данные подгружаются автоматом. В файле Excel работает user, там вычисления, графики и любые персональные данные и заметки. При закрытии файла определенные данные подготавливаются и отправляются на сервер. Индивидуальная пользовательская информация сохраняется только в файле. Писано сразу на С# в VS и встроено в файл в виде надстройки средствами VS. VBA используется для макетирования, т.к позволяет выиграть время. Кроме того, если использовать один файл в процессе разработки, а затем писать надстройку, то там остается куча мусора, который без доступа к коду MSO убрать практически невозможно. VBA, VB и С# не взаимодействуют никак. От VB. Net мы отказались, слишком громоздко писать. И самая лучшая поддержка у C#. Вероятно он станет кроссплатформенным. Но и это уже вчерашний день когда мы говорим об office (не обязательно MSO, но и свободных). Сегодня и завтра облака + JS + JSON (взамен xml и/или совместно) + google sheet и/или office 360. Полагаю, что совсем скоро персональный софт потеряет смысл. Сегодня даже сложные и очень тяжелые графические программы у auto desk (fusion 360 например из autodesk 360) перешли в облака.
Изменено: |
|||
|
|
24.10.2019 18:21:28
Выкладываю таблицу всех элементов ribbon mso excel: вкладки кнопки, всплывающие меню и т.д.
Есть имена и id. Скачал у MS в этом году. Возможно это самая полная таблица. |
|
|
|
04.12.2019 17:02:02
Добрый день! Недавно ко мне обратились с вопросом: Как вызвать в vba процедуру, которая назначена событию кнопки на ленте Ribbon?
Есть стандартная ситуация, когда в xml мы создаем кнопку. Например
Для VBA события элементов управления ленты Ribbon недоступны. Процедура Sub cmdMyButton_RibClick(control As IRibbonControl) инициируется при возникновении события элемента управления на ленте через закрытый код MS Office посредством callback или обратного вызова. Со стороны Ribbon при нажатии на кнопку поступает запрос к VBA на наличие процедуры cmdMyButton_RibClick. Если такая процедура есть, то она исполняется, а если нет, то поступает сообщение о том, что процедура не найдена. И вообщем это все, и какого-то особого значения не имеет. Со стороны VBA процедура Sub cmdMyButton_RibClick(control As IRibbonControl) самая рядовая процедура, никак не привязанная ни к каким событиям, ни к каким элементам управления. И для VBA аргумент control As IRibbonControl любой возможный control типа IRibbonControl (если бы аргумент был control As ComboBox, то можно было передать любой ComboBox). Этим и можно воспользоваться.
Аналогично можно вызвать любую другую процедуру, передав ее аргументам соответствующие значения. Возможно моя заметка будет кому-нибудь интересна. Всем удачи)
Изменено: |
|||||||||
|
|
01.02.2020 10:06:43
|
|
|
|
01.02.2020 16:59:52
Добрый день.
VW3, вышлите мне файл на почту, я посмотрю. контакт удален (см. правила форума) [МОДЕРАТОР] |
|
|
|
01.02.2020 22:22:16
Вот файл
|
|
|
|
02.02.2020 18:16:58
Добрый день.
VW3, высылаю вам файл с обновленным кодом. Объяснения в коде VBA через # |
|
|
|
03.02.2020 23:16:51
|
|||||
|
|
04.02.2020 08:53:33
Однако я постарался показать суть, и надеюсь у меня получилось) |
|||
|
|
04.02.2020 09:26:40
|
|||
|
|
16.02.2020 14:35:35
|
|||
|
|
18.05.2020 20:42:45
здравствуйте, поделитесь пжл кодом для Ворда, чтобы кодом ВБА править риббон ленту на лету (при открытом документе Ворда) спс
|
|
|
|
18.05.2020 20:47:54
Ципихович Эндрю, а на форумах по Word Вам не ответили?
|
|
|
|
18.05.2020 20:49:17
я не спрашивал
|
|
|
|
18.05.2020 21:15:13
Так начать лучше оттуда ))
|
|
|
|
19.05.2020 04:59:27
Хотя конечно может быть под этим подразумевается банальное нечто скрыть/показать... |
|||||
|
|
19.05.2020 08:42:25
Добрый день. Эндрю, если вы хотите создать свою ленту в Word, вам придется изучить эту тему.
В качестве поиска рекомендую использовать предложение Customize the ribbon word vba В качестве старта предлагаю вам прочитать материал по ссылке: Принцип построения Ribbon в MS Office идентичен - xml +vba. Также вам нужно подобрать удобный редактор xml. В сети можно найти достаточно материалов на эту тему. |
|
|
|
19.05.2020 08:55:46
|
|||||
|
|
||||