Страницы: 1
RSS
Возможность лицезреть имя или строку макроса в процессе выполнения
 
здравствуйте. при выполнении примерно такого макроса
Код
Sub a()
zzzz1 'имя макроса
zzzz2 'имя макроса
zzzz3 'имя макроса
zzzz4 'имя макроса
zzzz5 'имя макроса
End Sub
есть ли возможность видеть какой именно макрос выполняется?
или какая строка макроса выполняется?
что нужно для этого добавить в код?
Изменено: artyrH - 12.05.2019 19:24:57
 
ну строку макроса - это печально будет, ресурс будет занят не на работу, а на демонстрацию что сейчас делаем.
А вот конкретный этап - это можно
https://www.excel-vba.ru/chto-umeet-excel/otobrazit-process-vypolneniya/
По вопросам из тем форума, личку не читаю.
 
Добрый вечер!
Сразу признаюсь в макросах пока не силён, только пытаюсь изучить их. Недавно читал статью возможно вы это имеете в виду .
 
БМВ, Aleksey1107, спасибо
много делов оказывается для этого надо. я не осилю. лучше откажусь от затеи
 
Цитата
artyrH написал:
есть ли возможность видеть какой именно макрос выполняется?
Цитата
artyrH написал:
много делов оказывается для этого надо
ну да. По строке добавить в имеющийся код :)
Код
Sub a()
Application.StatusBar = "Выполняется макрос zzzz1"
zzzz1 'имя макроса
Application.StatusBar = "Выполняется макрос zzzz2"
zzzz2 'имя макроса
Application.StatusBar = "Выполняется макрос zzzz3"
zzzz3 'имя макроса
Application.StatusBar = "Выполняется макрос zzzz4"
zzzz4 'имя макроса
Application.StatusBar = "Выполняется макрос zzzz5"
zzzz5 'имя макроса
Application.StatusBar = False
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
:D  :D  :D
Дмитрий(The_Prist) Щербаков,  спасибо большое
 
Если макрос будет работать через 0,1 секунды, что вы увидите за такое короткое время ?  :sceptic:  
 
ocet p, факт что для этого нужно только одна строка)
а так у меня все эти zzzz-макросы грузят по ссылке вложения с сайта и на дисплее все время окно браузера. окна excel не видно и статусбара тоже. но можно ориентироваться по названиям загружаемых файлов
 
artyrH, если хотите проверить правильность работы кода, то для этого используйте MsgBox и Exit Sub (после сомнительных строк кода)   :)  
 
_Igor_61, ok. спасибо
 
_Igor_61, debug.print , stop , но не MsgBox и Exit Sub
По вопросам из тем форума, личку не читаю.
 
Exit Sub - это слишком радикально ))
 
:)  Радикально это: ... End
 
Цитата
artyrH написал:
у меня все эти zzzz-макросы грузят по ссылке вложения с сайта и на дисплее все время окно браузера. окна excel не видно и статусбара тоже. но можно ориентироваться по названиям загружаемых файлов
Вот с этого и нужно было начинать :)
Цитата
БМВ написал:
debug.print , stop
Для начинающих (типа меня) это сложно. Т.к. если внутри макроса есть другие, VBE может остановиться на первом макросе (особенно внутри форм так бывает), а где дальше искать - снова ищи. Проще если выскакивает окно "Вошли в макрос "ааа", и после нужного блока - стоп (в смысле Exit Sub). Если все нормально - переносим Exit под следующие строчки. И т.д.  :)
Цитата
Юрий М написал:
Exit Sub - это слишком радикально ))
Зато надежно :)))
 
Цитата
_Igor_61 написал:
Для начинающих (типа меня) это сложно.
Ну инструменты для отладки позволяют же и пошагово и как угодно выполнять.

Точки остановки расставить где надо и выполнять до них а потом по шагам.
По вопросам из тем форума, личку не читаю.
 
Цитата
artyrH написал:
а так у меня все эти zzzz-макросы грузят по ссылке вложения с сайта и на дисплее все время окно браузера
в
Application.StatusBar = "Выполняется макрос zzzz1"
замените на
MsgBox "Выполняется макрос zzzz1"
и все будет видно

тема похожа на желание попытаться заняться какой-то ерундой, извините, такое у меня складывается впечатление от прочитанного. возможно Вы пытаетесь заняться чем-то серьезным, но пока не удалось обьяснить чем. как только кто-то поймет задачу, которую Вы решаете Вам тут же подскажут как ее решить
пока видны бессвязные, бестолковые вопросы и такие же бесполезные ответы на них.

и этот ответ не исключение, а продолжение этого ряда совершенно бесполезных ответов
Изменено: Ігор Гончаренко - 13.05.2019 02:08:47
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
_Igor_61 написал:
(после сомнительных строк кода)
когда только начинаешь писать макросы, почти каждая строка сомнительна и Exit Sub не позволит Вам выполнить след. строку пока Вы не удалите этот Exit Sub из кода и превратит выполнение макроса в мучения сначала по внесению Exit Subов, а потом по их удалению
кроме того не лишним будет напомнить начинающим, что в функциях нужно писать Exit Function, компилятор отругает Вас за Exit Sub в коде функции
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
artyrH написал:
все время окно браузера. окна excel не видно и статусбара тоже. но можно ориентироваться по названиям загружаемых файлов
?
Вы могли бы попробовать таким образом:
Код
Sub gen_info()
    Dim i%, info$, appli
    
    appli = Shell("Notepad.exe", vbNormalFocus)
    AppActivate appli
    
    info = "Vypolniyaetsya makros zzzz1" & vbCrLf
    SendKeys info, False
    'makros zzzz1
    For i = 1 To 3000: [A1].Value = i: Next
    
    info = "Vypolniyaetsya makros zzzz2" & vbCrLf
    SendKeys info, False
    'makros zzzz2
    For i = 1 To 3000: [A1].Value = i: Next
    
    info = "Vypolniyaetsya makros zzzz3" & vbCrLf
    SendKeys info, False
    'makros zzzz3
    For i = 1 To 3000: [A1].Value = i: Next
    
    info = "Konets"
    SendKeys info, False
    SendKeys "{NUMLOCK}", False
End Sub
?
 
ocet p, спасибо
только вопрос не актуален. меня устроит видеть в браузере который файл скачивается. в итоге получился такой макрос
в принципе, имеется вопрос чем заменить Range("Таблица4").Cells(1, 1).Value. надо во второй колонке ("Table2") посчитать значения <>""
хотя и так пойдет. формула в Range("Таблица4").Cells(1, 1) посчитает
Код
Sub azzzz()
    Dim j As Integer
  For j = 1 To Range("Таблица4").Cells(1, 1).Value
    sFilePath = Range("Table2").Cells(j, 2).Value
    With CreateObject("WScript.Shell")
        .Run sFilePath
    End With
    Application.Wait Time:=Now + TimeValue("0:00:03")
  Next j
End Sub

Цитата
Ігор Гончаренко написал:
и этот ответ не исключение
только почему вы свой ответ определили как бесполезный?
почему вы этот ваш ответ не определили как бестолковый?
зато вы определили мои вопросы как бестолковые. почему? потому вам увиделось желание (я так понял, мое желание) попытаться заняться какой-то ерундой. вы теперь что, будете заходить в любые темы и, определившись, заявлять что вопросы бестолковые и ответы бесполезные?
хотя ладно, вы уже извинились
то есть вы понимали что можете задеть своим постом и все равно написали
эта тема - плод предыдущей темы. в той теме не решил вопрос. поэтому пытался решить своими силами и создал еще темы. уже решил и макрос меня устраивает.
за MsgBox спасибо. только требуется каждый раз нажимать на OK
 
Если уж через SHELL можно вызвать msg с параметрами (msg %username% /time:x "Выполняется макрос zzzz1") Есть минус, время X нужно подобрать иначе второе уведомление будет прятаться за первым.
По вопросам из тем форума, личку не читаю.
 
