Sub calctest() Dim I Shell "CALC.EXE", 1 ' Запускает калькулятор. Application.Wait (Now + TimeValue("0:0:1")) For I = 1 To 10 ' Организует цикл. SendKeys I & "{+}", True ' Передает данные калькулятору Next I ' для вычисления суммы. SendKeys "=", True ' Окончательный результат. 'SendKeys "%{F4}", True ' закрываем калькулятор End Sub
[/vba] А вообще AppActivate требует названия окна, вроде. Что-то типа [vba]
Код
AppActivate "Калькулятор"
[/vba](могу ошибаться)
У меня так сработало [vba]
Код
Sub calctest() Dim I Shell "CALC.EXE", 1 ' Запускает калькулятор. Application.Wait (Now + TimeValue("0:0:1")) For I = 1 To 10 ' Организует цикл. SendKeys I & "{+}", True ' Передает данные калькулятору Next I ' для вычисления суммы. SendKeys "=", True ' Окончательный результат. 'SendKeys "%{F4}", True ' закрываем калькулятор End Sub
[/vba] А вообще AppActivate требует названия окна, вроде. Что-то типа [vba]
Pelena, Лена, тут вопрос скорее почему не срабатывает то, что прям в документации https://docs.microsoft.com/en-us....3Dtrue] прописано. И это происходит с калькулятором, но не с word. Могу предположить, что это последствия Windows10 и калькулятора в нем, так как это не классическое приложение уже. Попробую посмотреть что там с Win7 но завтра.
Pelena, Лена, тут вопрос скорее почему не срабатывает то, что прям в документации https://docs.microsoft.com/en-us....3Dtrue] прописано. И это происходит с калькулятором, но не с word. Могу предположить, что это последствия Windows10 и калькулятора в нем, так как это не классическое приложение уже. Попробую посмотреть что там с Win7 но завтра.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Сообщение отредактировал bmv98rus - Вторник, 28.05.2019, 21:02
bmv98rus, у меня Win7, тоже не срабатывает. Тоже очень удивился, делая все в соответствии с документацией. Пробовал и по названию окна ("Калькулятор"), и путь и т.д. и т.п. - ошибка вылазит
bmv98rus, у меня Win7, тоже не срабатывает. Тоже очень удивился, делая все в соответствии с документацией. Пробовал и по названию окна ("Калькулятор"), и путь и т.д. и т.п. - ошибка вылазит_Igor_61
Процесс запущен, окна еще нет, отсюда и ошибка, тут или, как предложила Елена, делать delay, или пользовать winapi , например EnumWindows + GetWindowThreadProcessId + IsWindowVisible А Appactivate в качестве первого аргумента принимает имя окна или идентификатор процесса
Процесс запущен, окна еще нет, отсюда и ошибка, тут или, как предложила Елена, делать delay, или пользовать winapi , например EnumWindows + GetWindowThreadProcessId + IsWindowVisible А Appactivate в качестве первого аргумента принимает имя окна или идентификатор процессаkrosav4ig
ага, при этом ворд прям взлетает с места, а крохотный калькулятор неспешно восходит на трон. С Notepad, с Notepad++ все выходит, но не с калькулятором.
ага, при этом ворд прям взлетает с места, а крохотный калькулятор неспешно восходит на трон. С Notepad, с Notepad++ все выходит, но не с калькулятором.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Да, удивительно , что даже с задержкой код не срабатывает , если использовать именно AppActivator
[vba]
Код
Sub calctest()
Dim ReturnValue, I ReturnValue = Shell("CALC.EXE", 1) ' Запускает калькулятор.
Application.Wait (Now + TimeValue("0:0:5")) ' ЗАДЕРЖКА на 5 Секунд AppActivate ReturnValue ' активируем калькулятор Application.Wait (Now + TimeValue("0:0:5")) ' ЗАДЕРЖКА еще на 5 Секунд
For I = 1 To 10 ' Организует цикл. SendKeys I & "{+}", True ' Передает данные калькулятору Next I ' для вычисления суммы. SendKeys "=", True ' Окончательный результат. 'SendKeys "%{F4}", True ' закрываем калькулятор
End Sub
[/vba]
Да, удивительно , что даже с задержкой код не срабатывает , если использовать именно AppActivator
[vba]
Код
Sub calctest()
Dim ReturnValue, I ReturnValue = Shell("CALC.EXE", 1) ' Запускает калькулятор.
Application.Wait (Now + TimeValue("0:0:5")) ' ЗАДЕРЖКА на 5 Секунд AppActivate ReturnValue ' активируем калькулятор Application.Wait (Now + TimeValue("0:0:5")) ' ЗАДЕРЖКА еще на 5 Секунд
For I = 1 To 10 ' Организует цикл. SendKeys I & "{+}", True ' Передает данные калькулятору Next I ' для вычисления суммы. SendKeys "=", True ' Окончательный результат. 'SendKeys "%{F4}", True ' закрываем калькулятор
Если ставить OnError resume next - значит просто игнорировать ошибку AppActivate ReturnValue, и это не ответ на вопрос темы так как отсрочка на win10 не работает и работает на Win7 , а также работает вызов Notepad, то все ж склоняюсь к тому что виной приложение Калькулятор в Win10 , а оно там не классическое, это факт.
RAN, Коты вааще весь день дрыхнут.
Если ставить OnError resume next - значит просто игнорировать ошибку AppActivate ReturnValue, и это не ответ на вопрос темы так как отсрочка на win10 не работает и работает на Win7 , а также работает вызов Notepad, то все ж склоняюсь к тому что виной приложение Калькулятор в Win10 , а оно там не классическое, это факт.bmv98rus
Замечательный Временно просто медведь , процентов на 20.