<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=11346</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=11346&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: Отбирать в коллекцию папки по определенному фильтру».]]></description>
		<lastBuildDate>Wed, 24 Feb 2016 18:14:54 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101399#p101399</link>
			<description><![CDATA[<p><strong>Flasher</strong>, Вы гений! Низкий Вам поклон и миллион благодарностей!</p>]]></description>
			<author><![CDATA[null@example.com (Mik)]]></author>
			<pubDate>Wed, 24 Feb 2016 18:14:54 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101399#p101399</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101398#p101398</link>
			<description><![CDATA[<div class="codebox"><pre><code>CSV.WriteLine Replace(Ltrim(Replace(rNom,&quot;0&quot;,&quot; &quot;)),&quot; &quot;,&quot;0&quot;) &amp; &quot;;&quot; &amp; Ubound(Split(Cors, &quot;, &quot;)) + 1 &amp; &quot;;&quot; &amp; Replace(Cors,&quot;,&quot;,&quot;;&quot;)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Wed, 24 Feb 2016 17:47:56 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101398#p101398</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101396#p101396</link>
			<description><![CDATA[<p><strong>Flasher</strong>, огромнейше благодарен за Ваше желание помочь и разобраться!<br />К сожалению, на работе Интернет заблокирован, поэтому прочитал Ваш пост только сейчас. Зато на работе нашлось время для работы над скриптом. Нашел свою ошибку: Set-ы и другие переменные, которые участвуют в процедуре, нужно прописывать до вызова самой процедуры, а у меня было прописано после. Никак не мог понять, что процедура, в отличии от функции, начинается не с Sub, а раньше. Теперь хорошо это усвоил и сразу решилась куча проблем! Отдельное спасибо за Ваши пояснения к скрипту! Поэтому нужно добавить к Вашему комментарию:<br /></p><div class="quotebox"><blockquote><p>Но такое может произойти только при условии добавочного объявления внутри процедуры или закрытии/очищении объекта CSV.</p></blockquote></div><p>Или при условии открытия объекта CSV после вызова самой процедуры.</p><p>Единственное, что осталось еще нерешенным, так это подсчет числовых значений в атрибуте &quot;correct&quot;. Как получать значения видно в посте 26, как их просто записать в CSV показано в Вашем посте 29. Но необходимо вклинить между двумя нижепредставленными значениями третье:<br /></p><div class="codebox"><pre><code>CSV.WriteLine Replace(Ltrim(Replace(rNom,&quot;0&quot;,&quot; &quot;)),&quot; &quot;,&quot;0&quot;) &amp; &quot;;&quot; &amp; Replace(Cors,&quot;,&quot;,&quot;;&quot;)</code></pre></div><p>Как его получить долго ломал голову. Суть в том, что значения атрибута &quot;correct&quot; могут иметь вид &quot;3&quot;, а могут &quot;1, 5, 7, 15, 9, 12&quot;. Необходимо посчитать их количество и вывести такой результат: 1 - для первого случая и 6 - для второго. Ничего лучше не придумал, как если по-умолчанию будет выводиться 1, а после очищаем все числовые значения, считаем число запятых и прибавляем их к значению по-умолчанию. Но с помощью чего это реализовать, да еще чтоб можно было вклинить в одну строчку кода выше, даже не представляю...</p>]]></description>
			<author><![CDATA[null@example.com (Mik)]]></author>
			<pubDate>Wed, 24 Feb 2016 17:32:04 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101396#p101396</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101386#p101386</link>
			<description><![CDATA[<p>Никакого запрета на запись в корень С: нет? Такой скрипт работает?:<br /></p><div class="codebox"><pre><code>Option Explicit
Const File = &quot;C:\Test.csv&quot;
Dim FSO : Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Dim CSV : Set CSV = FSO.OpenTextFile(File, 8, True)
Dim n : WrText : CSV.Close
GetObject(&quot;new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}&quot;).document.Application._
NameSpace(FSO.GetParentFolderName(File)).ParseName(FSO.GetFileName(File)).Verbs.Item(0).DoIt

Sub WrText
	n = n + 1
	CSV.WriteLine n &amp; &quot;;Текст;&quot;
	If n &lt; 10 Then WrText
End Sub</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 23 Feb 2016 20:24:04 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101386#p101386</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101383#p101383</link>
			<description><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Я понимаю. Но такое может произойти только при условии добавочного объявления внутри процедуры или закрытии/очищении объекта CSV.</p></blockquote></div><p>Добавочного объявления внутри процедуры нет:<br /></p><div class="codebox"><pre><code>Dim Items, Max, Filt, Fold, rNom, Cors</code></pre></div><p>Закрытие/очищение объекта CSV тоже отсутствует - такой строки в файле нигде нет:<br /></p><div class="codebox"><pre><code>Set CSV = nothing</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Mik)]]></author>
			<pubDate>Tue, 23 Feb 2016 20:03:25 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101383#p101383</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101382#p101382</link>
			<description><![CDATA[<p>Я понимаю. Но такое может произойти только при условии добавочного объявления внутри процедуры или закрытии/очищении объекта CSV.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 23 Feb 2016 19:54:28 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101382#p101382</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101381#p101381</link>
			<description><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Глобальные можно объявлять где угодно вне процедур и функций <span class="bbu">единожды</span>.<br />Соответственно, если указывать в перечислении, то от &#039;Dim CSV :&#039; нужно избавиться.</p></blockquote></div><p>Спасибо за еще одно пояснение!<br />Глобальную переменную CSV объявил единожды, но всё же ошибка &quot;Требуется объект: CSV&quot; на строке<br /></p><div class="codebox"><pre><code>CSV.WriteLine Replace(Ltrim(Replace(rNom,&quot;0&quot;,&quot; &quot;)),&quot; &quot;,&quot;0&quot;) &amp; &quot;;&quot; &amp; Replace(Cors,&quot;,&quot;,&quot;;&quot;)</code></pre></div><p>о чем уже писал в 30 посте.</p>]]></description>
			<author><![CDATA[null@example.com (Mik)]]></author>
			<pubDate>Tue, 23 Feb 2016 19:48:38 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101381#p101381</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101380#p101380</link>
			<description><![CDATA[<p>Глобальные можно объявлять где угодно вне процедур и функций <span class="bbu">единожды</span>.<br />Соответственно, если указывать в перечислении, то от &#039;Dim CSV :&#039; нужно избавиться.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 23 Feb 2016 19:41:36 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101380#p101380</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101379#p101379</link>
			<description><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Тут только одна глобальная переменная - CSV. В процедуре открывать файл на запись и не надо, он же один.</p></blockquote></div><p>Глобальные переменные перечисляются после &quot;Option Explicit : Dim ...&quot;&nbsp; Если сюда добавляю CSV, тогда на строке<br /></p><div class="codebox"><pre><code>Dim CSV : Set CSV = FSO.OpenTextFile(&quot;C:\Test.csv&quot;, 8, True)</code></pre></div><p>получаю ошибку &quot;имя было переопределено&quot;...</p>]]></description>
			<author><![CDATA[null@example.com (Mik)]]></author>
			<pubDate>Tue, 23 Feb 2016 19:32:20 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101379#p101379</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101378#p101378</link>
			<description><![CDATA[<p>Какие переменные? Тут только одна глобальная переменная - CSV. В процедуре открывать файл на запись и не надо, он же один.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 23 Feb 2016 19:21:51 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101378#p101378</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101377#p101377</link>
			<description><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Плюс ко всему никто не мешает дописывать новые строки в файл</p></blockquote></div><p>Прописал переменные глобально и добавил строки в файл. При компиляции ошибка &quot;Требуется объект CSV&quot;.<br />Set CSV находится ведь вне процедуры (в процедуру прописать нельзя - &quot;разрешение отклонено&quot;)...</p>]]></description>
			<author><![CDATA[null@example.com (Mik)]]></author>
			<pubDate>Tue, 23 Feb 2016 18:55:41 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101377#p101377</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101374#p101374</link>
			<description><![CDATA[<p>Не нужно присваивать пустые значения. Я же писал, что достаточно объявить переменные глобально.<br />От счётчика тут вообще никакого толку. Главное, что запись попала под условие.<br />Плюс ко всему никто не мешает дописывать новые строки в файл:<br /></p><div class="codebox"><pre><code>Dim CSV : Set CSV = FSO.OpenTextFile(&quot;C:\Test.csv&quot;, 8, True)

Sub FFolder(Folder, T)
    &#039;...........
	CSV.WriteLine Replace(Ltrim(Replace(rNom,&quot;0&quot;,&quot; &quot;)),&quot; &quot;,&quot;0&quot;) &amp; &quot;;&quot; &amp; Replace(Cors,&quot;,&quot;,&quot;;&quot;)
End Sub</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 23 Feb 2016 18:01:04 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101374#p101374</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101371#p101371</link>
			<description><![CDATA[<p><strong>Flasher</strong> если <br /></p><div class="codebox"><pre><code>If nCountSC &gt; 0 Then sRN = sRN &amp; &quot;;&quot; &amp; sCS &amp; chr(13)</code></pre></div><p>заменить на <br /></p><div class="codebox"><pre><code>sRN = sRN &amp; &quot;;&quot; &amp; sCS &amp; chr(13)</code></pre></div><p>или вместо nCountSC &gt; 0 поставить T<br />То файл CSV выходит с пустым содержанием...<br />Может быть нужно каждую переменную дописать к<br /></p><div class="codebox"><pre><code>Dim Items, Max, Filt, Fold</code></pre></div><p>?<br />До процедуры прописал:<br /></p><div class="codebox"><pre><code>sRN = &quot;&quot;
sCS = &quot;&quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Mik)]]></author>
			<pubDate>Tue, 23 Feb 2016 17:38:18 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101371#p101371</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101369#p101369</link>
			<description><![CDATA[<div class="quotebox"><cite>Mik пишет:</cite><blockquote><p>но как их теперь отобрать</p></blockquote></div><p>Конкретней, пож-та.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 23 Feb 2016 17:26:56 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101369#p101369</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Отбирать в коллекцию папки по определенному фильтру]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=101368#p101368</link>
			<description><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Тогда не вижу проблемы</p></blockquote></div><p>Прошу извинить еще раз, но столкнулся всё же с проблемой на отрезке:<br /></p><div class="codebox"><pre><code>If Not IsNull(ReadXML(F.Path, &quot;correct&quot;)) Then &#039; ReadXML определяется функцией
	T = 1 &#039; запоминаем, что есть такие файлы
	rNom = ReadXML(F.Path, &quot;regNo&quot;)
	Cors = ReadXML(F.Path, &quot;correct&quot;)
	If nCountSC &gt; 0 Then sRN = sRN &amp; &quot;;&quot; &amp; sCS &amp; chr(13)
	sRN = sRN &amp; Replace(Ltrim(Replace(rNom,&quot;0&quot;,&quot; &quot;)),&quot; &quot;,&quot;0&quot;)
	sCS = Replace(Cors,&quot;,&quot;,&quot;;&quot;,1,-1)
	&#039;Shell.NameSpace(OutDir).CopyHere F.Path, AllOptions
End If</code></pre></div><p>Поясняю: старый скрипт использовался не только для копирования файлов, но чаще всего для получения определенных значений и записи их в CSV-файл (без копирования исходных файлов - поэтому в примере строку копирования закомментировал). Как записать в CSV знаю, но как их теперь отобрать, не понимаю. Раньше для этого использовался счетчик внутри процедуры (nCountSC). Как быть теперь?</p>]]></description>
			<author><![CDATA[null@example.com (Mik)]]></author>
			<pubDate>Tue, 23 Feb 2016 17:15:35 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=101368#p101368</guid>
		</item>
	</channel>
</rss>
