[CDR 2023] Увеличить количество шагов Undo в редакторе VBA.

ydobemos

Участник
Топикстартер
Сообщения
50
Реакции
1
Крошечное количество шагов Undo (всего 20) в редакторе VBA (7.1) сводит с ума. Нет места для экспериментов, даже простые изменения могут привести к горам повторного кодирования. Конечно, можно "просто" куда-то скопировать файл .gms и даже автоматизировать процесс, но это нелепо.

Много гуглил и нашел решение. Есть только одна крошечная проблема - это далеко за пределами моих навыков (и все готовые решения для версий VBA < 7).


Пытался отредактировать VBE7.dll, но все, что мог сделать, это найти похожие значения 20, и их несколько. Изменение их на максимальное значение FF ничего не сделало.

Мог ли кто-то с необходимыми навыками помочь, отредактировав этот файл? Если вы используете VBA, он уже есть в C: \Program Files\Common Files\microsoft shared\VBA\VBA7.1
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
EbGetRedoText и EbGetUndoText нашли?
 

ydobemos

Участник
Топикстартер
Сообщения
50
Реакции
1
Переключился на X64dbg, который показывает данные намного лучше. Но нет, не нашел.

Был бы очень признателен, если бы кто-то с нужными знаниями мог бы это сделать. Похоже Microsoft (уже 10 лет) не собирается что-то еще менять в VBA. Значит действие одноразовое а благодарность вечная.
 

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
Т.е. вы в ВБА вызываете кучу действий, которые потом затирают весь undo лист?
Так группируйте все ваши действия, чтобы они были одним пунктом undo:

Код:
ActiveDocument.BeginCommandGroup "Название группы действий"
 . действия....
ActiveDocument.EndCommandGroup
 

fersat

Участник
Сообщения
15
Реакции
11
Оконная процедура редактора вроде-бы находится по смещению 0A963Ch в файле VBE7.dll. Дальше нужно искать обработчик нажатия CTRL+Z - IDA в помощь.
 

ydobemos

Участник
Топикстартер
Сообщения
50
Реакции
1
Конечно же как раз третий редактор из всех что попробовал - IDA - дал самый лучший до этого результат. Следуя наверху указанной ссылке могу найти связанные с Undo и Redo функции. Даже видеть их в приятном виде. Только толку от этого мало, так как не имею ни малейшего понятия как работать с кодом в такой форме и, похоже, все команды совершено не похожи на то о чем речь в vbforums.com. (Из-за перехода на 64 бита с VBA 7? Кто знает, уж точно не я).

1713797532078.png


Единственная надежда что кто-нибудь здесь (ну, или в худшем случае далее где-то еще) способен ввести эти изменения и поделится файлом (или точно сказать какие значения редактировать).
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
1. Переключите в режим отображения из блок-схемы в Text, иначе раздражает
2. Вы нашли вызов функции CanUndo, ткните туда, далее по инструкции
 
Последнее редактирование: