1 (изменено: zodiacpavel, 2011-05-23 11:21:19)

Тема: AHK: Работа с переменными через Clipboard

Возможна ли работа с переменными, присвоенными из  буфера обмена (числовые значения)?

F7::

WinActivate,  Microsoft Excel
;активация окна екселя

MouseClick, Left, 70,140
Sleep 100
Send, R
Sendraw, 4
sleep 100
Send, {enter}
;Переход в ячейку с нужным значением

Send, ^c ; копирование данных в буфер обмена
;сохранение численного значения в буфере обмена 

x = %clipboard%
; присвоение значения переменной

y:=x+1
; пример обработки переменной

msgbox, %y%
; вывод значения

Значение y получается пустым. 
То есть, из буфера обмена числа не воспринимаются?
Как сделать так, чтоб это было возможно, или AHK не воспринимает значения из вне?

2

Re: AHK: Работа с переменными через Clipboard

Я не пойму, а что у тебя в ячейке, из которой ты берёшь текст? При запуске этого кода у меня получается "R4".

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Работа с переменными через Clipboard

Попробуй в экселе в произвольную в ячейку ввести любое число, затем вручную скопировать это число, нажать контр+с (занести в буфер обмена это число).
затем вот это:

F7
x = %clipboard%
; присвоение значения переменной

y:=x+1
; пример обработки переменной

msgbox, %y%
; вывод значения

не понимаю почему числа не хочет считывать из екселевских ячеек, но все работает если скопировать в ворде любую цифру?

4

Re: AHK: Работа с переменными через Clipboard

Перед тем, как копировать в буфер обмена с помощью Ctrl + C какой-либо текст, нужно его сначала выделить.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: zodiacpavel, 2011-05-23 15:12:25)

Re: AHK: Работа с переменными через Clipboard

Да, правильно, а перед тем как копировать в экселе значение в ячейке, эту ячейку надо выделить.

6

Re: AHK: Работа с переменными через Clipboard

В общем понял твою проблему. Запусти такой код со своим первоначальным примером, и тоже поймёшь, в чём причина:

F11::
clipboard =  ; освобождаем буфер обмена
WinActivate,  Microsoft Excel
;активация окна екселя

MouseClick, Left, 70,140
Sleep 100
Send, R
Sendraw, 4
sleep 100
Send, {enter}
;Переход в ячейку с нужным значением

Send, ^{vk43} ; Ctrl + C
;сохранение численного значения в буфере обмена
ClipWait, 2   ; ждём, когда в буфере появится текст в течение 2 секунд
if ErrorLevel
{
   MsgBox, Буфер обмена пуст!
   Return
}
MsgBox, % "|" Clipboard "|"
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Работа с переменными через Clipboard

Ну это понятно, спасибо.
А возможно ли этому значению буфера обмена присвоить значение переменной, и с ней провести математические манипуляции?
например, копируем число 1; в буфере обмена clipboard=1.
Присвоим значению clipboard переменную х:

x=%clipboard%

затем проведем математические манипуляции:

y:=1+x

возможно ли получить на выходе 2?

8

Re: AHK: Работа с переменными через Clipboard

а ^{vk43}
это что за конструкция у тебя такая?

9

Re: AHK: Работа с переменными через Clipboard

Как понятно из моего примера, при копировании из ячейки в буфер обмена попадает не только то, что мы видим в ячейке, но и знак переноса строки. Если в ячейке число, то для проведения математических операций с ним нужно сначала удалить знак переноса строки. Это можно сделать посредством RegExReplace:

F11::
clipboard =  ; освобождаем буфер обмена
WinActivate,  Microsoft Excel
;активация окна екселя

MouseClick, Left, 70,140
Sleep 100
Send, R
Sendraw, 4
sleep 100
Send, {enter}
;Переход в ячейку с нужным значением

Send, ^{vk43} ; Ctrl + C
;сохранение численного значения в буфере обмена
ClipWait, 2   ; ждём, когда в буфере появится текст в течение 2 секунд
if ErrorLevel
{
   MsgBox, Буфер обмена пуст!
   Return
}
; MsgBox, % "|" Clipboard "|"
MsgBox, % y := RegExReplace(Clipboard, "\R") + 1
zodiacpavel пишет:

а ^{vk43}
это что за конструкция у тебя такая?

vk43 — это виртуальный код клавиши "с". При посылке шорткатов с буквенными клавишами лучше пользоваться не их названиями, а именно виртуальными кодами, т. к. на некоторых машинах при русской раскладке сочетание ^c не будет работать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: Работа с переменными через Clipboard

Во! вот это мне и надо было узнать! спасибо большое!
теперь все гуд будет!