<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS/VBA: Обращение к переменным и функциям глобального объекта в IE]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=9514</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9514&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS/VBA: Обращение к переменным и функциям глобального объекта в IE».]]></description>
		<lastBuildDate>Sun, 20 Apr 2014 22:53:06 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[VBS/VBA: Обращение к переменным и функциям глобального объекта в IE]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=82062#p82062</link>
			<description><![CDATA[<p>Ниже приведены скрипт VBS и макрос VBA Excel. VBS обращается к IE без ошибок, а VBA не видит объявленных переменных и функций. В чем может быть причина? И как можно получить доступ из VBA к объявленным объектам в IE?</p><p><strong>Код VBS:</strong><br /></p><div class="codebox"><pre><code>Sub Test()
    
    Set objIE = CreateObject(&quot;InternetExplorer.Application&quot;)
    objIE.Visible = True
    objIE.Navigate &quot;about:blank&quot;
    Do While objIE.readyState &lt;&gt; 4
        WScript.Sleep 10
    Loop
    Set objDoc = objIE.document
    Set objWnd = objDoc.parentWindow
    
    objWnd.execScript &quot;function myfunc() {alert(&#039;test&#039;)};&quot;, &quot;javascript&quot;
    objWnd.myfunc &#039; --&gt; &quot;test&quot;
    
    Set objDict = CreateObject(&quot;Scripting.Dictionary&quot;)
    objWnd.execScript &quot;var mydict;&quot;, &quot;javascript&quot;
    Set objWnd.mydict = objDict
    objWnd.mydict.Add 0, &quot;first&quot;
    objWnd.execScript &quot;alert(mydict(0));&quot;, &quot;javascript&quot; &#039; --&gt; &quot;first&quot;
    objWnd.execScript &quot;mydict.add(1, 0xFF);&quot;, &quot;javascript&quot;
    MsgBox objDict(1) &#039; --&gt; 255
    
    objIE.Quit
    
End Sub</code></pre></div><p><strong>Код VBA:</strong><br /></p><div class="codebox"><pre><code>Sub Test()
    
    &#039; Tools - References - Add ref to:
    &#039; Microsoft Internet Controls
    &#039; Microsoft HTML Object Library
    &#039; Microsoft Scripting Runtime
    Dim objIE As InternetExplorer
    Dim objDoc As HTMLDocument
    Dim objWnd As HTMLWindow2
    Dim objDict As Scripting.Dictionary
    
    &#039;Set objIE = CreateObject(&quot;InternetExplorer.Application&quot;)
    Set objIE = New InternetExplorer
    objIE.Visible = True
    objIE.Navigate &quot;about:blank&quot;
    Do While objIE.readyState &lt;&gt; 4
        DoEvents
    Loop
    Set objDoc = objIE.document
    Set objWnd = objDoc.parentWindow
    
    objWnd.execScript &quot;function myfunc() {alert(&#039;test&#039;)};&quot;, &quot;javascript&quot;
    objWnd.myfunc &#039; --&gt; Object doesn&#039;t support this property or method
    
    &#039;Set objDict = CreateObject(&quot;Scripting.Dictionary&quot;)
    Set objDict = New Scripting.Dictionary
    objWnd.execScript &quot;var mydict;&quot;, &quot;javascript&quot;
    Set objWnd.mydict = objDict &#039; --&gt; Object doesn&#039;t support this property or method
    objWnd.mydict.Add 0, &quot;first&quot;
    objWnd.execScript &quot;alert(mydict(0));&quot;, &quot;javascript&quot;
    objWnd.execScript &quot;mydict.add(1, 0xFF);&quot;, &quot;javascript&quot;
    MsgBox objDict(1)
    
    objIE.Quit
    
End Sub</code></pre></div><p>Проверялось на IE версии 11.0.9600.17041, MS Office Excel 2003, Win 7 HB x64.<br />objIE.FullName как для VBA, так и для VBS соответстует &quot;C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE&quot;.</p><p>Для VBA безотказным я вижу обмен только строковыми значениями через document.title или аттрибут определенного узла DOM, навроде body.id.</p>]]></description>
			<author><![CDATA[null@example.com (omegastripes)]]></author>
			<pubDate>Sun, 20 Apr 2014 22:53:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=82062#p82062</guid>
		</item>
	</channel>
</rss>
