<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Заметки — Игорь К.: заметки с тегом макрос</title>
<link>https://blog.fossko.ru/tags/makros/</link>
<description>Блог Игоря К. о маркетинге, аналитике, фотографии и жизни...</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.4 (v4171)</generator>

<itunes:subtitle>Блог Игоря К. о маркетинге, аналитике, фотографии и жизни...</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Макрос автоматического сохранения csv из экселя</title>
<guid isPermaLink="false">541</guid>
<link>https://blog.fossko.ru/all/makros-avtomaticheskogo-sohraneniya-csv-iz-ekselya/</link>
<pubDate>Wed, 06 Dec 2023 21:26:06 +0300</pubDate>
<author></author>
<comments>https://blog.fossko.ru/all/makros-avtomaticheskogo-sohraneniya-csv-iz-ekselya/</comments>
<description>
&lt;p&gt;Есть файл состоящий из одного листа ID, нужно автоматически разделить количество строк по 10 и сохранить каждый диапазон в csv файл&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/makros-avtomaticheskogo-sohraneniya-csv-iz-ekselya.png" width="380" height="476" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Cтолбец с ID, которые нужно сохранить в отдельные файлы&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/makros-avtomaticheskogo-sohraneniya-csv-iz-ekselya-1.png" width="1111" height="389" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Делаем через макросы Разработчик — Visual basic.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/Parametry-Excel-2023-12-05-23.47.32.jpg" width="925" height="683" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Если вкладки «Разработчик» нет, ее нужно включить через настройки: Параметры — Настроить ленту — Разработчик.&lt;/div&gt;
&lt;/div&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;Sub SplitAndSave()
    Dim SourceSheet As Worksheet
    Dim NewSheet As Worksheet
    Dim LastRow As Long
    Dim Group As Long
    Dim CurrentRow As Long
    Dim Path As String
    Dim DateTimeStr As String

    &amp;#039; Укажите имя вашего исходного листа
    Set SourceSheet = ThisWorkbook.Sheets(&amp;quot;Лист1&amp;quot;)

    &amp;#039; Укажите путь для сохранения файлов
    Path = &amp;quot;E:\work\csv\&amp;quot;

    &amp;#039; Определите последнюю строку в столбце A
    LastRow = SourceSheet.Cells(SourceSheet.Rows.Count, &amp;quot;A&amp;quot;).End(xlUp).Row

    &amp;#039; Инциализируем переменные
    CurrentRow = 2 &amp;#039; Начинаем с 2, так как, вероятно, у вас есть заголовок
    Group = 1

    Do While CurrentRow &amp;lt;= LastRow
        &amp;#039; Создаем новый лист для текущей группы
        Set NewSheet = Sheets.Add(After:=Sheets(Sheets.Count))
        NewSheet.Name = &amp;quot;Group&amp;quot; &amp;amp; Group

      &amp;#039; Копируем данные текущей группы на новый лист
        SourceSheet.Rows(CurrentRow &amp;amp; &amp;quot;:&amp;quot; &amp;amp; IIf(CurrentRow + 9 &amp;lt;= LastRow, CurrentRow + 9, LastRow)).Copy Destination:=NewSheet.Rows(1)
        
        &amp;#039; Создаем переменную с текущей датой в формате год-месяц-день-часы-минуты
        DateTimeStr = Format(Now, &amp;quot;yyyy-mm-dd-hh-nn&amp;quot;)
        
    &amp;#039; Сохраняем новый лист в виде CSV файла с меткой времени
        NewSheet.SaveAs Path &amp;amp; DateTimeStr &amp;amp; &amp;quot;_&amp;quot; &amp;amp; &amp;quot;Group&amp;quot; &amp;amp; Group &amp;amp; &amp;quot;.csv&amp;quot;, xlCSV

     &amp;#039; Удаляем новый лист, если необходимо
        Application.DisplayAlerts = False
        NewSheet.Delete
        Application.DisplayAlerts = True

        &amp;#039; Переходим к следующей группе
        CurrentRow = CurrentRow + 10
        Group = Group + 1
    Loop
End Sub&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/csv-2023-12-05-23.41.26.jpg" width="746" height="399" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;В папку csv загрузились разделенные файлы&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Добавим разбиение с сохранением заголовка из ячейки A1.&lt;br /&gt;
Разбивать будем по RowsPerGroup равном 1400 значений&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;Sub SplitAndSaveWithHeaderVariable()
    Dim SourceSheet As Worksheet
    Dim NewSheet As Worksheet
    Dim LastRow As Long
    Dim Group As Long
    Dim CurrentRow As Long
    Dim Path As String
    Dim DateTimeStr As String
    Dim HeaderVariable As String
    Dim RowsPerGroup As Long

    &amp;#039; Укажите имя вашего исходного листа
    Set SourceSheet = ThisWorkbook.Sheets(&amp;quot;Лист1&amp;quot;)

    &amp;#039; Укажите путь для сохранения файлов
    Path = &amp;quot;E:\work\csv\&amp;quot;

   &amp;#039; Определите последнюю строку в столбце A
    LastRow = SourceSheet.Cells(SourceSheet.Rows.Count, &amp;quot;A&amp;quot;).End(xlUp).Row

    &amp;#039; Инициализируйте переменные
    CurrentRow = 2 &amp;#039; Начинаем с 2, предполагая, что у вас есть заголовок
    Group = 1

    &amp;#039; Установите значение переменной заголовка из ячейки A1
    HeaderVariable = SourceSheet.Cells(1, 1).Value

    &amp;#039; Установите количество строк в группе
    RowsPerGroup = 1400

    Do While CurrentRow &amp;lt;= LastRow
       &amp;#039; Создаем новый лист для текущей группы
        Set NewSheet = Sheets.Add(After:=Sheets(Sheets.Count))
        NewSheet.Name = &amp;quot;Group&amp;quot; &amp;amp; Group

       &amp;#039; Вставляем переменную заголовка в первую ячейку нового листа
        NewSheet.Cells(1, 1).Value = HeaderVariable

        &amp;#039; Копируем данные текущей группы на новый лист
        SourceSheet.Rows(CurrentRow &amp;amp; &amp;quot;:&amp;quot; &amp;amp; IIf(CurrentRow + RowsPerGroup - 1 &amp;lt;= LastRow, CurrentRow + RowsPerGroup - 1, LastRow)).Copy Destination:=NewSheet.Rows(2)

       &amp;#039; Получаем текущую дату и время в указанном формате
        DateTimeStr = Format(Now, &amp;quot;yyyy-mm-dd-hh-nn&amp;quot;)

       &amp;#039; Сохраняем новый лист в виде файла CSV с датой и временем в имени файла
        NewSheet.SaveAs Path &amp;amp; DateTimeStr &amp;amp; &amp;quot;_&amp;quot; &amp;amp; &amp;quot;Group&amp;quot; &amp;amp; Group &amp;amp; &amp;quot;.csv&amp;quot;, xlCSV

        &amp;#039; Удаляем новый лист, если необходимо
        Application.DisplayAlerts = False
        NewSheet.Delete
        Application.DisplayAlerts = True

       &amp;#039; Переходим к следующей группе
        CurrentRow = CurrentRow + RowsPerGroup
        Group = Group + 1
    Loop
End Sub&lt;/code&gt;&lt;/pre&gt;</description>
</item>


</channel>
</rss>