VBA,计算多个工作表/工作簿

时间:2015-07-22 21:24:36

标签: excel vba excel-vba

我有以下宏:

Sub PercentCalc()

Dim xrng As Range, lrw As Long, lrng As Range, i As Long

With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With

For i = 1 To 25
    With Columns(i)
        .TextToColumns Destination:=.Cells(1, 1), DataType:=xlDelimited, TrailingMinusNumbers:=True
    End With
Next

lrw = Columns("A:Y").Find("*", , xlValues, , xlRows, xlPrevious).Row
Set lrng = Range("A" & lrw + 2)

With Range("A2:A" & lrw)
    lrng.Formula = "=COUNTA(" & .Address(0, 0) & ")/ROWS(" & .Address(0, 0) & ")"
End With

Set xrng = Range(lrng, Cells(lrng.Row, "Y"))

lrng.AutoFill xrng, Type:=xlFillDefault
xrng.Style = "Percent"

With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
End With 
End Sub

如何在工作簿中的多个工作表中应用此功能?或者多个工作表有多个工作表?我有一个宏来打开我的目录中的所有Excel文件。如果我可以绕过打开所有Excel文件,那就更好了。

非常想在大量文件/工作表中自动化这个宏。

1 个答案:

答案 0 :(得分:1)

如果不打开所有工作簿,就无法计算,但有一个简单的命令可以查找您要查找的内容:Application.CalculateFull。它会重新计算所有打开的工作簿中的所有工作表。请注意,这可能需要很长时间,并且可能会使Excel看起来没有响应,直到它完成。此外,如果打开的工作表与上面的宏处于不同的Excel实例中,则无法计算。

所以我想你的过程看起来像这样:

  • 运行宏以打开所有文件
  • .CalculateFull之后.Calculation = xlCalculationAutomaticEnd With
  • 之后,使用End Sub运行上方的宏