簡體   English   中英

使用PowerShell Excel每個工作表內存使用情況

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM