Определить вес листа в excel

 

Файл Excel содержит много листов, файл большой.
Как можно узнать размер (удельный вес, вклад) каждого листа в общий размер файла?
Нужно, что бы вычислить самые тяжелые листы.

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Есть такой вариант:
Копируем книгу-считываем её размер в байтах.
Далее начинаем удалять по одному листу. После каждого удаления сохраняем книгу и считываем её размер в байтах. Дальше ясно — из предыдущего размера вычитаем текущий. Хотя бы примерно получите.
Возможно, будет некий остаток — это возможное наличие в книге именованных формул.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Doober

Пользователь

Сообщений: 2204
Регистрация: 09.04.2013

Можно и помучиться

файлы офиса 2007 и старше.
Распаковали архиватором
идем в папку xl
xlworkbook.xml получаем имя листа и ID
идем в папку xl_rels
xl_relsworkbook.xml по ID получаем имя файла в папке xlworksheets
В папке xlworksheets ищем листы,меряем их размер
sheet1.xml
sheet2.xml
…….

 

The_Prist, это вариант. Но если листов >100 и некоторые из них скрыты то это напряжно.
Может быть есть какая то надстройка для этого?

Doober, спасибо. Это очень помогло.

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Я имел ввиду кодом. Надстройки подобной не видал. Если будет время — позже выложу примерный код.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Если в листе есть код, удаление листа может порушить программу.
Можно наоборот копировать лист (в новую книгу), сохранять его в %temp% и измерять размер файла.

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Алексей, тоже бяка может получиться если есть ссылки внутри листа на другие листы…Тогда вес будет неверным, т.к. ссылки на другую книгу тяжелее. Тоже сначала подумал именно про копирование, но решил, что вряд ли чего порушится, если удалять именно в копии книги — запрет на события и сообщения — и не думаю, что будут проблемы. Замеры-то будем делать из другого файла.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#8

20.03.2014 21:25:16

ну вот что-то вроде того(не претендую на оригинальность и окончательную достоверность, а так же оптимальность):

Код
Sub GetShLen()
    Dim wbWork As Workbook
    Dim sTmpPath As String, sWorkFileName As String
    Dim wsSh, li As Long
    Dim dblLen As Double, dblShLen2 As Double, dblShLen As Double
    Dim avResLen()

    sTmpPath = "C:" 'Environ("temp")
    If Right(sTmpPath, 1) <> "" Then sTmpPath = sTmpPath & ""

    sWorkFileName = sTmpPath & "templen_" & ActiveWorkbook.Name
    
    With Application
        .ScreenUpdating = 0
        .DisplayAlerts = 0
        .EnableEvents = 0
        .Calculation = xlCalculationManual
    End With
    ActiveWorkbook.SaveCopyAs sWorkFileName
    dblLen = FileLen(sWorkFileName)
    Set wbWork = Workbooks.Open(sWorkFileName, False)
    ReDim avResLen(1 To wbWork.Sheets.Count)
    wbWork.Sheets.Add wbWork.Sheets(1)
    For li = wbWork.Sheets.Count To 2 Step -1
        wbWork.Sheets(li).Delete
        wbWork.Save
        dblShLen2 = FileLen(sWorkFileName)
        dblShLen = dblLen - dblShLen2
        avResLen(li - 1) = dblShLen
        dblLen = dblShLen2
    Next li
    wbWork.Close 0
    Kill sWorkFileName
    
    Debug.Print "Размеры листов файла " & ActiveWorkbook.Name & ":"
    For li = UBound(avResLen) To LBound(avResLen) Step -1
        Debug.Print "Лист №" & li & " - " & avResLen(li) & " b"
    Next li
    
    With Application
        .ScreenUpdating = 1
        .DisplayAlerts = 1
        .EnableEvents = 1
        .Calculation = xlCalculationAutomatic
    End With
End Sub

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

andrei-lupasco@yandex.ru

Пользователь

Сообщений: 1
Регистрация: 11.06.2019

#9

11.06.2019 18:59:20

Цитата
Doober написал:
файлы офиса 2007 и старше.Распаковали архиваторомидем в папку xl xlworkbook.xml получаем имя листа и IDидем в папку xl_rels xl_relsworkbook.xml по ID получаем имя файла в папке xlworksheetsВ папке xlworksheets ищем листы,меряем их размерsheet1.xmlsheet2.xml

Спасибо!

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#10

11.06.2019 19:06:11

andrei-lupasco@yandex.ru, ознакомьтесь с правилами, после этого зайдите в свой профиль и поменяйте отображаемое имя (логин).
И ещё запомните: кнопка цитирования не для ответа!

