在 Windwos 10 Enterprise 上使用 Office 365 版本 2204 中的 Excel 时,我有一个大.xlsb
文件(>14MB),想确定单个工作表的大小(以 kB/MB 为单位),以便以表格形式最佳地保存此信息。
我尝试过(这两种方法的不同版本)但都没有成功
- zip 文件例如描述这里
将文件类型重命名为.zip
并查看FILENAME/xl/workbook.xml
文件FILENAME/xl/worksheets
夹不起作用:每当我期望一个.xml
-file时,我都会找到一个.bin
-file,我无法读取它,而且单个纸张尺寸的总和太高了。 - 宏例如,这里
有几种不同版本的宏,在我的情况下,它们都在使用函数测量当前文件大小的行处中断FileLen(...)
。我无法确定此错误是由于在工作中发生的.xlsb
还是达到了函数的限制。
我如何确定每个工作表的大小?
任何想法都值得赞赏。提前致谢!
答案1
文章 如何查看工作簿中每个工作表的大小 建议使用 VBA 宏进行此计算。
按住ALT+F11打开 VBA 编辑器
点击菜单插入 > 模块
将以下代码粘贴到模块窗口:
Sub WorksheetSizes() Dim xWs As Worksheet Dim Rng As Range Dim xOutWs As Worksheet Dim xOutFile As String Dim xOutName As String xOutName = "KutoolsforExcel" 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
按F5键执行此代码
一个名为“KutoolsforExcel”的新工作表将插入到当前工作簿中,其中包含每个工作表名称和文件大小(以字节为单位):