Что нового

Копирование текст Word- в рабочий файл - прямо во время работы

Grell

Новичок
Сообщения
127
Репутация
0
Версия AutoIt: 3.3.14.0

Описание:
Подскажите, как реализовать следующий макрос.
Я работаю в программе Word. Все это время также запущен макрос Autoit.

Суть такая: я веду работу в вордовском файле 1.doc - заполняя текстом, набираемым вручную.
Если во время набора текста я нажму клавишу Insert - то в место текущего положения курсора в файле 1.doc - добавится весь текст расположенный в файле 2.doc .
То есть - если я несколько раз нажму на клавишу Insert - то в файл 1.doc несколько раз вставится текстовый массив из файла 2.doc.

Примечания:
 

Вложения

  • 111.doc
    19.5 КБ · Просмотры: 6
  • 222.doc
    19.5 КБ · Просмотры: 5

NickSpirit

Знающий
Сообщения
44
Репутация
5
Содержимое файла 222.doc в процессе работы не меняется я так понимаю???


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

Если грубо и коряво то так
Код:
#RequireAdmin
#include <File.au3>
#include <Word.au3>
Global $buffer
$oWordApp = _Word_Create("")
$oDoc = _Word_DocOpen ($oWordApp, @ScriptDir & "\222.doc")
$oDoc = _Word_DocOpen ($oWordApp, @ScriptDir & "\222.doc")
WinWaitActive("222.doc")
Send("^a",0)
Sleep(100)
Send("^c",0)
$buffer=ClipGet()
WinClose("222.doc")
HotKeySet("{Insert}", "_StartInsert")
HotKeySet("{End}","_Exit")
While 1

WEnd

Func _StartInsert()
	Send("^v")
EndFunc

Func _Exit()
	Exit 0
EndFunc

Если необходимо использовать буфер обмена при работе с файлом 111.doc то открытие файла 222.doc и чтение из него просто засунуть в функцию _StartInsert()


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

А лучше тогда сразу так:
Код:
#RequireAdmin
#include <File.au3>
#include <Word.au3>
Global $buffer
$oWordApp = _Word_Create("")
$oDoc = _Word_DocOpen ($oWordApp, @ScriptDir & "\222.doc")
$oDoc = _Word_DocOpen ($oWordApp, @ScriptDir & "\222.doc")
WinWaitActive("222.doc")
Send("^a",0)
Sleep(100)
Send("^c",0)
$buffer=ClipGet()
WinClose("222.doc")
HotKeySet("{Insert}", "_StartInsert")
HotKeySet("{End}","_Exit")
While 1

WEnd

Func _StartInsert()
        ClipPut($buffer)
	Send("^v")
EndFunc

Func _Exit()
	Exit 0
EndFunc
 
Автор
G

Grell

Новичок
Сообщения
127
Репутация
0
NickSpirit, коды не работают.

Первый скрипт.
Запускаю скрипт. Открываю 111.doc. Нажимаю на Insert - ничего не происходит.


Второй скрипт.
Запускаю скрипт. Открываю 111.doc. Нажимаю на Insert - ничего не происходит.
Если открыть файл 222.doc - то тут же - в начало строки вставляется текст "ac" и предлагается сохранить файл перед закрытием.

После закрытия файла 222.doc - в файле 111.doc при нажатии клавиши Insert - начинает вставляться символ "v".
Хотя в файле 222.doc - содержится другой, более длинный текст.
 

NickSpirit

Знающий
Сообщения
44
Репутация
5
У меня все работает. Видео можете записать что и как делаете??? Могу тож записать. Уже сейчас не вспомню какая последовательность действий. Но точно знаю что скрипт должен лежать вместе с файлами в одной папке


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

При запуске скрипта, откроется файл 222.doc и тут же почти закроется.
 
Автор
G

Grell

Новичок
Сообщения
127
Репутация
0
NickSpirit , долго пытался записать процесс на видео (так чтобы был небольшой размер).
Но сайт все равно не позволил загрузить даже 3Мб видеофайл (написал 413 Request Entity Too Large).
Поэтому выкладываю ссылку на файлообменник dropmefiles.com/Bgu38

Процесс работы скрипта.
(все скрипты лежат в одной папке с файлами 111.doc и 222.doc)

1.Открываю первую версию скрипта.
2.Тут же открывается файл 222.doc - ничего не происходит. Просто открытый файл 222.doc.
3.Открываю файл 111.doc. При нажатии на кнопку Insert - ничего не происходит.

Процесс действия второй версии скрипта в точности такой же.

У меня операционная система Win7, MS Word 2003, MS Word 2013.
 

NickSpirit

Знающий
Сообщения
44
Репутация
5
Смею предположить что из-за различия версий - ну да ладно.

Код:
#RequireAdmin
#include <File.au3>
#include <Word.au3>
Opt("WinTitleMatchMode", 2)
Global $buffer
$oWordApp = _Word_Create("")
$oDoc = _Word_DocOpen ($oWordApp, @ScriptDir & "\222.doc")
$oDoc = _Word_DocOpen ($oWordApp, @ScriptDir & "\222.doc")
WinWaitActive("222")
Send("^a",0)
Sleep(100)
Send("^c",0)
$buffer=ClipGet()
WinClose("222")
HotKeySet("{Insert}", "_StartInsert")
HotKeySet("{End}","_Exit")
While 1
   Sleep(100)
WEnd

Func _StartInsert()
        ClipPut($buffer)
    Send("^v")
EndFunc

Func _Exit()
    Exit 0
EndFunc
 
Автор
G

Grell

Новичок
Сообщения
127
Репутация
0
NickSpirit, тоже не работает

1.Запускаю скрипт.
2.Тут же автоматически запускается файл 222.doc
3.Тут же - в начало строки файла 222.doc автоматически вставляется текст "ac" и предлагается сохранить файл 222.doc перед закрытием.
4.Я сохраняю и закрываю файл 222.doc
5.После закрытия файла 222.doc - открываю файл 111.doc
6.Находясь в файле 111.doc при нажатии клавиши Insert - вставляется символ "v".

Возможно в вашем коде команды Send("^a",0) Send("^c",0) Send("^v") - не являются командами Ctrl+a, Ctrl+c, Ctrl+v
Потому что выдает - просто буквы "a", "c" и "v" - а не как сочетания клавиш в связке с Ctrl
 

NickSpirit

Знающий
Сообщения
44
Репутация
5
Ну что могу сказать - у меня все работает. Дальше думайте сами. У меня работает и в 2003 и в 2007 офисах.

https://yadi.sk/i/MqbdnGY43MAGrq
 
Автор
G

Grell

Новичок
Сообщения
127
Репутация
0
NickSpirit , ну в общем - немного доработал перехват клавиш Send и все заработало.
Спасибо за помощь.
 
Верх