<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBA: Обход ограничений на запуск макросов]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=5580</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=5580&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBA: Обход ограничений на запуск макросов».]]></description>
		<lastBuildDate>Sun, 14 Aug 2011 17:58:51 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBA: Обход ограничений на запуск макросов]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=50638#p50638</link>
			<description><![CDATA[<p>Нашел <a href="http://xlecom.com/?q=node/16">статейку о разрешении выполнении макросов Excel</a>.</p><p>Вот одно из решений проблемы:<br /></p><div class="codebox"><pre><code>REGEDIT4

[HKEY_LOCAL_MACHINE\Software\Microsoft\Office\9.0\Excel\Security]
&quot;XLM&quot;=dword:00000001
[HKEY_LOCAL_MACHINE\Software\Microsoft\Office\10.0\Excel\Security]
&quot;XLM&quot;=dword:00000001
[HKEY_LOCAL_MACHINE\Software\Microsoft\Office\11.0\Excel\Security]
&quot;XLM&quot;=dword:00000001</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Sun, 14 Aug 2011 17:58:51 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=50638#p50638</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Обход ограничений на запуск макросов]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=46051#p46051</link>
			<description><![CDATA[<p>Ясно. Благодарю. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>--</p><p>Значит наверное всё таки решу вопрос, добавлением и удалением ключиков в реестре.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Fri, 11 Mar 2011 09:18:06 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=46051#p46051</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Обход ограничений на запуск макросов]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=46050#p46050</link>
			<description><![CDATA[<p>Проверил в Office 2003. Работает в том случае, если разрешён доступ к VB Project. Если убрать разрешение - не работает.</p>]]></description>
			<author><![CDATA[null@example.com (VSVLAD)]]></author>
			<pubDate>Fri, 11 Mar 2011 09:16:46 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=46050#p46050</guid>
		</item>
		<item>
			<title><![CDATA[VBA: Обход ограничений на запуск макросов]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=46047#p46047</link>
			<description><![CDATA[<p>И снова здраствуйте. ) Сегодня ковырялся с VBA кодом. На сайте фоурма в разделе управления офисом нашёл код вызова <strong>API</strong> функции <strong>Beep</strong><br /><a href="http://script-coding.com/MSOffice.html">Windows Scripting: MS Office</a></p><div class="codebox"><pre><code>&#039;Создание объекта Word:
&#039;Set objOffice = CreateObject(&quot;Word.Application&quot;)
&#039;objOffice.Documents.Add
&#039;Примечание: если в момент запуска этого скрипта Word уже запущен, в момент удаления временного
&#039;модуля VBA произойдёт конфликт доступа к Normal.dot.

&#039;Создание объекта Excel:
Set objOffice = CreateObject(&quot;Excel.Application&quot;)
objOffice.DisplayAlerts = False
Set objWorkBook = objOffice.WorkBooks.Add
objWorkBook.Worksheets.Add

i = objOffice.VBE.ActiveVBProject.VBComponents.Count
objOffice.VBE.ActiveVBProject.VBComponents.Add 1
Set objModule = objOffice.VBE.ActiveVBProject.VBComponents.Item(i + 1)
With objModule.CodeModule
    .InsertLines 1,  &quot;Public Declare Function Beep Lib &quot;&quot;kernel32&quot;&quot; _&quot;
    .InsertLines 2,  &quot;(ByVal dwFreq As Long, ByVal dwDuration As Long) As Long&quot;
    .InsertLines 3,  &quot;Sub TestSub(Caption as String, Text as String)&quot;
    .InsertLines 4,  &quot;    MsgBox Text, vbOkOnly + vbInformation, Caption&quot;
    .InsertLines 5,  &quot;End Sub&quot;
    .InsertLines 6,  &quot;Sub TestBeep()&quot;
    .InsertLines 7,  &quot;    res = Beep(500, 100)&quot;
    .InsertLines 8,  &quot;    res = Beep(550, 100)&quot;
    .InsertLines 9,  &quot;    res = Beep(600, 100)&quot;
    .InsertLines 10, &quot;    res = Beep(650, 100)&quot;
    .InsertLines 11, &quot;    res = Beep(700, 100)&quot;
    .InsertLines 12, &quot;    res = Beep(650, 100)&quot;
    .InsertLines 13, &quot;    res = Beep(600, 100)&quot;
    .InsertLines 14, &quot;    res = Beep(550, 100)&quot;
    .InsertLines 15, &quot;    res = Beep(500, 700)&quot;
    .InsertLines 16, &quot;End Sub&quot;
End With
objOffice.Application.Run &quot;TestSub&quot;, &quot;Test VBA&quot;, &quot;Сейчаc будет произведён вызов Win32 API функции Beep()...&quot;
objOffice.Application.Run &quot;TestBeep&quot;
&#039;Следующая строка нужна, если используется Word:
&#039;objOffice.VBE.ActiveVBProject.VBComponents.Remove objModule
objOffice.Quit</code></pre></div><p>Запустив у себя, получил сообщение о том что &quot;Программный доступ к проекту Visual Basic не является доверенным.&quot;<br />Эта несправедливость меня несколько огорчила. Порыв в инете, наткнулся на то, что эта проблема решается ручным переключением безопасности в настройках офиса либо добавлением данных в реестр. Ну совсем расстроило. Решил обойти эту проблему.</p><div class="codebox"><pre><code>Set Document = CreateObject(&quot;Word.Document&quot;)
Set VBComponent = Document.VBProject.VBComponents.Add(1)
With VBComponent.CodeModule
    .InsertLines 1,  &quot;Public Declare Function Beep Lib &quot;&quot;kernel32&quot;&quot; _&quot;
    .InsertLines 2,  &quot;(ByVal dwFreq As Long, ByVal dwDuration As Long) As Long&quot;
    .InsertLines 3,  &quot;Sub TestSub(Caption as String, Text as String)&quot;
    .InsertLines 4,  &quot;    MsgBox Text, vbOkOnly + vbInformation, Caption&quot;
    .InsertLines 5,  &quot;End Sub&quot;
    .InsertLines 6,  &quot;Sub TestBeep()&quot;
    .InsertLines 7,  &quot;    res = Beep(400, 400)&quot;
    .InsertLines 16, &quot;End Sub&quot;
End With
Document.Application.Run &quot;TestBeep&quot;</code></pre></div><p>Вот что получилось. Хотелось узнать - действительно это работает или я свой комп уже так замучал, что он на всё согласен ?</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Fri, 11 Mar 2011 09:07:08 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=46047#p46047</guid>
		</item>
	</channel>
</rss>
