[英]Excel each worksheet memory usage using powershell
我有一個excel工作簿,有10個工作表。 我想找出使用Power-Shell的每個excel工作表使用的內存。 我試圖加載Com對象並檢查屬性,但沒有運氣!
$application = New-Object -ComObject excel.application
$wb=$application.workbooks.open("C:\Model_Q.xlsx")
$wb.sheets |gm
知道怎么做嗎?
這可能不是您正在尋找的答案,因為它不在PowerShell中,但我在Excel中找到了一個非常簡單的使用VBA的解決方案,並且因為您現在沒有答案,所以值得一試! (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)將工作簿保存為啟用宏的工作簿。 (4)關閉開發人員屏幕並按Alt + F8。 (5)選擇我們剛制作的宏並運行它。 這將創建一個新的工作表,並以位為單位構建每個工作表大小的表。
祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.