Сохранение двумерного массива в файл

Функция предназначена для сохранения двумерного массива в файл формата XLS

Sub SaveArray(ByVal Arr, ByVal ColumnNames, ByVal DocName$)
    ' Получает двумерный массив Arr с данными, и массив заголовков столбцов ColumnNames.
    ' Создаёт новый файл в подпапке СФОРМИРОВАННЫЕ ДОКУМЕНТЫ с именем DocName$
    On Error Resume Next
 
    ' создаём подпапку (там же, где текущий файл Excel)
    folder$ = ThisWorkbook.Path & "\СФОРМИРОВАННЫЕ ДОКУМЕНТЫ\": MkDir folder$
 
    Application.ScreenUpdating = False
    Dim sh As Worksheet, wb As Workbook
    Set wb = Application.Workbooks.Add(xlWBATWorksheet)        ' создаём новый файл Excel
    Set sh = wb.Worksheets(1): sh.Name = DocName$
 
    ColumnsNamesCount = UBound(ColumnNames) - LBound(ColumnNames) + 1
 
    With sh.Range("a1").Resize(, ColumnsNamesCount)        ' выводим заголовки столбцов
        .Value = ColumnNames
        .Interior.ColorIndex = 15: .Font.Bold = True
        With sh.Range("a2").Resize(UBound(Arr, 1), UBound(Arr, 2))        ' и данные
            .Value = Arr
            .Borders.LineStyle = xlContinuous
        End With
        .EntireColumn.AutoFit
    End With
 
    ' сохраняем и закрываем созданный файл Excel
    Filename$ = folder$ & DocName$ & " " & Format(Now, "dd-mm-yyyy hh-nn-ss") & ".xls"
    wb.SaveAs Filename$, xlWorkbookNormal        ' формат XLS
    wb.Close False
 
    ' показываем созданный файл в папке
    CreateObject("WScript.Shell").Run "explorer.exe /e,/select,""" & Filename$ & """"
 
    Application.ScreenUpdating = True
End Sub

Пример использования:

Sub test_SaveArray()
    Arr = Range("a2:f20").Value
    Headers = Array("Штрихкод", "Наименование", "Кол-во", "Артикул", "Цена", "Поставщик")
 
    SaveArray Arr, Headers, "Склад" ' создаём из массива Arr файл Excel с именем СКЛАД
End Sub

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
  ____    _____    __                __   __  _   
| ___| |___ | / /_ _ __ ___ \ \ / / | |_
|___ \ / / | '_ \ | '_ ` _ \ \ V / | __|
___) | / / | (_) | | | | | | | | | | |_
|____/ /_/ \___/ |_| |_| |_| |_| \__|
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.