<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK в Эксель]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15883&amp;type=atom" />
	<updated>2020-12-04T19:47:36Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=15883</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK в Эксель]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=143906#p143906" />
			<content type="html"><![CDATA[<p>Попробуйте так:<br /></p><div class="codebox"><pre><code>filePath = %A_ScriptDir%\numbers.xlsx

Xl := ComObjCreate(&quot;Excel.Application&quot;)
Book := Xl.Workbooks.Open(filePath)

XlSht := Xl.ActiveSheet
Cells := XlSht.Cells

; это номер последней заполненной ячейки в колонке A
lastCellNum := Cells.(XlSht.Rows.Count, &quot;A&quot;).End(xlUp := -4162).Row
; если нужен другой номер, можно написать
; lastCellNum := 50 ; где вместо 50 нужный номер

CellsArray := []
Loop % lastCellNum
   CellsArray.Push( XlSht.Range(&quot;A&quot; . A_Index).text )
Xl.Quit()

WinActivate, Программа
for k, v in CellsArray
   SendInput, {Text}Команда`n%v%`n</code></pre></div><p>Если так будет слишком быстро, разбавьте посыл слипами.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2020-12-04T19:47:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=143906#p143906</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK в Эксель]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=143892#p143892" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong><br />ну скрипт разовый, думаю достаточно до определенной ячейки. Просто понять как это лучше сделать.</p>]]></content>
			<author>
				<name><![CDATA[Netriver]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41265</uri>
			</author>
			<updated>2020-12-04T09:00:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=143892#p143892</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK в Эксель]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=143889#p143889" />
			<content type="html"><![CDATA[<p>Visible — он по умолчанию false, так что здесь указывать не нужно. screenUpdating, как я понимаю, поможет, только если мы вводим какие-то данные в таблицу, мы здесь только читаем, так что тоже не нужно. book.close(false) — тоже лишнее, закроется автоматически, мы ведь ничего не меняли.<br /><em>Send, ^v</em> скорее всего не нужно, можно просто использовать SendInput. Или даже сначала собрать весь текст в переменную, и вставить всё за один раз. Поэтому я бы подождал сперва ответов ТС.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2020-12-04T08:42:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=143889#p143889</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK в Эксель]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=143888#p143888" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong><br />xl.Visible - скрытый режим<br />xl.screenUpdating - для ускорения кода&nbsp; отключение обновления экрана</p><p>Или может необязательно сразу два использовать?</p>]]></content>
			<author>
				<name><![CDATA[inseption86]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=38818</uri>
			</author>
			<updated>2020-12-04T08:26:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=143888#p143888</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK в Эксель]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=143887#p143887" />
			<content type="html"><![CDATA[<p><strong>inseption86</strong><br />А Visible и screenUpdating что дают?</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2020-12-04T08:18:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=143887#p143887</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK в Эксель]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=143886#p143886" />
			<content type="html"><![CDATA[<p><strong>Netriver</strong></p><div class="codebox"><pre><code>
    Path = %A_ScriptDir%\numbers.xlsx  
	Xl := ComObjCreate(&quot;Excel.Application&quot;)
	book := Xl.Workbooks.Open(Path)
    Xl.Visible := false
    xl.screenUpdating := 0

	loop % book.workSheets(1).Cells.(book.workSheets(1).Rows.Count, &quot;A&quot;).End(xlUp := -4162).Row
	{
	  book.workSheets(1).cells(A_index,1).Copy 

       WinActivate, Программа
       .....
       Send, ^v
       ......

      step++
	}
	
    xl.screenUpdating := 1
	MsgBox, 262144, , Скопировано %step% строк!
	book.close(false)
	xl.quit
	ExitApp

</code></pre></div>]]></content>
			<author>
				<name><![CDATA[inseption86]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=38818</uri>
			</author>
			<updated>2020-12-04T07:50:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=143886#p143886</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK в Эксель]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=143885#p143885" />
			<content type="html"><![CDATA[<p>Так а вопрос в чём, как скопировать от А1 до определённого номера, или как скопировать до последней заполненной ячейки?</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2020-12-04T06:21:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=143885#p143885</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK в Эксель]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=143884#p143884" />
			<content type="html"><![CDATA[<p>Ну, в этом примере скрипт сделает следующее:<br />1. Сделает активным окно &quot;программы&quot;<br />2. Отправит &quot;комманду&quot;<br />3. Откроет файл экселя<br />4. Скопирует ячейку A1<br />5. Вернется в &quot;программу&quot;<br />6. Вставит и отправит данные</p><p>После этого повторить, но в пункте 4 будет уже А2.<br />Необходимо продолжить цикл до условно A8000 например. Если я ставлю A1:A8000, то он копирует весь столбец.<br />Извиняюсь за возможно нубский вопрос.</p>]]></content>
			<author>
				<name><![CDATA[Netriver]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41265</uri>
			</author>
			<updated>2020-12-04T06:13:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=143884#p143884</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK в Эксель]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=143880#p143880" />
			<content type="html"><![CDATA[<p>Не очень понятно, что вы имеете в виду под &quot;построчно&quot;, и что именно вы хотите скопировать. Какой-то диапазон ячеек? Какой именно?<br />Каждый раз не нужно заново создавать объект Excel.Application, нужно создать один раз в начале до цикла, потом выйти в после цикла.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2020-12-04T00:11:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=143880#p143880</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK в Эксель]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=143876#p143876" />
			<content type="html"><![CDATA[<p>Подскажите, есть простой скрипт копирования из экселя в другую программу построчно (так&nbsp; надо):<br /></p><div class="codebox"><pre><code>For i, cellname In [&quot;A1&quot;,&quot;A2&quot;]  
{
	WinActivate, Программа
	Sleep, 333
	SendRaw, Команда
	Sleep, 300
	Send, {Enter}
	Sleep, 300
	clipboard =
	Path = %A_ScriptDir%\numbers.xlsx  
	Xl := ComObjCreate(&quot;Excel.Application&quot;)
	Xl.Workbooks.Open(Path)
	Xl.Range(cellname).Copy 
	Xl.Quit()
	Sleep, 300
	WinActivate, Программа
	Sleep, 333
	Send, ^v
	Send, {Enter}
}</code></pre></div><p>Скрипт работает как надо, но не могу найти, как заменить кусок </p><div class="codebox"><pre><code>cellname In [&quot;A1&quot;,&quot;A2&quot;]</code></pre></div><p> если у меня ячеек больше (т.е не прописывая руками A3, A4 и т.д?</p>]]></content>
			<author>
				<name><![CDATA[Netriver]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41265</uri>
			</author>
			<updated>2020-12-03T20:51:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=143876#p143876</id>
		</entry>
</feed>
