VBA,多个wooksheets /工作簿的计算

我有以下macros:

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 

我如何在工作簿中的多个工作表中应用此function? 或多个工作簿的多个工作簿? 我有一个macros来打开我的目录中的所有Excel文件。 更好的是,如果我可以绕过打开所有的Excel文件。

几乎想要在大量的文件/表单中自动化这个macros。

任何帮助,将不胜感激。

如果不打开所有的工作簿,就无法计算,但是您正在寻找的是一个简单的命令: Application.CalculateFull 。 它将重新计算所有打开的工作簿中的所有工作表。 请注意,这可能需要很长时间,可能会使Excel看起来没有响应,直到完成。 另外,如果打开的工作表在Excel中与上面的macros不同,它们将不会计算。

所以我会想象你的过程如下所示:

  • 运行你的macros来打开所有的文件
  • .Calculation = xlCalculationAutomatic之后使用.Calculation = xlCalculationAutomatic运行您的macros,并在End WithEnd Sub