<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBA: Перенос данных из Excel в цикле]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=8106</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=8106&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBA: Перенос данных из Excel в цикле».]]></description>
		<lastBuildDate>Fri, 01 Mar 2013 19:30:39 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69889#p69889</link>
			<description><![CDATA[<p>Сорри, не заметил. Спасибо. Все работает.</p>]]></description>
			<author><![CDATA[null@example.com (NikNap)]]></author>
			<pubDate>Fri, 01 Mar 2013 19:30:39 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69889#p69889</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69875#p69875</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>но сам файл в юникоде.</p></blockquote></div><p>Нет:<br /></p><div class="quotebox"><blockquote><p>With objFSO.CreateTextFile(objFSO.BuildPath(strFolder, &quot;file.txt&quot;), True, <span style="color: Red">False</span>)</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Fri, 01 Mar 2013 13:46:07 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69875#p69875</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69872#p69872</link>
			<description><![CDATA[<p>Так каждая строчка в кодировке UTF-8, но сам файл в юникоде. А как сделать так, чтоб файл сохранялся в UTF-8?</p>]]></description>
			<author><![CDATA[null@example.com (NikNap)]]></author>
			<pubDate>Fri, 01 Mar 2013 08:59:51 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69872#p69872</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69871#p69871</link>
			<description><![CDATA[<p>Примерно так:<br /></p><div class="codebox"><pre><code>Option Explicit

Sub SomeProcExport()
    Dim objFSO As Object
    Dim objRow As Range
    Dim strFolder As String
    Dim i As Long
    
    
    Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
    
    For Each objRow In ThisWorkbook.ActiveSheet.UsedRange.Rows
        strFolder = objFSO.BuildPath(ThisWorkbook.Path, objRow.Cells(1, 1).Value)
        
        i = 1
        
        Do While objFSO.FolderExists(strFolder)
            i = i + 1
            strFolder = objFSO.BuildPath(ThisWorkbook.Path, objRow.Cells(1, 1).Value &amp; &quot; (&quot; &amp; CStr(i) &amp; &quot;)&quot;)
        Loop
        
        objFSO.CreateFolder strFolder
        
        With objFSO.CreateTextFile(objFSO.BuildPath(strFolder, &quot;file.txt&quot;), True, False)
            .WriteLine StrConvert( _
                &quot;Наименование: &quot; &amp; objRow.Cells(1, 2).Value &amp; &quot;; &quot; &amp; _
                &quot;длина: &quot; &amp; objRow.Cells(1, 3).Value &amp; &quot;; &quot; &amp; _
                &quot;ширина: &quot; &amp; objRow.Cells(1, 4).Value &amp; &quot;; &quot; &amp; _
                &quot;высота: &quot; &amp; objRow.Cells(1, 5).Value, _
                &quot;UTF-8&quot;, &quot;Windows-1251&quot;)
            
            .Close
        End With
    Next
    
    Set objFSO = Nothing
End Sub

Function StrConvert(strValue As String, strSourceCharset As String, strDestCharset As String)
    Const adTypeText As Integer = 2
    Const adModeReadWrite As Integer = 3
    
    With CreateObject(&quot;ADODB.Stream&quot;)
        .Type = adTypeText
        .Mode = adModeReadWrite
        
        .Open
        
        .Charset = strSourceCharset
        .WriteText strValue
        
        .Position = 0
        .Charset = strDestCharset
        
        StrConvert = .ReadText
    End With
End Function
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Fri, 01 Mar 2013 00:02:58 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69871#p69871</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69869#p69869</link>
			<description><![CDATA[<p>alexii, скажите, пожалуйста, как сделать так, чтоб файл сохранялся в кодировке UTF-8?</p>]]></description>
			<author><![CDATA[null@example.com (NikNap)]]></author>
			<pubDate>Thu, 28 Feb 2013 22:22:45 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69869#p69869</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69793#p69793</link>
			<description><![CDATA[<p>Огромное спасибо.<br />Вариант от&nbsp; alexii работает прекрасно.<br />Вариант от dab00, к сожалению, ругается на 2-ю строку (Invalid use of Me keyword)</p>]]></description>
			<author><![CDATA[null@example.com (NikNap)]]></author>
			<pubDate>Wed, 27 Feb 2013 08:23:54 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69793#p69793</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69791#p69791</link>
			<description><![CDATA[<p><strong>NikNap</strong>, ну, вот как-то так:<br /></p><div class="codebox"><pre><code>Option Explicit

Sub SomeProcExport()
    Dim objFSO As Object
    Dim objRow As Range
    Dim strFolder As String
    Dim i As Long
    
    
    Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
    
    For Each objRow In ThisWorkbook.ActiveSheet.UsedRange.Rows
        strFolder = objFSO.BuildPath(ThisWorkbook.Path, objRow.Cells(1, 1).Value)
        
        i = 1
        
        Do While objFSO.FolderExists(strFolder)
            i = i + 1
            strFolder = objFSO.BuildPath(ThisWorkbook.Path, objRow.Cells(1, 1).Value &amp; &quot; (&quot; &amp; CStr(i) &amp; &quot;)&quot;)
        Loop
        
        Debug.Print strFolder
        
        objFSO.CreateFolder strFolder
        
        With objFSO.CreateTextFile(objFSO.BuildPath(strFolder, &quot;file.txt&quot;), True, True)
            .WriteLine _
                &quot;Наименование: &quot; &amp; objRow.Cells(1, 2).Value &amp; &quot;; &quot; &amp; _
                &quot;длина: &quot; &amp; objRow.Cells(1, 3).Value &amp; &quot;; &quot; &amp; _
                &quot;ширина: &quot; &amp; objRow.Cells(1, 4).Value &amp; &quot;; &quot; &amp; _
                &quot;высота: &quot; &amp; objRow.Cells(1, 5).Value
            
            .Close
        End With
    Next
    
    Set objFSO = Nothing
End Sub
</code></pre></div><p>в первом приближении.</p><p>Путь берётся равным пути документа. Целевым листом считается активный рабочий лист.</p><p>Имейте в виду, что, в соответствии с высказанными пожеланиями, повторный запуск приведёт к созданию второго экземпляра папок.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 27 Feb 2013 06:17:43 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69791#p69791</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69790#p69790</link>
			<description><![CDATA[<p>Попробуйте так:<br /></p><div class="codebox"><pre><code>
Sub Go()
    Me.Range(&quot;A1&quot;).Activate
    Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
    i = 0
    Do Until ActiveCell.Value = &quot;&quot;
        MsgBox ActiveCell.Value
        folder = ActiveCell.Value
        If Not fso.FolderExists(folder) Then fso.CreateFolder (folder)
        file = folder &amp; &quot;\file.txt&quot;
        Set f = fso.OpenTextFile(file, 8, True)
        s = ActiveCell.Offset(0, 1).Value &amp; &quot;;&quot; &amp; ActiveCell.Offset(0, 2).Value &amp; &quot;;&quot; &amp; _
                ActiveCell.Offset(0, 3).Value &amp; &quot;;&quot; &amp; ActiveCell.Offset(0, 4).Value
        f.WriteLine (s)
        f.Close
        i = i + 1
        ActiveCell.Offset(1, 0).Activate
    Loop
    Set fso = Nothing
    MsgBox &quot;Обработано строк: &quot; &amp; i
End Sub
</code></pre></div><p>Код должен быть в модуле листа.</p>]]></description>
			<author><![CDATA[null@example.com (dab00)]]></author>
			<pubDate>Wed, 27 Feb 2013 05:27:54 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69790#p69790</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69786#p69786</link>
			<description><![CDATA[<div class="quotebox"><cite>Rom5 пишет:</cite><blockquote><p>Видимо, имелось в виду - &quot;<strong>текст B1; текст C1; текст D1; текст E1</strong>&quot;, т.е. одна строка (а не колонка) -&gt; в один файл ?</p></blockquote></div><p>ДА, прошу прощения, ошибся.</p>]]></description>
			<author><![CDATA[null@example.com (NikNap)]]></author>
			<pubDate>Tue, 26 Feb 2013 21:21:08 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69786#p69786</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69785#p69785</link>
			<description><![CDATA[<div class="quotebox"><cite>NikNap пишет:</cite><blockquote><p>&quot;текст A2 текст A3 текст A4 текст A5&quot;. <br />..<br />11 12 13 14 15<br />текстовый файл C:\...\11\file.txt&nbsp; содержит &quot;Наименование: 12; длина: 13; ширина: 14; высота: 15&quot;,</p></blockquote></div><p>Видимо, имелось в виду - &quot;<strong>текст B1; текст C1; текст D1; текст E1</strong>&quot;, т.е. одна строка (а не колонка) -&gt; в один файл ?</p><p>Если можно писать в исходный файл, то содержимое будущих файлов можно сформировать заранее (формулой, для наглядности) в колонке, например, <strong>F</strong>, а в следующих колонках протоколировать результат работы скрипта.</p><br /><br /><p>Для начала макросом считывать в цикле количества рабочих строк значение из колонки A в переменную, приводить ее содержимое к требованиям применяемым к именам файлов <em>(убрать-заменить всякие кавычки, спецсимволы, проконтролировать длину и т.п.)</em>, полученный путь для наглядности отладки сохранять в колонку <strong>G</strong>.</p><p>Оттестировав эту часть, дописать макрос файловыми операциями -&nbsp; создать каталог с именем по значению из колонки G, создать текстовый файл с готовым содержимым из ячейки F, результат (успешно или нет создание каталога и файла) заносить в колонку <strong>H</strong> - потом будет легче понять, что и как должно было создасться и искать причину неудач.</p>]]></description>
			<author><![CDATA[null@example.com (Rom5)]]></author>
			<pubDate>Tue, 26 Feb 2013 21:08:09 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69785#p69785</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69781#p69781</link>
			<description><![CDATA[<p>&quot;текст A2 текст A3 текст A4 текст A5&quot;. <br />&quot;текст&quot; - это заданный в явном виде текст, т.е. если в экселевском файле у нас массив:<br />11 12 13 14 15<br />21 22 23 24 25<br />31 32 33 34 35<br />...&nbsp; ...&nbsp; ...&nbsp; ...&nbsp; ...&nbsp; &nbsp;и т.д., то</p><p>текстовый файл C:\...\11\file.txt&nbsp; содержит &quot;Наименование: 12; длина: 13; ширина: 14; высота: 15&quot;,<br />текстовый файл C:\...\21\file.txt&nbsp; содержит &quot;Наименование: 22; длина: 23; ширина: 24; высота: 25&quot;,<br />текстовый файл C:\...\31\file.txt&nbsp; содержит &quot;Наименование: 32; длина: 33; ширина: 34; высота: 35&quot;,<br />и т.д.</p>]]></description>
			<author><![CDATA[null@example.com (NikNap)]]></author>
			<pubDate>Tue, 26 Feb 2013 19:19:35 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69781#p69781</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69780#p69780</link>
			<description><![CDATA[<p>Теперь разъясните по поводу:<br /></p><div class="quotebox"><blockquote><p>&quot;текст A2 текст A3 текст A4 текст A5&quot;.</p></blockquote></div><p>Не «B1+C1+D1+E1»? Если — нет, выкладывайте упакованный образец документа на RGhost.ru.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 26 Feb 2013 18:24:26 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69780#p69780</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69778#p69778</link>
			<description><![CDATA[<p>Хмм.. это я не учел...<br />Хотя это не принципиально, т.к. в столбце A - наименование продукции (маркировка запчастей) и оно не должно повторяться, так что ничего страшного, если папка перезапишется.<br />А возможно дописать в название папки &quot;-1&quot;, потом &quot;-2&quot; и т.д. при повторяющихся значениях?</p>]]></description>
			<author><![CDATA[null@example.com (NikNap)]]></author>
			<pubDate>Tue, 26 Feb 2013 17:05:42 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69778#p69778</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69777#p69777</link>
			<description><![CDATA[<p>Как быть, если значения в столбце A повторятся?</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 26 Feb 2013 16:55:06 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69777#p69777</guid>
		</item>
		<item>
			<title><![CDATA[VBA: Перенос данных из Excel в цикле]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=69776#p69776</link>
			<description><![CDATA[<p>Добрый день!<br />Помогите решить следующую задачку.<br />1. Имеется файл excel.xlsx, содержащий 5 столбцов и переменное количество строк.<br />2. Скрипт должен взять значение из ячейки A1 и создать папку с таким именем.<br />3. В созданной папке создать файл file.txt.<br />4. Содержимое файла file.txt будет иметь формат &quot;текст A2 текст A3 текст A4 текст A5&quot;.<br />5. Вместо A2, A3, A4 и A5 подставить значения из одноименных ячеек файла excel.xlsx.<br />6. Скрипт должен считать количество строк и выполнить цикл 2-5 столько раз, сколько строк в файле excel.xlsx</p>]]></description>
			<author><![CDATA[null@example.com (NikNap)]]></author>
			<pubDate>Tue, 26 Feb 2013 16:27:11 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=69776#p69776</guid>
		</item>
	</channel>
</rss>
