<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Получить список кнопок на листе excel и вызвать событие нажатия]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=17115&amp;type=atom" />
	<updated>2022-05-10T18:28:35Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=17115</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получить список кнопок на листе excel и вызвать событие нажатия]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=153160#p153160" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong>, идеально! Я уже думал придется использовать команду клика мыши. Но были бы проблемы, если бы масштабирование менялось. С этим решением все намного проще. <br />Спасибо за помощь!</p>]]></content>
			<author>
				<name><![CDATA[pavel.garshin.01]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=42521</uri>
			</author>
			<updated>2022-05-10T18:28:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=153160#p153160</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получить список кнопок на листе excel и вызвать событие нажатия]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=153159#p153159" />
			<content type="html"><![CDATA[<p>Пример:<br /></p><div class="codebox"><pre><code>Excel := Excel_Get()
XLSht := Excel.ActiveSheet

for item in XLSht.buttons {
   MsgBox, % &quot;Caption: &quot; . item.Caption . &quot;`n&quot;
           . &quot;Name: &quot;    . item.Name    . &quot;`n&quot;
           . &quot;Macro: &quot;   . macro := item.OnAction
   Excel.Run(macro)
}

Excel_Get(WinTitle := &quot;ahk_class XLMAIN&quot;) {
   ControlGet, hwnd, hwnd,, Excel71, %WinTitle%
   if !hwnd
      return
   Window := AccObjectFromWindow(hwnd, -16)
   Loop {
      try Application := Window.Application
      catch
         ControlSend, Excel71, {esc}, %WinTitle%
   } Until !!Application
   return Application
}

AccObjectFromWindow(hWnd, idObject = 0)
{
   static IID_IDispatch   := &quot;{00020400-0000-0000-C000-000000000046}&quot;
        , IID_IAccessible := &quot;{618736E0-3C3D-11CF-810C-00AA00389B71}&quot;
        , OBJID_NATIVEOM  := 0xFFFFFFF0, VT_DISPATCH := 9, F_OWNVALUE := 1
        , h := DllCall(&quot;LoadLibrary&quot;, Str, &quot;oleacc&quot;, Ptr)
        
   VarSetCapacity(IID, 16), idObject &amp;= 0xFFFFFFFF
   DllCall(&quot;ole32\CLSIDFromString&quot;, Str, idObject = OBJID_NATIVEOM ? IID_IDispatch : IID_IAccessible, Ptr, &amp;IID)
   if DllCall(&quot;oleacc\AccessibleObjectFromWindow&quot;, Ptr, hWnd, UInt, idObject, Ptr, &amp;IID, PtrP, pAcc) = 0
      Return ComObjEnwrap(VT_DISPATCH, pAcc, F_OWNVALUE)
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2022-05-10T17:22:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=153159#p153159</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Получить список кнопок на листе excel и вызвать событие нажатия]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=153151#p153151" />
			<content type="html"><![CDATA[<p>Добрый день.<br />Скажите пожалуйста, возможно ли получить список кнопок на листе excel и вызвать событие нажатия любой из них? Требуется включить макрос в Excel через скрипт Autohotkey.<br /></p><div class="codebox"><pre><code>
^6::
	MsgBox, Начали!
	xlApp := ComObjActive(&quot;Excel.Application&quot;)
	
	;Получить список Buttons

	;Вызвать нажатие кнопки &quot;Запуск&quot; чтобы включить макрос 
return
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[pavel.garshin.01]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=42521</uri>
			</author>
			<updated>2022-05-09T18:30:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=153151#p153151</id>
		</entry>
</feed>
