<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: Обработка всех файлов XLS в каталоге кроме списка исключений.]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=17023</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=17023&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: Обработка всех файлов XLS в каталоге кроме списка исключений.».]]></description>
		<lastBuildDate>Wed, 16 Mar 2022 12:02:15 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: Обработка всех файлов XLS в каталоге кроме списка исключений.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=152590#p152590</link>
			<description><![CDATA[<div class="quotebox"><cite>andypetr пишет:</cite><blockquote><p>objApp.Visible = True (и окно Экселя мелькает), я бы присвоил False</p></blockquote></div><p>Это само собой - для дебага True т.к. ряд документов нужно поправить в плане совместимости и они дополнительные сообщения выкидывают. Все отрабатывает. Спасибо большое <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (UstasBy)]]></author>
			<pubDate>Wed, 16 Mar 2022 12:02:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=152590#p152590</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Обработка всех файлов XLS в каталоге кроме списка исключений.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=152588#p152588</link>
			<description><![CDATA[<p><strong>UstasBy</strong>, на здоровье. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Вывод на экран консоли:<br /></p><div class="codebox"><pre><code>cscript //nologo script.vbs</code></pre></div><p>Вывод в лог-файл (имя можно задавать произвольное):<br /></p><div class="codebox"><pre><code>cscript //nologo script.vbs &gt;&gt; test.log</code></pre></div><p>Ещё мне лично не нравится objApp.Visible = True (и окно Экселя мелькает), я бы присвоил False.</p>]]></description>
			<author><![CDATA[null@example.com (andypetr)]]></author>
			<pubDate>Wed, 16 Mar 2022 09:19:23 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=152588#p152588</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Обработка всех файлов XLS в каталоге кроме списка исключений.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=152587#p152587</link>
			<description><![CDATA[<p><strong>andypetr</strong><br />Спасибо большое. Проверил - отрабатывает отлично. Еще вопрос - окно, выведенное WScript.Echo по истечение нескольких секунд как то закрывать можно? Не нашел такой возможности.<br />Или просто вместо этого - выводить в лог.<br />Если нет - просто закомментирую строки. Спасибо...</p>]]></description>
			<author><![CDATA[null@example.com (UstasBy)]]></author>
			<pubDate>Wed, 16 Mar 2022 07:36:31 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=152587#p152587</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Обработка всех файлов XLS в каталоге кроме списка исключений.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=152584#p152584</link>
			<description><![CDATA[<p>Данное условие &quot;фильтрует&quot; все файлы в рабочей папке, оставляя только Экселевские.<br />Я поленился и, отрезая 3 левых символа расширения: Left(Ext, 3), проверяю на начало расширения: &quot;xls&quot;.<br />Можно перечислить все доступные расширения в массиве (уже без обрезания расширения): Array(&quot;xls&quot;, &quot;xlsm&quot;, &quot;xlsb&quot;).<br />Сегодня не за компом уже, завтра подробнее могу написать, если надо.</p>]]></description>
			<author><![CDATA[null@example.com (andypetr)]]></author>
			<pubDate>Tue, 15 Mar 2022 15:13:50 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=152584#p152584</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Обработка всех файлов XLS в каталоге кроме списка исключений.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=152582#p152582</link>
			<description><![CDATA[<p><strong>andypetr</strong>, спасибо. Круто!<br />Немного не понял вот этот фрагмент:</p><div class="codebox"><pre><code>		&#039; Если расширение = xls*
		If UBound(Filter(Array(&quot;xls&quot;), Left(Ext, 3), True, vbTextCompare)) &gt;= 0 Then </code></pre></div><p>Не понял про расширение. Расширения в списке первой очереди <strong>strOpenFirst</strong>, ровно как и в <strong>strOpenNever</strong> и в остальных документах могут быть быть разные из экселевских - xlsm, xlsx или xls. Файлы в списках&nbsp; <strong>strOpenFirst</strong> и <strong>strOpenNever</strong> меняться будут редко и я вручную откорректирую по мере надобности...<br />Или <strong>Array(&quot;xls&quot;)</strong> и значит что расширение будет любое из экселевских (как в комментарии xls*) ?</p>]]></description>
			<author><![CDATA[null@example.com (UstasBy)]]></author>
			<pubDate>Tue, 15 Mar 2022 13:17:24 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=152582#p152582</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Обработка всех файлов XLS в каталоге кроме списка исключений.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=152581#p152581</link>
			<description><![CDATA[<p><strong>UstasBy</strong>, добрый день.<br />Я немного переписал, по своему вкусу.<br />Тщательно не тестировал.</p><div class="codebox"><pre><code>On Error GoTo 0

&#039; Рабочая папка
strTempPath = &quot;E:\- QW -&quot;

&#039; Открываются первыми
strOpenFirst = &quot;QR1.xlsm;QR2.xlsm;QR3.xlsm&quot;
&#039; Исключения - не открываются
strOpenNever = &quot;PC.xls;PC.xlsx&quot;

Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objFolder = objFSO.GetFolder(strTempPath) 
Set objApp = CreateObject(&quot;Excel.Application&quot;)
objApp.Visible = True

&#039; 1 шаг - обрабатываем файлы из strOpenFirst
&#039; 2 шаг - обрабатываем все остальные файлы (кроме strOpenNever)
For iStep = 1 To 2

	For Each objFile In objFolder.Files &#039; objFile = &quot;E:\- QW -\qr1.xlsm&quot;
	    
		strFile = objFile.Name &#039; strFile = &quot;QR1.xlsm&quot;
		Ext = objFSO.GetExtensionName(objFile) &#039; Ext = &quot;xlsm&quot;

		&#039; Если расширение = xls*
		If UBound(Filter(Array(&quot;xls&quot;), Left(Ext, 3), True, vbTextCompare)) &gt;= 0 Then 

			&#039; blnProcess = True, если файл из списка strOpenFirst
			blnProcess = (UBound(Filter(Split(strOpenFirst, &quot;;&quot;), strFile, True, vbTextCompare)) &gt;= 0)
		
			If iStep = 2 Then

				If blnProcess Then
					&#039; На 2-м шаге не обрабатываем файл из списка strOpenFirst
					blnProcess = False
				Else
					If UBound(Filter(Split(strOpenNever, &quot;;&quot;), strFile, True, vbTextCompare)) &gt;= 0 Then
						&#039; Не обрабатываем файл из списка strOpenNever
						WScript.Echo &quot;Файл&quot;, strFile, &quot;не обработан.&quot;
					Else
						blnProcess = True
					End If
				End If

			End If

			If blnProcess Then

				dOldDate = objFSO.GetFile(objFile).DateLastModified
				With objApp.Workbooks.Open(objFile)
					&#039; Открыли-закрыли, с сохранением.
					.Close True &#039;SaveChanges = True
				End With
				dNewDate = objFSO.GetFile(objFile).DateLastModified
				WScript.Echo &quot;Файл&quot;, strFile, &quot;модифицирован:&quot;, dOldDate, &quot;=&gt;&quot;, dNewDate
		
			End If

		End If

	Next &#039;objFile

Next &#039;iStep

objApp.Quit

Set objFSO = Nothing
Set objFolder = Nothing
Set objApp = Nothing

WScript.Quit(0)
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (andypetr)]]></author>
			<pubDate>Tue, 15 Mar 2022 12:11:59 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=152581#p152581</guid>
		</item>
		<item>
			<title><![CDATA[VBS: Обработка всех файлов XLS в каталоге кроме списка исключений.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=152578#p152578</link>
			<description><![CDATA[<p>День добрый. Имеется каталог (к примеру - <strong>&quot;E:\- QW -\&quot;</strong>). В нем насыпано много файлов .xls / .xlsx / .xlsm. Требуется производить обновление этих данных - по сути - открыть (при открытии макросы и запросы отработают) и сохранить. Но есть нюансы - первыми нужно открыть и сохранить несколько определенных файлов; затем все остальные в директории (там их много); но есть те, которые трогать не нужно. В подкаталоги глубже лезть не требуется. Нарисовал примерно следующее.</p><p>&quot;Конструкция&quot; несмотря на корявость частично отрабатывает, но почему-то строка &quot;<strong>If FileName &lt;&gt; &quot;PC.xls;PC.xlsx;QR1.xlsm;QR2.xlsm;QR3.xlsm&quot; Then</strong>&quot; не отрабатывает по исключениям - они все равно запускаются. Как это можно поправить и как в первой части где обрабаотываются файлы QR1.xlsm / QR2.xlsm / QR3.xlsm указать перечисление... Спасибо.</p><p>... или как вариант - брать список отрабатываемых во второй части - из внешнего текстового файла либо...</p><div class="codebox"><pre><code>
set App = CreateObject(&quot;Excel.Application&quot;)
App.visible = true
App.Workbooks.Open(&quot;E:\- QW -\QR1.xlsm&quot;)
App.ActiveWorkbook.Save
App.Workbooks.Close
App.quit

set App = CreateObject(&quot;Excel.Application&quot;)
App.visible = true
App.Workbooks.Open(&quot;E:\- QW -\QR2.xlsm&quot;)
App.ActiveWorkbook.Save
App.Workbooks.Close
App.quit

set App = CreateObject(&quot;Excel.Application&quot;)
App.visible = true
App.Workbooks.Open(&quot;E:\- QW -\QR3.xlsm&quot;)
App.ActiveWorkbook.Save
App.Workbooks.Close
App.quit

strTempPath = &quot;E:\- QW -&quot;
Set objFSO=CreateObject(&quot;Scripting.FileSystemObject&quot;) 
Set objFolder=objFSO.GetFolder(strTempPath) 

For Each objFile In objFolder.Files 
Ext = Mid(objFile, InstrRev(objFile, &quot;.&quot;) + 1)
 
If FileName &lt;&gt; &quot;PC.xls;PC.xlsx;QR1.xlsm;QR2.xlsm;QR3.xlsm&quot; Then 
set App = CreateObject(&quot;Excel.Application&quot;)
App.visible = true
App.Workbooks.Open objFile
App.ActiveWorkbook.Save
App.Workbooks.Close
App.quit
End If
Next
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (UstasBy)]]></author>
			<pubDate>Tue, 15 Mar 2022 08:17:07 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=152578#p152578</guid>
		</item>
	</channel>
</rss>
