«Форматы ячеек» сложны. Ячейки действительно не имеют "формата". У них есть шрифт (у которого есть имя и размер), 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
SpreadsheetGear для .NET объединит неуникальные форматы, которые могут помочь в вашей ситуации.
Вы можете скачать бесплатную пробную версию здесь , если хотите узнать, помогает ли она. Просто загрузите книгу в приложение «SpreadsheetGear 2009 для Windows», которое устанавливается вместе с оценочной программой, а затем сохраните книгу.
Если у вас действительно так много уникальных форматов, вам придется упростить. Каждая уникальная комбинация цвета шрифта / ячейки (внутренний), числового формата, горизонтального и вертикального выравнивания, границ, уровня отступа и, вероятно, некоторых вещей, о которых я не думаю, вызовет уникальную запись в таблице.
Другой вариант - перейти на Excel 2007, в котором ограничение на уникальные форматы ячеек увеличено с 4000 до 64 КБ.
Заявление об ограничении ответственности: мне принадлежит SpreadsheetGear LLC
Многие люди сталкиваются с этой проблемой.
Чаще всего проблема связана с чрезмерным количеством неиспользуемых и часто поврежденных стилей , а не столько с общим количеством комбинаций уникальных форматов ячеек.
Я написал утилиту для исправления файлов XL2007 OOXML, которые можно сохранить до XL2003. Вот ссылка на сообщение в блоге:
Нет необходимости подвергать риску дальнейшее повреждение файла с помощью Open Office, как это предлагается на некоторых других форумах