<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBA: Перенос данных из Excel в цикле]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=8106&amp;type=atom" />
	<updated>2013-03-01T19:30:39Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=8106</id>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69889#p69889" />
			<content type="html"><![CDATA[<p>Сорри, не заметил. Спасибо. Все работает.</p>]]></content>
			<author>
				<name><![CDATA[NikNap]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29709</uri>
			</author>
			<updated>2013-03-01T19:30:39Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69889#p69889</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69875#p69875" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2013-03-01T13:46:07Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69875#p69875</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69872#p69872" />
			<content type="html"><![CDATA[<p>Так каждая строчка в кодировке UTF-8, но сам файл в юникоде. А как сделать так, чтоб файл сохранялся в UTF-8?</p>]]></content>
			<author>
				<name><![CDATA[NikNap]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29709</uri>
			</author>
			<updated>2013-03-01T08:59:51Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69872#p69872</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69871#p69871" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2013-03-01T00:02:58Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69871#p69871</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69869#p69869" />
			<content type="html"><![CDATA[<p>alexii, скажите, пожалуйста, как сделать так, чтоб файл сохранялся в кодировке UTF-8?</p>]]></content>
			<author>
				<name><![CDATA[NikNap]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29709</uri>
			</author>
			<updated>2013-02-28T22:22:45Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69869#p69869</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69793#p69793" />
			<content type="html"><![CDATA[<p>Огромное спасибо.<br />Вариант от&nbsp; alexii работает прекрасно.<br />Вариант от dab00, к сожалению, ругается на 2-ю строку (Invalid use of Me keyword)</p>]]></content>
			<author>
				<name><![CDATA[NikNap]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29709</uri>
			</author>
			<updated>2013-02-27T08:23:54Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69793#p69793</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69791#p69791" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2013-02-27T06:17:43Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69791#p69791</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69790#p69790" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[dab00]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27085</uri>
			</author>
			<updated>2013-02-27T05:27:54Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69790#p69790</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69786#p69786" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rom5 пишет:</cite><blockquote><p>Видимо, имелось в виду - &quot;<strong>текст B1; текст C1; текст D1; текст E1</strong>&quot;, т.е. одна строка (а не колонка) -&gt; в один файл ?</p></blockquote></div><p>ДА, прошу прощения, ошибся.</p>]]></content>
			<author>
				<name><![CDATA[NikNap]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29709</uri>
			</author>
			<updated>2013-02-26T21:21:08Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69786#p69786</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69785#p69785" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Rom5]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=5724</uri>
			</author>
			<updated>2013-02-26T21:08:09Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69785#p69785</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69781#p69781" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[NikNap]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29709</uri>
			</author>
			<updated>2013-02-26T19:19:35Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69781#p69781</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69780#p69780" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2013-02-26T18:24:26Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69780#p69780</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69778#p69778" />
			<content type="html"><![CDATA[<p>Хмм.. это я не учел...<br />Хотя это не принципиально, т.к. в столбце A - наименование продукции (маркировка запчастей) и оно не должно повторяться, так что ничего страшного, если папка перезапишется.<br />А возможно дописать в название папки &quot;-1&quot;, потом &quot;-2&quot; и т.д. при повторяющихся значениях?</p>]]></content>
			<author>
				<name><![CDATA[NikNap]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29709</uri>
			</author>
			<updated>2013-02-26T17:05:42Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69778#p69778</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69777#p69777" />
			<content type="html"><![CDATA[<p>Как быть, если значения в столбце A повторятся?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2013-02-26T16:55:06Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69777#p69777</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBA: Перенос данных из Excel в цикле]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=69776#p69776" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[NikNap]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29709</uri>
			</author>
			<updated>2013-02-26T16:27:11Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=69776#p69776</id>
		</entry>
</feed>
