2016-07-01 6 views
1

私は10のワークシートを持つExcelワークブックを持っています。 Power-Shellを使用して各Excelワークシートで使用されているメモリを調べたいと思います。 Comオブジェクトをロードしようとしましたが、プロパティはチェックされましたが運はありませんでした。powershellを使用して各ワークシートのメモリ使用量をExcelします

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

どうすればいいですか?

答えて

0

これは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)作成したマクロを選択して実行します。 これは新しいワークシートを作成し、各ワークシートのサイズのテーブルをビット単位で作成します。

幸運を祈る!

+0

答えをありがとう。 PowerShellで使うことができる方法はありますか? – user2181349

関連する問題