[Закрываются] слишком много различных форматов ячеек

17
задан Community 9 July 2018 в 18:41
поделиться

3 ответа

«Форматы ячеек» сложны. Ячейки действительно не имеют "формата". У них есть шрифт (у которого есть имя и размер), NumberFormat, Height, Width, Orientation и т. Д.

Итак, вам нужно определить, что вы подразумеваете под «форматом».

Ниже приведен код для получения имени и размера шрифта. Вы можете заменить любые атрибуты, какие захотите.

В приведенном ниже коде предполагается, что вы создали в книге рабочий лист с именем «Форматы». После запуска макроса имена и размеры шрифтов будут перечислены на этом листе.

Public Sub GetFormats()

    Dim CurrentSheet As Integer
    Dim UsedRange As Range
    Dim CurrentCell As Range
    Dim rw As Long

    Sheets("Formats").Cells.ClearContents
    rw = 1
    For CurrentSheet = 1 To Sheets.Count
        Set UsedRange = Range(Sheets(CurrentSheet).Range("A1"), Sheets(CurrentSheet).Range("A1").SpecialCells(xlLastCell))
        For Each CurrentCell In UsedRange
            FontUsed = CurrentCell.Font.Name + ":" + CStr(CurrentCell.Font.Size)
            If Sheets("Formats").Cells.Find(FontUsed) Is Nothing Then
                Sheets("Formats").Cells(rw, 1).Value = FontUsed
                rw = rw + 1
            End If
        Next
    Next CurrentSheet
End Sub
7
ответ дан 30 November 2019 в 10:16
поделиться

SpreadsheetGear для .NET объединит неуникальные форматы, которые могут помочь в вашей ситуации.

Вы можете скачать бесплатную пробную версию здесь , если хотите узнать, помогает ли она. Просто загрузите книгу в приложение «SpreadsheetGear 2009 для Windows», которое устанавливается вместе с оценочной программой, а затем сохраните книгу.

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

Другой вариант - перейти на Excel 2007, в котором ограничение на уникальные форматы ячеек увеличено с 4000 до 64 КБ.

Заявление об ограничении ответственности: мне принадлежит SpreadsheetGear LLC

1
ответ дан 30 November 2019 в 10:16
поделиться

Многие люди сталкиваются с этой проблемой.

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

Я написал утилиту для исправления файлов XL2007 OOXML, которые можно сохранить до XL2003. Вот ссылка на сообщение в блоге:

  • Требуются .Net3.5 и MS Excel 2007.
  • Исправит файлы xlsx или xlsm.
  • В сообщении есть файл ReadMe, прилагаемый к приложению.

Нет необходимости подвергать риску дальнейшее повреждение файла с помощью Open Office, как это предлагается на некоторых других форумах

6
ответ дан 30 November 2019 в 10:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: