更新Excel Visual Basic电子表格生成器宏

时间:2019-01-08 19:32:09

标签: excel vba

我使用以下宏拆分电子表格并将拆分保存到单个文件中

    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循环中添加一些代码,以将数据格式化为表,例如中号15。我知道代码必须在save语句之前进入循环,但是我无法弄清楚了,因为我真的是VBA的新手,并且我正在修改其他人创建的宏,而我们刚刚使用了死记硬背。我们的目标是做到这一点,这样我们就不必手动打开数百个excel文件并单击“表格格式”按钮。

任何建议都会很棒。

1 个答案:

答案 0 :(得分:0)

赞:

wsNew.Name = rngCrit
wsNew.ListObjects.Add(xlSrcRange, wsNew.Range("A1").CurrentRegion, , xlYes).Name = "Table1"
wsNew.ListObjects(1).TableStyle = "TableStyleMedium15"
'etc etc