Страницы: 1
RSS
Заполнение бланка данными из списка и сохранение отдельным файлом с заданным именем, Заполнение маркировочных листов и сохранение
 
Добрый день!

Возможно подобная тема уже была, но поиском найти ее не удалось. Если есть что-то похожее, дайте ссылку пожалуйста, допилить что-то похожее под свои нужды думаю смогу, но вот на написание с нуля не хватает знаний.
Суть такая, есть бланк маркировочного листа и есть список заказов с данными. Нужно на каждую строку списка создать отдельный файл с заполненным бланком и назвать его именем из одного из столбцов списка. Пример файла во вложении. На первом листе сам бланк, на втором список.

Заранее очень благодарен!
 
Заполнение бланков данными из таблицы
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Это я находил, но это прям совсем не то! Нужен макрос, чтоб создать 100500 файлов, по одному на каждую строку из списка. И в каждом файле должен быть бланк, заполненный данными из списка. ВПР тут точно не обойтись.
 
Код
Option Explicit

Dim aList As Variant
Dim aRow As Variant

Sub Создать_файлы()
    Init_aList
    
    Dim y As Long
    For y = 2 To UBound(aList, 1)
        RowJob y
    Next
End Sub

Private Sub RowJob(y As Long)
    FillRow y
    
    ThisWorkbook.Sheets("Бланк").Copy
    Dim wb As Workbook
    Set wb = ActiveWorkbook
    
    With wb.Sheets(1).Cells(1, 2).Resize(UBound(aRow, 1), UBound(aRow, 2))
        .Value = aRow
    End With
    
    Dim sName As String
    Dim sFull As String
    sName = aRow(1, 1)
    sName = sName & ".xlsx"
    sFull = ThisWorkbook.Path & "\" & sName
    On Error Resume Next
    Workbooks(sName).Close
    Kill sFull
    On Error GoTo 0
    
    wb.SaveAs Filename:=sFull, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    wb.Close False
End Sub

Private Function FillRow(y As Long)
    Dim x As Integer
    For x = 1 To UBound(aRow, 1)
        aRow(x, 1) = aList(y, x)
    Next
End Function

Private Sub Init_aList()
    With ThisWorkbook.Sheets("Список")
        aList = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Cells(1, 5))
    End With
    ReDim aRow(1 To UBound(aList, 2), 1 To 1)
End Sub
 
Моя благодарность не знает границ!!! Огромное спасибо!
Это именно то, что было нужно!
Страницы: 1
Наверх