<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Поиск документа "Word" по ключевому слову]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11520&amp;type=atom" />
	<updated>2016-04-22T22:20:39Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=11520</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск документа "Word" по ключевому слову]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102831#p102831" />
			<content type="html"><![CDATA[<p>Задача решена. Скрипт очень мощный. Можно искать файл по нескольким словам или числам. Производительность супер!<br /></p><div class="codebox"><pre><code>
InputBox, tip, Выберите тип файла, Введите расширение файла`,`nпо умолчанию &quot;doc&quot;
if tip=
tip=doc
MsgBox &quot;.%tip%&quot;
FileSelectFolder, SFolder,  ,  , Выберите папку для поиска
if SFolder=
return
InputBox, wd, Ввод ключей, Введите ключевые слова:`n(ввод через запятую-`nнапример:&quot;желтый`,января`,Иванов`,563&quot;)
if wd=
return
Loop, parse, wd, `, ;узнаем количество ключей
{
if (A_Index=1)
Name:=A_LoopField
++N1
} 
MsgBox, 4, Запуск поиска, Все готово для поиска`nВы хотите продолжить?`n(Нажмите Да или Нет)
IfMsgBox No 
return

Loop, %SFolder%\*.%tip%, , 1 ; Рекурсия в подпапки.
{
DirFile=%A_LoopFileFullPath%
oWord:=ComObjCreate(&quot;Word.Application&quot;)
Word:=oWord.Documents.Open(DirFile)
text:=word.ActiveWindow.Document.Range().Text
Word.Close()
oWord.Quit()
N2=
	Loop, parse, wd, `, ;подбираем ключи
	{
	IfInString, text, %A_LoopField%
	++N2
	}
	
	if (N2=N1)
	{
	FileAppend, %word%`n%DirFile%`n, %A_Desktop%\Поиск %Name%.txt
	Break
	}
}
if (N2=N1)
MsgBox Поиск завершен`nданные сохранены`nна рабочем столе`nв файле Поиск %Name%
else
MsgBox Файл не найден
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[sabir.yanin2014]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33790</uri>
			</author>
			<updated>2016-04-22T22:20:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102831#p102831</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск документа "Word" по ключевому слову]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102811#p102811" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>Word:=oWord.Documents.Open(A_LoopFileFullPath)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-04-21T23:19:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102811#p102811</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск документа "Word" по ключевому слову]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102809#p102809" />
			<content type="html"><![CDATA[<p>Нашел на <a href="http://forum.script-coding.com/viewtopic.php?id=10325">форуме </a>как извлекать текст из word:<br /></p><div class="codebox"><pre><code>
oWord := ComObjCreate(&quot;Word.Application&quot;)
Word:=oWord.Documents.Open(&quot;C:\Users\Андрей\Desktop\N2\Новая папка\1.docx&quot;)
text:=word.ActiveWindow.Document.Range().Text
Word.Close()
oWord.Quit()
msgbox,% text
</code></pre></div><p>Все работает отлично!<br />Применил код в своем скрипте:<br /></p><div class="codebox"><pre><code>
FileSelectFolder, SF,  ,  , Выберите папку для поиска
if SF=
return
InputBox, w1, Поиск слова, Введите слово
if w1=
return
MsgBox Данные введены!`n Для начала поиска`nнажмите &quot;OK&quot;
Loop, %SF%\*.docx, , 1 ; Рекурсия в подпапки.
{
V=%A_LoopFileFullPath%
oWord:=ComObjCreate(&quot;Word.Application&quot;)
Word:=oWord.Documents.Open(&quot;%A_LoopFileFullPath%&quot;)
text:=word.ActiveWindow.Document.Range().Text
Word.Close()
oWord.Quit()

IfInString, text, %w1%
{
FileAppend, %V%`n, %A_Desktop%\Поиск %w1%.txt
MsgBox Поиск завершен`nданные сохранены`nна рабочем столе`nв файле Поиск %word%
Break
}
}
MsgBox Выход 
</code></pre></div><p>Скрипт загружается начинает работать, а как доходит до строки:<br /></p><div class="codebox"><pre><code>
Word:=oWord.Documents.Open(&quot;%A_LoopFileFullPath%&quot;)
</code></pre></div><p>Выдает ошибку о том что не может найти файл. Не разрешает ссылаться на переменную?</p>]]></content>
			<author>
				<name><![CDATA[sabir.yanin2014]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33790</uri>
			</author>
			<updated>2016-04-21T23:01:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102809#p102809</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск документа "Word" по ключевому слову]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102806#p102806" />
			<content type="html"><![CDATA[<p><strong>wisgest</strong>, можно ли модифицировать данный скрипт так, чтобы он искал заданный список файлов с расширением .mov и копировал их в указанную директорию? Т.е. подразумевается поиск не всех файлов данного типа, а конкретных файлов по имени.</p>]]></content>
			<author>
				<name><![CDATA[becauseim]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33149</uri>
			</author>
			<updated>2016-04-21T21:29:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102806#p102806</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Поиск документа "Word" по ключевому слову]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102785#p102785" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>При чтении строк файла получается &quot; PK&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ! Эь•7&quot;( ужас!)<br />Происходит это из-за того что word закодирован в ANSI</p></blockquote></div><p>Документы MS Office в новом формате (с расширениями заканчивающимися на «x») — это zip-архивы; в свою очередь содержат внутри себя xml-документы. (Ну а документы в старом формате читать как plain text тоже не очень хорошо…)</p>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2016-04-21T16:18:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102785#p102785</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Поиск документа "Word" по ключевому слову]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=102784#p102784" />
			<content type="html"><![CDATA[<p>Жизнь заставила меня написать програмку для поиска файлов &quot;Word&quot; по ключевому слову.<br />Расположение файла неизвестно. Он может быть в любой из подпапок с другими подпапками.<br />Известна только корневая папка. Написал програмку, она прекрасно ищет&nbsp; текстовые документы (.txt):<br /></p><div class="codebox"><pre><code>
FileSelectFolder, SF,  ,  , Выберите папку для поиска
if SF=
return
InputBox, word, Поиск слова, Введите слово
if word=
return
MsgBox Данные введены!`n Для начала поиска`nнажмите &quot;OK&quot;
Loop, %SF%\*.txt, , 1 ; Рекурсия в подпапки.
{
V=%A_LoopFileFullPath%
	Loop, read, %V%
	{
    IfInString, A_LoopReadLine, %word%
		{
		FileAppend, %V%`n, %A_Desktop%\Поиск %word%.txt
		Break
		}
	}
}
  
MsgBox Поиск завершен`nданные сохранены`nна рабочем столе`nв файле Поиск %word%
</code></pre></div><p>Но при использовании ее(программы)&nbsp; для поиска документов &quot;Word&quot; (заменяем&nbsp; .txt на .docx)<br /></p><div class="codebox"><pre><code>
Loop, %SF%\*.docx, , 1 ; Рекурсия в подпапки
</code></pre></div><p>Программа сходит с ума. При чтении строк файла получается &quot; PK&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ! Эь•7&quot;( ужас!)<br />Происходит это из-за того что word закодирован в ANSI а скрипт читает в кодировке Unicod<br />Как научить AHK понимать Word не знаю. Помогите пожалуйста, очень нужно для работы.</p>]]></content>
			<author>
				<name><![CDATA[sabir.yanin2014]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33790</uri>
			</author>
			<updated>2016-04-21T16:07:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=102784#p102784</id>
		</entry>
</feed>
