[CDR 2017-2021] Создать окно с уведомлением и продолжить выполнение макроса

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
Добрый день. Возможно ли в процессе выполнения макроса выводить уведомления о процессе обработки? Без прерывания выполнения макроса и ожидания нажатия на кнопку messagebox.

Например:
Файл найден - ok
Файл импортирован - ок
Обработан текст - ок
Файл сохранен - ок

Гугл мне не помог. Надеюсь на Вас)
 

Alek32

Участник
Сообщения
25
Реакции
18
Добрый день. Возможно ли в процессе выполнения макроса выводить уведомления о процессе обработки? Без прерывания выполнения макроса и ожидания нажатия на кнопку messagebox.
Перенести код в форму и выводить на ней. Можно и прогрессбар из двух Label сделать.

Можно в окне Immediate:
Код:
Debug.Print "TEXT"
 
  • Спасибо
Реакции: tohaa

DukereD

макрософил
Сообщения
462
Реакции
114
прогресс бар можно сделать еще стандартно внизу. но что-то он подглючивает иногда

Код:
Private Sub TestProgressBar()
Const Max = 1000
Dim stat As AppStatus, z&
    Set stat = Application.Status
    stat.BeginProgress
    Application.Refresh
    For z = 1 To Max
        stat.Progress = Math.round(z / 10, 0)
        stat.UpdateProgress step = 5
        Application.Refresh
    Next
   stat.EndProgress
End Sub
 

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
прогресс бар можно сделать еще стандартно внизу. но что-то он подглючивает иногда

Код:
Private Sub TestProgressBar()
Const Max = 1000
Dim stat As AppStatus, z&
    Set stat = Application.Status
    stat.BeginProgress
    Application.Refresh
    For z = 1 To Max
        stat.Progress = Math.round(z / 10, 0)
        stat.UpdateProgress step = 5
        Application.Refresh
    Next
   stat.EndProgress
End Sub
Пробовал в 19й и 21й версии корела. Не отображается вообще. Да и хочется следить за этапами выполнения кода.
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Тогда заводите форму прогресса и отображайте процесс выполнения в ней, это по моему вполне логично
 

DukereD

макрософил
Сообщения
462
Реакции
114
Тогда заводите форму прогресса и отображайте процесс выполнения в ней, это по моему вполне логично
а как включить вторую форму но при этом чтобы предыдущий макрос не ждал ее закрытия а продолжал выполнение?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
А разве для выполнения кода обязательно закрытие формы? Это же не модальный мессаджбокс
 

DukereD

макрософил
Сообщения
462
Реакции
114
А разве для выполнения кода обязательно закрытие формы? Это же не модальный мессаджбокс
ну если сделать

msgbox 1
frm1.show
msgbox 2

То следующий код не выполняется пока форма не закрыта
 

DukereD

макрософил
Сообщения
462
Реакции
114
ЗАчем вам msgbox? Добавляйте инфу прям на форму в поля и обновляйте ее (refresh).
ну инфу то понятно. а код самой задачи.. проверка там файлов или что еще происходит. получается тоже надо в эту форму код выносить?
msgbox просто для проверки
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
ну если сделать

msgbox 1
frm1.show
msgbox 2

То следующий код не выполняется пока форма не закрыта
Ну я ж и говорю, не делайте модальный мессаджбокс, а исполняемый код поставьте в обработчик формы
 

DukereD

макрософил
Сообщения
462
Реакции
114
Ну я ж и говорю, не делайте модальный мессаджбокс, а исполняемый код поставьте в обработчик формы
т.е. вы предлагаете в форму прогрессбара (статусбара) впихивать основной код алгоритма?
 

DukereD

макрософил
Сообщения
462
Реакции
114

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
как это сделать из макроса без формы
Разумеется никак - непонятно, куда информацию о процессе выдавать, ну разве что какие нибудь MessageBoxTimeout
или из основной формы.
Тогда в основную форму и код пихать и информацию выводить
 

DukereD

макрософил
Сообщения
462
Реакции
114
Разумеется никак - непонятно, куда информацию о процессе выдавать, ну разве что какие нибудь MessageBoxTimeout

Тогда в основную форму и код пихать и информацию выводить
а если сначала запустить форму-статус. из нее запустить основную форму. тогда по идее форма будет висеть. можно просто ее видимостью управлять. (позицией на экране например) и обновлять инфу на ней уже из основной формы. так прокатит?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
а если сначала запустить форму-статус. из нее запустить основную форму. тогда по идее форма будет висеть. можно просто ее видимостью управлять. (позицией на экране например) и обновлять инфу на ней уже из основной формы. так прокатит?
Конечно. Но зачем формы плодить?
Если так, то можно вообще сделать формочки, всплывающие на, скажем, полсекунды и самоубирающиеся
 

DukereD

макрософил
Сообщения
462
Реакции
114
Конечно. Но зачем формы плодить?
Если так, то можно вообще сделать формочки, всплывающие на, скажем, полсекунды и самоубирающиеся
я предложил в качестве варианта именно использования плавающего статуса. мало ли надо носом тыкнуть пользователю что-то
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Можно и так
 
  • Спасибо
Реакции: DukereD