1 (изменено: ypppu, 2013-06-21 22:48:41)

Тема: AHK: Вставка данных в Excel

Добрый день, формучане. Пытаюсь написать скрипт для облегчения работы.У меня возникло несколько вопросов.
1)В скрипте будут задействованы 4 окна, которые я задаю перед началом работы путем

WinGetTitle, okno_acad, A

.Так как после перезагрузки скрипта все переменные сбрасываются, а каждый раз задавать 4 окна перед началом работы муторно, то у меня возник  вопрос:
как сделать так что бы переменные с именами окон задавались в одном скрипте, а использовались в другом, который бы запускался отдельным файлом?
2)Подскажите функцию сравнения строк
3)Осуществление цикла в autohotkey нашел только loop , есть ли реализация цикла до и цикла после ?
4)Полученные данные будут вставляться в excel и в скрипте нужно переключение листов и выставление курсора в нужные ячейки, в связи с этим вопрос:
как лучше осуществить операции в excel , через макросы сохраненные в книге и вызвать окно макросов и выбирать там, либо сделать фалы vbscript и запускать их, либо может есть какой нибудь другой способ?

2

Re: AHK: Вставка данных в Excel

COM Object: Excel.Application

Excel Object Model Reference

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Вставка данных в Excel

Есть директива #include, которая позволяет включать содержимое одного скрипта в другой: http://www.script-coding.com/AutoHotkey/Include.html. Пропишите окна в этом включаемом и включайте его во все остальные.

Команды и функции работы со строками можно там же посмотреть. Если нужно чисто сравнение на совпадение, то можно и API-функцию вызвать через DllCall — например, lstrcmp.

Что такое цикл до и цикл после?

4 (изменено: composter, 2013-06-21 14:21:35)

Re: AHK: Вставка данных в Excel

спасибо , буду разбираться.
цикл до и цикл после на примере vba  Do .. While и Do .. Loop While, т.е. что бы цикл работал не заданное количество раз ,а пока определенная переменная не достигнет нужного значения

5

Re: AHK: Вставка данных в Excel

While Expression
{
    ...
}

Loop {
    ...
} Until Expression
YMP пишет:

Если нужно чисто сравнение на совпадение, то можно и API-функцию вызвать через DllCall — например, lstrcmp.

Что-то я тупею уже, это же делает обычный оператор сравнения =.

6 (изменено: serzh82saratov, 2013-06-21 14:25:22)

Re: AHK: Вставка данных в Excel

www.autohotkey.com/docs/commands/While.htm


http://l.autohotkey.net/docs/commands/Until.htm

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7 (изменено: composter, 2013-06-21 19:19:48)

Re: AHK: Вставка данных в Excel

подскажите на счет #include.
я создаю файл например 1.ahk , в нем пишу


#Include C:\Users\ZZZ\Dropbox\Работа\Autohotkey\proverka.ahk
F1::
WinGetTitle, okno_acad, A
return

далее в каталоге C:\Users\ZZZ\Dropbox\Работа\Autohotkey\ запускаю файл proverka.ahk в котором


F6::
WinActivate , %okno_acad%
Return

