<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: SQL запрос к листу Excel]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=8004</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8004&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: SQL запрос к листу Excel».]]></description>
		<lastBuildDate>Wed, 08 May 2013 14:52:03 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71985#p71985</link>
			<description><![CDATA[<div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>Всё равно не понимаю - получили рекордсет, дальше вытаскиваем из него всё что нужно, включая имена колонок:</p></blockquote></div><p>Просто у меня на некоторых xls даже при наличии в первых строках текста вмеcто содержимого выдаёт F1, F2...</p><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>приведите, пожалуйста полный код - поо проскальзывающим кускам сложно понять что требуется.</p></blockquote></div><p>Да, собственно, это для разных скриптов нужно. Ваш последний пример как частный случай подходит.</p><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>опишите чего нужно достичь на прикладном уровне - например на примере конкретного xls-файла(с образцом данных).</p></blockquote></div><p>Нужно по номеру листа,&nbsp; табулятора, столбца, строки в правильно указанном диапазоне любого параметрически заданного файла получать/записывать/обрабатывать нужные данные полей. </p><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>Подозреваю что речь о ...</p></blockquote></div><p>Уже заметил. Ещё перепроверю файлы.</p><p>Найти бы определение стиля..</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Wed, 08 May 2013 14:52:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71985#p71985</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71976#p71976</link>
			<description><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>Зачем вызывать Execute для получения каждой колонки?</p></blockquote></div><p>Чтобы получить заголовок по .Fields(0).Name.</p></blockquote></div><p>Всё равно не понимаю - получили рекордсет, дальше вытаскиваем из него всё что нужно, включая имена колонок:<br /></p><div class="codebox"><pre><code>
option explicit
Const adUseClient = 3 : Const adOpenStatic = 3 : Const adLockOptimistic = 3 : Const adCmdText = &amp;H1
Const adSchemaTables = 20 : Const adSchemaColumns = 4
Dim FileSource
FileSource = &quot;tab1.XLS&quot;

Dim oConn
Set oConn = CreateObject(&quot;ADODB.Connection&quot;)
Dim oRS
Set oRS = CreateObject(&quot;ADODB.Recordset&quot;)
With oConn
    .Provider = &quot;Microsoft.Jet.OLEDB.4.0&quot;
    .ConnectionString = &quot;Data Source=&quot; &amp; FileSource &amp; &quot;;Extended Properties=&quot;&quot;Excel 8.0;HDR=Yes;&quot;&quot;&quot;
    .CursorLocation = adUseClient
    .Open
End With

Dim strSQL
strSQL = &quot;SELECT * FROM [Лист1$] WHERE Tel = 3&quot;
Set oRS = oConn.Execute(strSQL)

wscript.echo &quot;колонка №1: &quot; &amp; oRS.Fields(0).Name
wscript.echo &quot;колонка №2: &quot; &amp; oRS.Fields(1).Name
wscript.echo &quot;колонка №3: &quot; &amp; oRS.Fields(2).Name

oRS.Close
oConn.Close
Set oRS = Nothing
Set oConn = Nothing
</code></pre></div><div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>А какой пример? Где по номеру имя получаем?</p></blockquote></div><p>Проблема №1: приведите, пожалуйста полный код - поо проскальзывающим кускам сложно понять что требуется.<br />Проблема №2: опишите чего нужно достичь на прикладном уровне - например на примере конкретного xls-файла(с образцом данных).</p><div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Не понял.</p></blockquote></div><p>При открытии экселевского файла OLE DB пытается определить тип данных в колонках, анализируя первые 8(по умолчанию) строк. Подозреваю что речь о том, что если все 8 строк имеют одинаковый тип данных, OLE DB будет рассматривать это как отсутствие шапки у таблицы, и сам назначит колонкам имена(F1, F1 etc).</p><p>P.S. Зачем прятать код ещё и под спойлер(с непривычки даже не сразу понял что там код где-то в сообщении спрятан)? С &quot;обрезкой&quot; простыни успешно справляется тег code.</p>]]></description>
			<author><![CDATA[null@example.com (BeS Yara)]]></author>
			<pubDate>Wed, 08 May 2013 04:47:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71976#p71976</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71972#p71972</link>
			<description><![CDATA[<div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>Зачем вызывать Execute для получения каждой колонки?</p></blockquote></div><p>Чтобы получить заголовок по .Fields(0).Name.<br /></p><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>В моём примере запрос запускался один раз. Может я не тот пример смотрю?</p></blockquote></div><p>А какой пример? Где по номеру имя получаем?</p><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>Правда понадобится установленный Excel. Можно ли проверить это свойство силами ADO или DAO сказать не берусь(пока).</p></blockquote></div><p>Естественно, нужно без Exel.</p><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>По работе с диапазонами сейчас ничего сказать не могу, так как с данной спецификой не сталкивался(в моих задачах всегда требовалось обрабатывать весь лист). Если выдастся время - попробую, тогда может быть что-то смогу подсказать по поводу имён колонок для диапазонов и определения стиля ссылок без использования&nbsp; Excel.Application.</p></blockquote></div><p>Меня по листу также интересует (писал выше).</p><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>Правильно будет примерно так:</p></blockquote></div><p>Понял.<br /></p><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><div class="quotebox"><blockquote><p>поставщик OLE DB автоматически имена полей автоматически (где F1 будет представлять первому полю, F2 бы представляют второе поле и так далее).</p></blockquote></div></blockquote></div><p>Не понял..</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 07 May 2013 16:07:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71972#p71972</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71969#p71969</link>
			<description><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Это я могу получать только при задании диапазона колонки. В первом посте пример. Но мне не хочется для каждой колонки вызывать Execute, я хочу получать либо до вызова метода, либо после задания диапазона всего листа.</p></blockquote></div><p>Зачем вызывать Execute для получения каждой колонки? По первому запросу мы получаем таблицу(recordset), в нём уже имеется вся информация по числу колонок, по их номерам, по их именам(если HDR=YES). В моём примере запрос запускался один раз. Может я не тот пример смотрю?</p><div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Объясню конкретней. Я не хочу получить ошибку, если в Execute буду задавать диапазон, не соответствующий текущему стилю. Поэтому мне надо предварительно выяснить заголовок табулятора, чтобы правильно задать его через Select.</p></blockquote></div><p>Выяснить стиль ссылок точно можно прочитав экселевский файл(свойство <a href="http://msdn.microsoft.com/en-us/library/office/aa176159(v=office.11).aspx">ReferenceStyle</a> объекта Workbook.Application; xlR1C1 = -4150, xlA1 = 1). Правда понадобится установленный Excel. Можно ли проверить это свойство силами ADO или DAO сказать не берусь(пока).</p><p>По работе с диапазонами сейчас ничего сказать не могу, так как с данной спецификой не сталкивался(в моих задачах всегда требовалось обрабатывать весь лист). Если выдастся время - попробую, тогда может быть что-то смогу подсказать по поводу имён колонок для диапазонов и определения стиля ссылок без использования&nbsp; Excel.Application.</p><div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Такой:</p><div class="codebox"><pre><code>File = &quot;C:\file.xls&quot;
CreateObject(&quot;ADODB.Connection&quot;).Open &quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&quot; &amp; File &amp; &quot;;Extended Properties=Excel 8.0;HDR=Yes;&quot;</code></pre></div></blockquote></div><p>Excel 8.0;HDR=Yes; - это одно строковое значение для свойства Extended Properties. А так как она содержит символ &quot;;&quot;, являщийся разделителем, она должна быть заключена в кавычки(экранированые). Правильно будет примерно так:<br /></p><div class="codebox"><pre><code>File = &quot;C:\file.xls&quot;
CreateObject(&quot;ADODB.Connection&quot;).Open &quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&quot; &amp; File &amp; &quot;;Extended Properties=&quot;&quot;Excel 8.0;HDR=Yes;&quot;&quot;&quot;</code></pre></div><p>Почитал внимательнее приведённую мной же ссылку, оказалось что HDR=YES значение по умолчанию <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br /></p><div class="quotebox"><blockquote><p>С книгами Excel первая строка диапазона считается строку заголовка (или имена полей) по умолчанию. Если первый диапазон не содержит заголовков, можно указать HDR=NO в расширенных свойств в строке соединения. Если первая строка содержит заголовки, поставщик OLE DB автоматически имена полей автоматически (где F1 будет представлять первому полю, F2 бы представляют второе поле и так далее).</p></blockquote></div><p>Надо будет всё таки потестировать разные варианты(включая именованные диапазоны и задаваемые вручную). Так, для собственного развития...</p>]]></description>
			<author><![CDATA[null@example.com (BeS Yara)]]></author>
			<pubDate>Tue, 07 May 2013 14:09:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71969#p71969</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71968#p71968</link>
			<description><![CDATA[<div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p><strong>Flasher</strong>, я не уверен что верно понял задачу.<br />Нужно делать выборку по имени колонки? Или нужно делать вывод по имени колонки?</p></blockquote></div><p>Ни то, ни другое. По имени - проблем нет. Нужно по индексу (номер колонки - 1) узнавать имя колонки.</p><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>Это для случая когда названия колонок в первой строке листа, для диапазонов листа не пробовал.</p></blockquote></div><p>Это я могу получать только при задании диапазона колонки. В первом посте пример. Но мне не хочется для каждой колонки вызывать Execute, я хочу получать либо до вызова метода, либо после задания диапазона всего листа.</p><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>Номер колонки(для стиля R1C1) можно получить из свойств поля - oRs(&quot;user&quot;).OrdinalPosition + 1(нумерация полей в рекордсете от 0 идёт). Другие св-ва рекордсета можно посмотреть в студийном отладчике(я пользуюсь 2008-ой студией для таких случаев).</p></blockquote></div><p>Объясню конкретней. Я не хочу получить ошибку, если в Execute буду задавать диапазон, не соответствующий текущему стилю. Поэтому мне надо предварительно выяснить заголовок табулятора, чтобы правильно задать его через Select.<br />Свойства смотрел через VbsEdit.</p><br /><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>По ошибке - MDAC установлен? Какой именно код вызывает ошибку?</p></blockquote></div><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Такой:</div><div class="fancy_spoiler"><div class="codebox"><pre><code>File = &quot;C:\file.xls&quot;
CreateObject(&quot;ADODB.Connection&quot;).Open &quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&quot; &amp; File &amp; &quot;;Extended Properties=Excel 8.0;HDR=Yes;&quot;</code></pre></div></div></div><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>Собственно по какому объекту сейчас обсуждение идёт? <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p></blockquote></div><p>Сейчас ADO приоритетней, т.к. в DAO не вижу, как уже писал выше, аналога GetString (кстати, что по нему?). DAO обсуждаем как альтернативу.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 07 May 2013 12:14:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71968#p71968</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71963#p71963</link>
			<description><![CDATA[<p><strong>Flasher</strong>, я не уверен что верно понял задачу.<br />Нужно делать выборку по имени колонки? Или нужно делать вывод по имени колонки?</p><p>Сделал таблицу в три столбца, в первой строке листа - названия колонок: user, Tel, Net.<br />В коде выбираем строки для которых число телефонных розеток равно 3:<br /></p><div class="codebox"><pre><code>
Option Explicit

Dim oDAO, oDB
Set oDAO = CreateObject(&quot;DAO.DBEngine.36&quot;)
Set oDB = oDAO.OpenDatabase(&quot;tab1.xls&quot;, False, True, &quot;Excel 8.0;HDR=Yes;&quot;)

Dim strSQL, oRS
strSQL = &quot;SELECT * FROM [Лист1$] WHERE Tel = 3&quot;
Set oRS = oDB.OpenRecordset(strSQL)

Do While Not oRS.EOF
   wscript.echo &quot;Группа пользователей: &quot; &amp; oRs(&quot;user&quot;)
   wscript.echo &quot;Кол-во телефонных розеток: &quot; &amp; oRs(&quot;Tel&quot;)
   wscript.echo &quot;Кол-во езернет-розеток: &quot; &amp; oRs(&quot;Net&quot;)
   oRS.MoveNext
Loop

oRS.Close
oDB.Close
Set oRS = Nothing
Set oDB = Nothing
Set oDAO = Nothing
</code></pre></div><p>Это для случая когда названия колонок в первой строке листа, для диапазонов листа не пробовал.</p><p>По поводу получения адресов ячеек в стиле экселя - сильно сомневаюсь в такой возможности из коробки. Всё таки DAO предназначено для работы с БД, а там номера строки в экселевском представлении нет. Хотя, если не делать выборку, и не использовать сортировку - при переборе никто не мешает посчитать номер строки для конкретного набора данных. Но нужно быть на 100% уверенным, что DAO прочтёт строки именно в том порядке который имеется в листе. Это было бы логично, но я не уверен что всё именно так и есть <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />. Номер колонки(для стиля R1C1) можно получить из свойств поля - oRs(&quot;user&quot;).OrdinalPosition + 1(нумерация полей в рекордсете от 0 идёт). Другие св-ва рекордсета можно посмотреть в студийном отладчике(я пользуюсь 2008-ой студией для таких случаев).</p><p>По ошибке - MDAC установлен? Какой именно код вызывает ошибку?</p><p>P.S. кажется я был немного невнимателен - тема плавно с DAO на ADO(а я всё про DAO, да про DAO <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />)... Собственно по какому объекту сейчас обсуждение идёт? <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (BeS Yara)]]></author>
			<pubDate>Tue, 07 May 2013 08:04:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71963#p71963</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71936#p71936</link>
			<description><![CDATA[<p>Спасибо за подключение!<br /></p><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>В <a href="http://support.microsoft.com/kb/278973">ADO</a> для использования названия колонок из первой строки нужно было в connection string это указывать(HDR=YES). В DAO ситуация аналогичная - <a href="http://www.erlandsendata.no/english/index.php?d=envbadacconnstring">ADO Connection Strings</a>.</p></blockquote></div><p>Добавил, пишет:</p><div class="quotebox"><blockquote><p>Ошибка:	Невозможно найти устанавливаемый ISAM.<br />Код:	80004005<br />Источник: 	Microsoft JET Database Engine</p></blockquote></div><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>Ну и для запроса без диапазона нужно было указывать лист а не диапазон. Как с этим обстоит дело в DAO сказать затрудняюсь(никогда с DAO не работал), но скорее всего ситуация аналогична ADO.</p></blockquote></div><p>Что указывать после FROM понятно. А как из диапазона листа получить правильное название заголовка нужного столбца по индексу? Я выше привёл пример, но он выдаёт некорректные результаты.<br />И что по заголовкам табуляторов (№/A-Z), как их получить по индексу? </p><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>Попробуйте посмотреть этот пример: <a href="http://www.erlandsendata.no/english/index.php?d=envbadacwbdbdao">Use a closed workbook as a database (DAO)</a>.</p></blockquote></div><p>Спасибо, ознакомлюсь.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Mon, 06 May 2013 11:58:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71936#p71936</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71931#p71931</link>
			<description><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Никто не ответит?<br /><strong>BeS Yara</strong>, может, Вы знаете?<br />Интересует прежде всего название колонки (без задания диапазона в Execute; если нельзя, то в заданном) и стиль ссылок для заголовков.</p></blockquote></div><p>В <a href="http://support.microsoft.com/kb/278973">ADO</a> для использования названия колонок из первой строки нужно было в connection string это указывать(HDR=YES). В DAO ситуация аналогичная - <a href="http://www.erlandsendata.no/english/index.php?d=envbadacconnstring">ADO Connection Strings</a>. Ну и для запроса без диапазона нужно было указывать лист а не диапазон. Как с этим обстоит дело в DAO сказать затрудняюсь(никогда с DAO не работал), но скорее всего ситуация аналогична ADO. Попробуйте посмотреть этот пример: <a href="http://www.erlandsendata.no/english/index.php?d=envbadacwbdbdao">Use a closed workbook as a database (DAO)</a>.</p><p>P.S. Майкрософт&nbsp; <a href="http://msdn.microsoft.com/ru-ru/library/kd4ck1tt.aspx"> рекомендует</a> отказаться от использования DAO <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> :<br /></p><div class="quotebox"><blockquote><p>Майкрософт рекомендует для новых проектов использовать OLE DB или ODBC. DAO следует использовать только для обслуживания существующих приложений.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (BeS Yara)]]></author>
			<pubDate>Mon, 06 May 2013 09:49:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71931#p71931</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71889#p71889</link>
			<description><![CDATA[<p>Никто не ответит?<br /><strong>BeS Yara</strong>, может, Вы знаете?<br />Интересует прежде всего название колонки (без задания диапазона в Execute; если нельзя, то в заданном) и стиль ссылок для заголовков.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Sat, 04 May 2013 20:41:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71889#p71889</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71864#p71864</link>
			<description><![CDATA[<p><strong>alexii</strong><br />Это DAO. Про лист дописал.<br /></p><div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Про остальное мне что-то вовсе не понятно.</p></blockquote></div><p>Детальней напишите, пож-та, постараюсь разжевать.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Fri, 03 May 2013 22:18:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71864#p71864</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71863#p71863</link>
			<description><![CDATA[<p>А чем Вам не ADO выше:<br /></p><div class="codebox"><pre><code>tn = mdb.TableDefs(0).Name &#039; название листа (таблицы)</code></pre></div><p>Про остальное мне что-то вовсе не понятно.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Fri, 03 May 2013 22:17:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71863#p71863</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71860#p71860</link>
			<description><![CDATA[<p>Господа, а то же самое (название листа/колонки) с помощью ADO можно получить?<br /><strong>Add:</strong> С листом </p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;разобрался</div><div class="fancy_spoiler"><div class="codebox"><pre><code>Set Conn = CreateObject(&quot;ADODB.Connection&quot;)
Conn.Open &quot;...&quot;
Set Catalog = CreateObject(&quot;ADOX.Catalog&quot;)
Set Catalog.ActiveConnection = Conn
WScript.Echo Catalog.Tables(&lt;№ листа&gt;).Name</code></pre></div></div></div><p>С колонками не очень.<br />Первую получаю, допустим, так: <em>.Execute(&quot;SELECT * FROM [чего-то там]&quot;).Fields(0).Name</em>, а дальше?<br />Запись <em>Catalog.Tables(&lt;№ листа&gt;).Columns(&lt;№ колонки&gt;)</em> выдаёт сумятицу..</p><p>Также интересует получение заголовков табуляторов в соответствии со стилем ссылок (A1/R1C1).<br />Это возможно?</p><p>Ещё: у ADO (Recordset/Execute) есть метод GetString, а тут я не увидел. Имеется подобное в DAO?<br />И если в ADO я выделяю диапазон всего столбца (D:D, например), то GetString возвращает несколько лишних разделителей (возврат каретки по умолчанию) на конце списка. Причина этого в чём?</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Fri, 03 May 2013 20:08:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71860#p71860</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=69115#p69115</link>
			<description><![CDATA[<p>Чтобы окончательно раскрыть тему, доведу дело до реального запроса...<br /></p><div class="codebox"><pre><code>Set Engine = CreateObject(&quot;DAO.DBEngine.36&quot;)
Set mdb = Engine.OpenDatabase(&quot;c:\util\base.xls&quot;, True, False, &quot;Excel 8.0&quot;)

tn = mdb.TableDefs(0).Name                   &#039; название листа (таблицы)
fn = mdb.TableDefs(0).fields(2).Name         &#039; название поля (колонки)
dn = mdb.TableDefs(0).fields(3).Name        &#039; название поля (колонки)

Set rs = mdb.OpenRecordset(&quot;select * from [&quot; &amp; tn &amp; &quot;] where [&quot; &amp; fn &amp; &quot;]=&#039;C002&#039; and [&quot; &amp; dn &amp; &quot;] like &#039;*10.01.2013*&#039;&quot;)
rs.movelast
MsgBox rs.RecordCount</code></pre></div><p>Это запросец к выгрузке базы из СЭО АКИС</p>]]></description>
			<author><![CDATA[null@example.com (Евген)]]></author>
			<pubDate>Tue, 05 Feb 2013 05:34:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=69115#p69115</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=68835#p68835</link>
			<description><![CDATA[<p>Гы-ы-ы-ы....&nbsp; &nbsp;вообщем сам тупанул (но видать вместе с компиком)<br />Дело в том, что вчера я запускал оное на Win7 x64, а чот видать из памяти выбило, что на такой винде нет объекта DAO, но что примечательно - винда вчера не ругалась (что невозможно создать такой объект), а вот сегодня - на неё нашло просветление и она мне подсказала <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Ну и после оного поднял виртуал с хрюшкой, и дозаточил <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> щас робит...<br /></p><div class="codebox"><pre><code>Set Engine = CreateObject(&quot;DAO.DBEngine.36&quot;)
Set mdb = Engine.OpenDatabase(&quot;c:\util\base.xls&quot;,True,False,&quot;Excel 8.0&quot;)

&#039; выводит имеющиеся имена таблиц
for each td in mdb.tabledefs
msgbox td.name
next


Set rs=mdb.OpenRecordset(&quot;1$&quot;)
msgbox rs.fields(0)</code></pre></div><p>Ах да, ещё вот какая грабля оказалась, </p><div class="quotebox"><blockquote><p>rset</p></blockquote></div><p> - видать какое-то зарезервированное слово (я его хотел использовать в качестве сокращения для Recordset), его нельзя использовать в качестве переменной, но я почему-то опять был не в курсе...<br />видать длительный простой незамедлительно сказывается... <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Евген)]]></author>
			<pubDate>Fri, 25 Jan 2013 05:39:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=68835#p68835</guid>
		</item>
		<item>
			<title><![CDATA[VBS: SQL запрос к листу Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=68812#p68812</link>
			<description><![CDATA[<p>Коллеги, приветствую !<br />Знаю что можно сделать SQL запрос к Листу Excel, но все примеры сделаны на основе ADO, а мне надо - используя DAO, выдаёт синтаксическую ошибку, может кто встречался с подобным, что делаю не так...<br /></p><div class="codebox"><pre><code>Set Engine = CreateObject(&quot;DAO.DBEngine.36&quot;)
Set mdb = Engine.OpenDatabase(&quot;c:\util\base.xls&quot;)
Set rset=mdb.OpenRecordset(&quot;select * from Лист1$&quot;)
msgbox rset.fields(0)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Евген)]]></author>
			<pubDate>Thu, 24 Jan 2013 10:06:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=68812#p68812</guid>
		</item>
	</channel>
</rss>