Похожая тема
 
Цитата
artyrH написал:
только почему вы свой ответ определили как бесполезный?почему вы этот ваш ответ не определили как бестолковый?
потому что в Excel много разных средств для отладки, а что нужно вам - не понятно
и вообще отладка нужна для устранения ошибок, а не для того, что смотреть какая строка выполняется, потому что выполняется все быстро и в онлайне ничего не разглядеть
отсюда и сомнения что нужна
Цитата
Возможность лицезреть имя или строку макроса в процессе выполнения
задача же явно не этом, но сформулировали Вы ее именно так (потому что пока Вы будете пытаться прочитаь и понять одну строку компилятор уже пробежит по десяткам тысяч строк, если их столько есть в Вашем макросе)
жмите F8 и смотрите что выполняется и где
или
перед выполнением каждой строки отправляете ее текст почтой на другой компьютер, другой компьютер поставьте рядом со своим, следите на нем за входящей почтой и показывайте текст входящих писем. в общем удачи в этом нелегком но очень полезном занятии!
(у меня еще много дурацких советом по теме)
Цитата
artyrH написал:
вы теперь что, будете заходить в любые темы и, определившись, заявлять что вопросы бестолковые и ответы бесполезные?
заходить буду, заявлять нет
и там я писал:
Цитата
Ігор Гончаренко написал:
такое у меня складывается впечатление от прочитанного
видите, это частное мнение, а не заключение экспертной комиссии, с печатями и подписями, что все именно так и есть
в демократическом обществе частное мнение можно элементарно игнорировать, главное - правильно фильтровать то, что можно игнорировать, от того, к чему стоит прислушаться
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, видать и вправду вопросы с ответами так сложились что вы решили что мне нужна отладка)
мне не нужна отладка. мне было надо видеть на какой стадии выполнение макроса и сколько еще до окончания процесса выполнения макроса
если zzzz-макросов будет не пять, а десять тысяч, то времени для выполнения макроса надо 30 000 сек = 500 мин = 8.33 ч.
вот я и хотел видеть сколько времени осталось. теперь буду ориентироваться по загружаемым файлам
 
Цитата
artyrH написал:
Возможность лицезреть имя или строку макроса в процессе выполнения
заменим "лицезреть" на "видеть". как можно понимать этот вопрос по другому?
допустим, найден простой и надежный механизм как видеть выполняемые строки в процессе выполнения (стабильное окно, где постоянно видна выполняемая строка)

обьясните мне, дураку, чем этот механизм поможет Вам, если скорость обновления строк порядка несколько тысяч в секунду - в сотни тысяч раз превышает физиологические возможности человека просто прочитать, не говоря уже о понять то, что там мельтешит в этом стабильном окне? очень интересно узнать

а еще интересно узнать, если Вам нужно не строки видеть в процессе выполнения, а видеть некий прогресс-бар процесса выполнения, то зачем Вы пишите хочу видеть выполняемые строки, а не пишите хочу видеть процесс выполнения Вашего скопища макросов, сколько сделано, сколько осталось? зачем Вы пишете что нужно одно, если Вам нужно совсем другое?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
в сотни тысяч раз превышает физиологические возможности человека просто прочитать
если будут просто мелькать цифры, то буду ориентироваться по десяткам и сотням, к тому же в макросе будет задержка по три секунды
Код
Sub azzzz()
    Dim j As Integer
  For j = 1 To 10000
    sFilePath = Range("Table2").Cells(j, 2).Value
    With CreateObject("WScript.Shell")
        .Run sFilePath
    End With
    Application.Wait Time:=Now + TimeValue("0:00:03")
  Next j
End Sub

Цитата
Ігор Гончаренко написал:
а видеть некий прогресс-бар процесса выполнения
про прогресс-бар узнал после. отлично бы подошли прогресс-бар или процентное выполнение
только excel-файл не виден потому что все время активно окно браузера
Изменено: artyrH - 13.05.2019 14:48:42
Страницы: 1
Наверх