Excel使用PowerShell每个工作表内存使用情况

我有一个有10个工作表的Excel工作簿。 我想找出使用​​Power-Shell的每个Excel工作表使用的内存。 我试图加载Com对象,并检查属性,但没有运气!

$application = New-Object -ComObject excel.application $wb=$application.workbooks.open("C:\Model_Q.xlsx") $wb.sheets |gm 

任何想法如何做到这一点?

这可能不是你正在寻找的答案,因为它不在PowerShell中,但是我发现了一个在Excel中使用VBA的非常简单的解决scheme,并且现在看到你没有答案,这是值得的! (1)在Excel中打开工作表,按Alt + F11,右键单击工作簿,然后单击插入>模块。 (2)粘贴到下面的VBA脚本中:

 Sub WorksheetSizes() Dim xWs As Worksheet Dim Rng As Range Dim xOutWs As Worksheet Dim xOutFile As String Dim xOutName As String xOutName = "SheetSizesinBits" xOutFile = ThisWorkbook.Path & "\TempWb.xls" On Error Resume Next Application.DisplayAlerts = False Err = 0 Set xOutWs = Application.Worksheets(xOutName) If Err = 0 Then xOutWs.Delete Err = 0 End If With Application.ActiveWorkbook.Worksheets.Add(Before:=Application.Worksheets(1)) .Name = xOutName .Range("A1").Resize(1, 2).Value = Array("Worksheet Name", "Size") End With Set xOutWs = Application.Worksheets(xOutName) Application.ScreenUpdating = False xIndex = 1 For Each xWs In Application.ActiveWorkbook.Worksheets If xWs.Name <> xOutName Then xWs.Copy Application.ActiveWorkbook.SaveAs xOutFile Application.ActiveWorkbook.Close SaveChanges:=False Set Rng = xOutWs.Range("A1").Offset(xIndex, 0) Rng.Resize(1, 2).Value = Array(xWs.Name, VBA.FileLen(xOutFile)) Kill xOutFile xIndex = xIndex + 1 End If Next Application.ScreenUpdating = True Application.Application.DisplayAlerts = True End Sub 

(3)将工作簿保存为启用macros的工作簿。 (4)closures开发人员屏幕,然后按Alt + F8。 (5)select我们刚制作的macros并运行它。 这将创build一个新的工作表,并以位为单位build立每个工作表大小的表格。

祝你好运!