16.04.2023, 15:33

Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.


Главное меню

Главное меню

  • Начало

  • Статьи по Excel

  • Мы ВКонтакте

  • Поиск

  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Microsoft Excel

  • Как узнать размер (удельный вес, вклад) отдельных листов в файле

Как узнать размер (удельный вес, вклад) отдельных листов в файле

Автор Sergey Skripay, 20.03.2014, 18:39

« назад — далее »

Печать

Вниз
Страницы1

Действия пользователя


Sergey Skripay

  • **
  • Пользователь
  • Сообщения: 43
  • Записан

Как узнать размер (удельный вес, вклад) отдельных листов в файле




20.03.2014, 18:39


Файл Excel содержит много листов, файл большой.
Как можно узнать размер (удельный вес, вклад) каждого листа в общий размер файла?
Нужно, что бы вычислить самые тяжелые листы.

NULL



gling

  • ***
  • Постоялец
  • Сообщения: 149
  • Расположение: Мордовия г. Рузаевка
  • Карма: 12
  • Записан

Re: Как узнать размер (удельный вес, вклад) отдельных листов в файле

#1




20.03.2014, 23:17


Создайте копию документа и удаляйте по одному листу с сохранением файла. После закрытия смотрите на сколько похудел. Так и определите самые тяжелые листы.

mail: vovik100661@gmail.com;
ЯД-41001506838083.



Prist

  • ****
  • Старожил
  • Сообщения: 736
  • Errare humanum est, stultum est in errore persever
  • Карма: 101
  • Записан

Re: Как узнать размер (удельный вес, вклад) отдельных листов в файле

#2




21.03.2014, 14:36


Здесь кросс и ответы: http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=55835

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453


Печать

Вверх
Страницы1

Действия пользователя

  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Microsoft Excel

  • Как узнать размер (удельный вес, вклад) отдельных листов в файле

Действия пользователя

Печать

Top.Mail.Ru

Яндекс.Метрика

Как проверить размер каждого рабочего листа книги?

Предположим, у вас есть большая книга, содержащая несколько листов, и теперь вы хотите узнать размер каждого листа, чтобы определить, какой лист нужно уменьшить. Есть ли какие-нибудь быстрые способы справиться с этой задачей?

Проверьте размер каждого рабочего листа с помощью кода VBA

Проверьте размер каждого рабочего листа с помощью Kutools for Excel


стрелка синий правый пузырь Проверьте размер каждого рабочего листа с помощью кода VBA

С помощью следующего кода VBA вы можете быстро получить размер каждого рабочего листа в своей книге. Пожалуйста, сделайте так:

1. Удерживайте ALT + F11 ключи, и он открывает Окно Microsoft Visual Basic для приложений.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: проверьте размер каждого листа в книге </ p>

Sub WorksheetSizes()
'Update 20140526
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

3. Затем нажмите F5 ключ для выполнения этого кода и новый рабочий лист с именем KutoolsforExcel будет вставлен в текущую книгу, которая содержит имя каждого рабочего листа и размер файла, а единицей измерения является бит. Смотрите скриншот:

документ-чек-лист-размер1


стрелка синий правый пузырь Проверьте размер каждого рабочего листа с помощью Kutools for Excel

Если у вас есть Kutools for Excel, С его Разделить книгу утилиту, вы можете разделить всю книгу на отдельные файлы, а затем перейти в конкретную папку, чтобы проверить размер каждого файла.

Kutools for Excel включает более 300 удобных инструментов Excel. Бесплатная пробная версия без ограничений в течение 30 дней. Получить сейчас.

После установки Kutools for Excel, выполните следующие действия:

1. Откройте книгу, в которой вы хотите проверить размер каждого листа, и нажмите Предприятие > Рабочие инструменты > Разделить книгу, см. снимок экрана:

документ-чек-лист-размер1

2. В Разделить книгу диалоговое окно, проверьте все рабочие листы и нажмите Трещина кнопку, а затем укажите папку для размещения файлов новой книги. Смотрите скриншоты:

3. И затем каждый рабочий лист вашей текущей книги будет сохранен как отдельный файл Excel, вы можете перейти в свою конкретную папку, чтобы проверить размер каждой книги.

документ-чек-лист-размер1

Чтобы узнать больше об этой функции разделенной книги.


Статьи по теме:

Как разделить книгу на отдельные файлы Excel в Excel?

Как экспортировать и сохранять листы и рабочие листы как новую книгу в Excel?


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (9)


Оценок пока нет. Оцените первым!

