Обновление макроса генератора электронных таблиц Excel Visual Basic - PullRequest
0 голосов
/ 08 января 2019

Я использую следующий макрос для разделения электронной таблицы и сохранения разделений в отдельные файлы:

    Sub DistributeRows()
    Dim wbNew As Workbook
    Dim wsData As Worksheet
    Dim wsCrit As Worksheet
    Dim wsNew As Worksheet
    Dim rngCrit As Range
    Dim LastRow As Long

    Set wsData = Worksheets("Sheet1")
    Set wsCrit = Worksheets.Add

    LastRow = wsData.Range("A" & Rows.Count).End(xlUp).Row

    wsData.Range("A1:A" & LastRow).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=wsCrit.Range("A1"), Unique:=True

    Set rngCrit = wsCrit.Range("A2")
    While rngCrit.Value <> ""
        Set wsNew = Worksheets.Add
        wsData.Range("A1:AB" & LastRow).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=rngCrit.Offset(-1).Resize(2), CopyToRange:=wsNew.Range("A1"), Unique:=True
        wsNew.Name = rngCrit
        wsNew.Copy
        Set wbNew = ActiveWorkbook
        wbNew.SaveAs "C:\Users\nahansen\Desktop\Tornstrom Reports\MMGS" & "\" & wsNew.Range("B2") & "\" & rngCrit & " - " & "December 2018"
        wbNew.Close SaveChanges:=True
        Application.DisplayAlerts = False
        wsNew.Delete
        rngCrit.EntireRow.Delete
        Set rngCrit = wsCrit.Range("A2")
    Wend

    wsCrit.Delete
    Application.DisplayAlerts = True
End Sub

Я хочу добавить некоторый код в цикл while, который будет форматировать данные в виде таблицы, например, Medium 15. Я знаю, что код должен идти в цикле перед оператором сохранения, но я не смог понять это, так как я действительно новичок в VBA, и я модифицирую макрос, который сделал кто-то другой, и мы только что использовали rote. Цель состоит в том, чтобы сделать так, чтобы нам не приходилось вручную открывать сотни файлов Excel и нажимать кнопку «Формат в виде таблицы».

Любые предложения будут великолепны.

1 Ответ

0 голосов
/ 08 января 2019

Как это:

wsNew.Name = rngCrit
wsNew.ListObjects.Add(xlSrcRange, wsNew.Range("A1").CurrentRegion, , xlYes).Name = "Table1"
wsNew.ListObjects(1).TableStyle = "TableStyleMedium15"
'etc etc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...