如何确定 .xlsb 文件中每个工作表的大小?

如何确定 .xlsb 文件中每个工作表的大小?

在 Windwos 10 Enterprise 上使用 Office 365 版本 2204 中的 Excel 时,我有一个大.xlsb文件(>14MB),想确定单个工作表的大小(以 kB/MB 为单位),以便以表格形式最佳地保存此信息。

我尝试过(这两种方法的不同版本)但都没有成功

  1. zip 文件例如描述这里
    将文件类型重命名为.zip并查看FILENAME/xl/workbook.xml文件 FILENAME/xl/worksheets夹不起作用:每当我期望一个.xml-file时,我都会找到一个.bin-file,我无法读取它,而且单个纸张尺寸的总和太高了。
  2. 例如,这里
    有几种不同版本的宏,在我的情况下,它们都在使用函数测量当前文件大小的行处中断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”的新工作表将插入到当前工作簿中,其中包含每个工作表名称和文件大小(以字节为单位):

    在此处输入图片描述

相关内容