Maartenは、ワークブック内の各ワークシートのサイズを確認する方法があるかどうか疑問に思います。彼はほぼ100のワークシートを含むワークブックを持っており、ワークブックファイルのサイズを縮小したいと考えています。しかし、彼はどのワークシートが最大のサイズであるかを知りません。

個々のワークシートの「サイズ」を把握することは、主に「サイズ」の意味に依存します。使用するセルの数を意味しますか?使用される列と行?ワークシートにはどのくらいのテキストが保存されていますか?メトリックのリストは継続する可能性があります。

問題は、これらのような質問がマークを見逃していることです。ワークシートには、非常に多くのアイテムを保存できます。たとえば、コメント、数式、テキスト、グラフ、サウンドファイル、およびその他のアイテムをいくつでも含めることができます。 1つのグラフはセル数の点で別のグラフよりも大きい場合がありますが、もう1つのグラフはオブジェクト(グラフやピボットテーブルなど)の点で大きい場合があります。

ワークシートの相対的なサイズを比較する唯一の実際の方法は、各ワークシートを独自のワークブックに保存してから、結果の各ワークブックのサイズを調べることです。ワークブックを保存するという行為は、保存されたファイルに追加のオーバーヘッドをもたらすため、これは明らかに個々のワークシートの大きさを正確に答えることはできません。ただし、各ワークシートを同じ方法で保存すると、各ワークシートのオーバーヘッドは同等になるため、互いに比較してどちらが大きいかを確認できます。

次のマクロは、作成された各ワークブックのサイズを記録するために、現在のワークブックにワークシートを追加します。次に、各ワークシートをステップ実行して、個別のワークブックに保存します。次に、ワークブックのサイズが決定され、記録され、新しいワークブックが削除されます。

Sub WorksheetSizes()

Dim wks As Worksheet     Dim c As Range     Dim sFullFile As String     Dim sReport As String     Dim sWBName As String

sReport = "Size Report"

sWBName = "Erase Me.xls"

sFullFile = ThisWorkbook.Path & _       Application.PathSeparator & sWBName

' Add new worksheet to record sizes     On Error Resume Next     Set wks = Worksheets(sReport)

If wks Is Nothing Then         With ThisWorkbook.Worksheets.Add(Before:=Worksheets(1))

.Name = sReport             .Range("A1").Value = "Worksheet Name"

.Range("B1").Value = "Approximate Size"

End With     End If     On Error GoTo 0     With ThisWorkbook.Worksheets(sReport)

.Select         .Range("A1").CurrentRegion.Offset(1, 0).ClearContents         Set c = .Range("A2")

End With

Application.ScreenUpdating = False     ' Loop through worksheets     For Each wks In ActiveWorkbook.Worksheets         If wks.Name <> sReport Then             wks.Copy             Application.DisplayAlerts = False             ActiveWorkbook.SaveAs sFullFile             ActiveWorkbook.Close SaveChanges:=False             Application.DisplayAlerts = True             c.Offset(0, 0).Value = wks.Name             c.Offset(0, 1).Value = FileLen(sFullFile)

Set c = c.Offset(1, 0)

Kill sFullFile         End If     Next wks     Application.ScreenUpdating = True End Sub

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11113)は、Microsoft Excel 2007および2010に適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ excel-Finding_the_Size_of_Individual_Worksheets [個々のワークシートのサイズを見つける]