47 NB xlsx файл очень редко, если он не имеет много изображений в нем. Если у вас нет, шанс велик, что у вас есть один из тех экспортированных файлов, которые пошли не так.

в основном, что происходит в том, что, когда файл xlsx экспортируется, открывается с excel, а затем сохраняется снова, он сохраняет файл с большим количеством пустых строк и столбцов. Вы можете определить это, видя огромные полосы прокрутки (например: scrollknob крошечный).

чтобы избежать этого, сделайте выбор из сначала пустой столбец полностью тоже последний (используя ячейки заголовка, не выбирая отдельные ячейки), затем на заголовке щелкните правой кнопкой мыши и выберите Удалить. Сделайте то же самое для строк (которых много!!!), а затем сохраните файл.

Excell должен теперь сохранить файл, и если это было проблемой, он будет идти от 47 МБ до, может быть, 2 Мб.

Dim dPageWidth As Double
Dim dPageWidthWithoutMargins As Double
dPageWidth = Application.CentimetersToPoints _
(Switch(ActiveSheet.PageSetup.PaperSize = xlPaperA4, 210, _
ActiveSheet.PageSetup.PaperSize = xlPaperA5, 148) / 10)

dPageWidthWithoutMargins = _
dPageWidth — (ActiveSheet.PageSetup.LeftMargin + ActiveSheet.PageSetup.RightMargin)

Dim dPageWidth As Double
Dim dPageWidthWithoutMargins As Double
dPageWidth = Application.CentimetersToPoints _
(Switch(ActiveSheet.PageSetup.PaperSize = xlPaperA4, 210, _
ActiveSheet.PageSetup.PaperSize = xlPaperA5, 148) / 10)

dPageWidthWithoutMargins = _
dPageWidth — (ActiveSheet.PageSetup.LeftMargin + ActiveSheet.PageSetup.RightMargin)

но . тогда остаются еще неудобства.
1. Надо перечислять все возможные константы с указанием их размеров
2. Еще есть константа (не помню точно как называется), когда тип не стандартный, а пользовательский. Тогда с таким подходом вообще ж. получается.
Так что надо знать ширину в любом случае.

что косается не стандартного то об этом не беспокойся
я проверил пользователь не может вводить свой тип листа
в ворде есть такие параметры
.PageWidth = CentimetersToPoints(36)
.PageHeight = CentimetersToPoints(25)
а в экселе вроде нет и не дает менять програмно без использования констант

а правая граница — это последний столбец в котором есть данные
в результате ваша автофигура будет всегда равна ширене таблицы

а последний ЗАПОЛНЕННЫЙ столбец

‘только тут все равно придется на форматы завязываться

Dim dPageWidth As Double ‘ искомая ширина листа
Dim tempWidth As Double ‘ временная переменная

Как узнать размер листа в Excel?

есть таблица на листе..
как узнать сколько столбцов до первого пустого столбца.. и соответственно строк — до первой пустой строки

но например в первой строке заполнено 6 столбцов, а во второй — 10

т.е. вот абстрактный пример:

пусть знак решетки — это заполненные ячейки таблицы

есть какие-нибудь стандартные функции?

Добавлено через 1 минуту
криво пример вставился

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как узнать имя активного листа в Excel-е?
И еще вопрос до кучи. Как узнать имя активного листа в Excel-е?

Как узнать Item листа в книге Excel
есть большая книга (листов больше 1000) Не ругайте — так удобнее мне для своих целей Name листов.

Как узнать точную высоту листа в Excel?
Суммирование всех ячеек до первого HPageBreak не подходит.

Как сделать размер листа А6 в Excel (из Delphi)
Здравствуйте! Как сделать размер листа А6 в экселе, подскажите пожалуйста

а я пробую ручками проверять, у меня просто стрелкой переходи вправа или вниз, на одну ячейку

Добавлено через 1 минуту
да и код не хочет выполняться, ругается на ошибки

код не хочет работать((

Добавлено через 33 секунды
у меня 10 офис, может в этом проблема?

Сообщение от alucard_mk

Чтобы увидеть результат: ViewImmediate Window.

Но чтобы информация была достоверная, сначала надо сохранить книгу (это связано с тем, что после удаления текста, где-то сохраняется информация в Excel о количестве строк и столбцов до удаления). После сохранения книги — эта информация уходит.

Преимущество этого способа в том, что определяется последняя строка или столбец, даже если хотя бы одна ячейка заполнена в строке или столбце.

Понравилась статья? Поделить с друзьями:
  • Определить буква или цифра excel
  • Определить pdf в word
  • Определить npv в excel
  • Определитель матрицы 4 порядка в excel
  • Определитель в excel это