Что нового

Реакция экселя на долгое нажатие клавиатурной кнопки

Visors

Новичок
Сообщения
58
Репутация
0
Здравствуйте, уважаемые специалисты по языку Autoit.
Хочу задать вопрос, касающийся экселя.
Код:
#include <Excel.au3>
#Include <Misc.au3>

While 1
    If _IsPressed(41) Then ;~ Запуск по нажатию A
$oExcel = _Excel_Open()
$oBook = _Excel_BookOpen($oExcel, @ScriptDir & "\345321.xls")

$oShape = $oBook.ActiveSheet.Shapes("Oval 2")
$oExcel.Run($oShape.OnAction)

    EndIf
    
    Sleep(100)
Wend

В экселе есть кнопка при нажатии на которую активируется экселевский макрос.
Подскажите как связать это выполнение (выполнение этого экселевского макроса) - с долгим нажатием на клавиатурную кнопку "A" ?

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

Подскажите как это реализовать ?
 

Вложения

  • 345321.rar
    14.8 КБ · Просмотры: 2

hedji

Продвинутый
Сообщения
409
Репутация
94
Код:
#include <Excel.au3>
#Include <Misc.au3>

While 1
	While _IsPressed(41)
		$oExcel = _Excel_Open()
		$oBook = _Excel_BookOpen($oExcel, @ScriptDir & "\345321.xls")
		$oShape = $oBook.ActiveSheet.Shapes("Oval 2")
		$oExcel.Run($oShape.OnAction)
		Sleep(1000)
    WEnd
    Sleep(10)
Wend
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
hedji этот скрипт почему-то не работает.
При каждом нажатии на кнопку "A" - скрипт переоткрывает экселевский файл 345321.xls (хотя файл 345321.xls - уже открыт и его не надо открывать еще один раз - при каждом срабатывании скрипта).

Скрипту нужно - только только нажимать на кнопку в открытом файле эксель, а не переоткрывать этот файл при каждом нажатии на кнопку "А".
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Код:
#include <Excel.au3>
#Include <Misc.au3>

 $oExcel = _Excel_Open()
 $oBook = _Excel_BookOpen($oExcel, @ScriptDir & "\345321.xls")

While 1
    While _IsPressed(41)       
        $oShape = $oBook.ActiveSheet.Shapes("Oval 2")
        $oExcel.Run($oShape.OnAction)
        Sleep(1000)
    WEnd
    Sleep(10)
Wend
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
hedji, большое спасибо.

Но этот скрипт всякий раз при запуске - переоткрывает файл эксель.
Но ведь файл 345321.xls - уже открыт.

При переоткрытии - стираются все данные введенные в файл эксель.
Как изменить этот скрипт, чтобы он - не переоткрывал файл 345321.xls ?


Добавлено:
Сообщение автоматически объединено:

hedji
Все.
Разобрался.
Большое спасибо за помощь.
 
Верх