нажимаю F6 и у меня ничего не происходит (((

8

Re: AHK: Вставка данных в Excel

А зачем его запускать? Запускать надо 1.ahk.

9

Re: AHK: Вставка данных в Excel

ну в 1 вопросе я описываю ситуацию.в файле 1 я хочу задать окна. а файл proverka.ahk буду редактировать. что бы каждый раз при перезапуске proverka.ahk не задавать окна.
в сообщении выше я имел ввиду что запустил файл 1.ahk выбрал окно нажал f1, а потом хочу  запустить proverka.ahk что бы использовать окно заданное в файле  1.ahk .

10

Re: AHK: Вставка данных в Excel

Вы можете привести содержание скриптов?
В чём изначальная необходимость разделения кода на 2 скрипта?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11

Re: AHK: Вставка данных в Excel

composter, заголовок темы должен нести информацию (суть темы). Исправьте заголовок, отредактировав первое сообщение.

12

Re: AHK: Вставка данных в Excel

ну я привел пример в 7 сообщении.а необходимость в том что в ходе работы скрипта приходится работать с 4 окнами. а при редактировании скрипта приходится перезагружать скрипт, и переменные хранящие названия окон тоже сбрасываются.и после перезагрузки скрипта приходится заного указывать эти 4 окна

13

Re: AHK: Вставка данных в Excel

Ответы на большинство вопросов есть в документации. Я переименовал тему.

14

Re: AHK: Вставка данных в Excel

Я вставлял в excel напрямую данные из csv.

15

Re: AHK: Вставка данных в Excel

а при редактировании скрипта приходится перезагружать скрипт

Не уловил необходимости

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

16

Re: AHK: Вставка данных в Excel

попробую объяснить на счет окон. У меня есть окно автокада, после ввода команд с клавы вызывается окно magicad , в нем мышкой задаю условия выбора, и открывается еще одно окно magicad, от туда я копирую данные в excel, далее переход на окно автокада и повторяется цикл вновь. время отклика каждого отдельного окна разное, где то можно вводить данные сразу же без команды sleep , а некоторых местах повторное нажатие мыши можно произвести через секунду после первого. поэтому приходится постоянно редактировать значения команды sleep , соответственно после каждого редактирования скрипта приходится эти 4 окна задавать вновь.

17

Re: AHK: Вставка данных в Excel

время отклика каждого отдельного окна разное

Проверяйте поля ввода на отклик.

приходится постоянно редактировать значения команды sleep

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

А вообще всё равно ничего толком не ясно. Есть мнение, что весь ваш код можно перебрать и автоматизировать все процессы. Ищите другие подходы...

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

18

Re: AHK: Вставка данных в Excel

что значит

Сделайте окошко для изменения данных на лету,

?
и все таки Вы не могли выложить пример кода 2 файлов, что бы в одном задавалось окно а во втором файле оно использовалось?

19 (изменено: serzh82saratov, 2013-06-22 21:46:34)

Re: AHK: Вставка данных в Excel

Сделайте окошко для изменения данных на лету,


Menu, Tray, add, EditVar
Gui, EditVar: Add, Edit, w222 vVar gEdit
Var = qqqqq
Loop
{ 
    ToolTip Var = %Var%
    Sleep 150
}

EditVar:
    Gui EditVar: Show
    Return
    
Edit:
    GuiControlGet, Var
    return
    
EditVarGuiClose:
    Gui EditVar: Hide
    Return

---------------------

и все таки Вы не могли выложить пример кода 2 файлов, что бы в одном задавалось окно а во втором файле оно использовалось?

Как вариант:
1 - Задаёт переменную, и пишет в себя как в ини файл.


Loop
{
    Random, Var 
    IniWrite, % Var, %A_ScriptFullPath%, Section, Key1
    IniWrite, % Var+22, %A_ScriptFullPath%, Section, Key2
    IniWrite, % Var+333, %A_ScriptFullPath%, Section, Key3
    IniWrite, % Var+4444, %A_ScriptFullPath%, Section, Key4
}
Return
/*
[Section] 
Key1=196439485
Key2=180312179
Key3=180312490
Key4=180316601
*/

2 - Использует переменную читая её из первого скрипта как из ини файла.


Loop
{
    ;  D:\AutoIt\=Test.ahk - путь к 1 скрипту
    IniRead, Var1, D:\AutoIt\=Test.ahk, Section, Key1 
    IniRead, Var2, D:\AutoIt\=Test.ahk, Section, Key2 
    IniRead, Var3, D:\AutoIt\=Test.ahk, Section, Key3 
    IniRead, Var4, D:\AutoIt\=Test.ahk, Section, Key4 
    ToolTip %Var1%`n%Var2%`n%Var3%`n%Var4%
    Sleep 150
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20 (изменено: serzh82saratov, 2013-06-23 23:05:50)

Re: AHK: Вставка данных в Excel

Забыл сказать, есть более продвинутый метод, без извлечения значения переменной перед применением:

Скрипт использующий переменную:


Global Var
OnMessage(0xC, "GetText")
Loop
    ToolTip Var = %Var%   

GetText(wParam, lParam, msg, hwnd) {  
    RegExMatch(StrGet(lParam), "(.*?)#(.*)", Str), %Str1% := Str2
    Return True
}  

Скрипт назначающий переменную:


SetTitleMatchMode, 1
DetectHiddenWindows, On
Receiver = D:\AutoIt\=Test.ahk ahk_exe AutoHotkey.exe

Loop
{
    Random, Var 
    Params = Var#%Var%
    SendMessage, 0xC, 0, &Params,, %Receiver%
    Sleep 150
}



Значение переменной назначается отправителем без условия её чтения перед применением,  другим скриптом.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui