Demasiados Formatos De Células Diferentes

    Tenho um ficheiro enorme com 10 folhas recriadas a partir do zero, 12 folhas actualizadas, 5 folhas carregadas com dados brutos e 7 folhas que são usadas pelas macros para o relatório.
  1. adicionei recentemente uma nova folha e estou a correr para o problema do Excel "demasiados formatos de células diferentes" .

o que eu tentei

Eu li alguns dos resultados da pesquisa do google e eles dizem que eu deveria simplificar a formatação, mas eu nem sei como eu consegui até 4000 formatos de células diferentes, quanto mais estou a usar Quais, para poder remover algumas.

Ele também está aparecendo algumas vezes o arquivo é executado, mas não tudo, até que ele aparece, e então isso acontece sempre que ele é executado. Uma vez que a macro está fazendo tanto do trabalho, incluindo a criação das 10 folhas do zero, Eu Não tenho certeza do que fazer.

alguém sabe

  • de uma Macro eu poderia correr para obter uma lista de todos os formatos de células e quantos as células estão a usá-las?
  • de um programa em que confiam para ajudar a remover os formatos de células em excesso?
Obrigado.
Author: Community, 2010-03-15

15 answers

Os "formatos de células" são complicados. As células não têm realmente um "formato". Eles têm uma fonte (que por si só tem um nome e um tamanho), um número Format, Altura, Largura, orientação, etc.

Então você precisa definir o que você quer dizer com "formato".

Abaixo está o código para obter o nome e o tamanho da fonte. Podes substituir os atributos que quiseres.

O código abaixo assume que você criou uma planilha chamada "formatos" no livro de trabalho. Depois de executar a macro, os nomes dos tipos de letra e os tamanhos será listado nessa ficha de trabalho.

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
Author: Mike Lewis, 2014-06-16 15:07:52
O problema que descreve fez com que eu (e um colega de trabalho) perdesse muitas horas de produtividade ao usar o Excel 2010. O seguinte VBA code / macro me ajudou a drop A.XLSM file from using 3540 styles down to 34.
' Description:
'    Borrowed largely from http://www.jkp-ads.com/Articles/styles06.asp

Option Explicit

' Description:
'    This is the "driver" for the entire module.
Public Sub DropUnusedStyles()

    Dim styleObj As Style
    Dim rngCell As Range
    Dim wb As Workbook
    Dim wsh As Worksheet
    Dim str As String
    Dim iStyleCount As Long
    Dim dict As New Scripting.Dictionary    ' <- from Tools / References... / "Microsoft Scripting Runtime"

    ' wb := workbook of interest.  Choose one of the following
    ' Set wb = ThisWorkbook ' choose this module's workbook
    Set wb = ActiveWorkbook ' the active workbook in excel


    Debug.Print "BEGINNING # of styles in workbook: " & wb.Styles.Count
    MsgBox "BEGINNING # of styles in workbook: " & wb.Styles.Count

    ' dict := list of styles
    For Each styleObj In wb.Styles
        str = styleObj.NameLocal
        iStyleCount = iStyleCount + 1
        Call dict.Add(str, 0)    ' First time:  adds keys
    Next styleObj
    Debug.Print "  dictionary now has " & dict.Count & " entries."
    ' Status, dictionary has styles (key) which are known to workbook


    ' Traverse each visible worksheet and increment count each style occurrence
    For Each wsh In wb.Worksheets
        If wsh.Visible Then
            For Each rngCell In wsh.UsedRange.Cells
                str = rngCell.Style
                dict.Item(str) = dict.Item(str) + 1     ' This time:  counts occurrences
            Next rngCell
        End If
    Next wsh
    ' Status, dictionary styles (key) has cell occurrence count (item)


    ' Try to delete unused styles
    Dim aKey As Variant
    On Error Resume Next    ' wb.Styles(aKey).Delete may throw error

    For Each aKey In dict.Keys

        ' display count & stylename
        '    e.g. "24   Normal"
        Debug.Print dict.Item(aKey) & vbTab & aKey

        If dict.Item(aKey) = 0 Then
            ' Occurrence count (Item) indicates this style is not used
            Call wb.Styles(aKey).Delete
            If Err.Number <> 0 Then
                Debug.Print vbTab & "^-- failed to delete"
                Err.Clear
            End If
            Call dict.Remove(aKey)
        End If

    Next aKey

    Debug.Print "ENDING # of style in workbook: " & wb.Styles.Count
    MsgBox "ENDING # of style in workbook: " & wb.Styles.Count

End Sub
 44
Author: Chuck The Nerd, 2013-12-04 17:54:48
Muitas pessoas parecem encontrar-se com este problema.

Na maioria das vezes a questão é: relacionado com o número excessivo de estilos não utilizados e frequentemente corrompidos e não tanto a contagem total do formato celular único combos.

Escrevi um utilitário para corrigir ficheiros OOXML XL2007 que podem ser gravados para XL2003. Aqui está o link para o post no blog:

  • requer. Net3. 5 e MS Excel 2007.
  • irá corrigir ficheiros xlsx ou xlsm.
  • a post tem um arquivo ReadMe para ir com o aplicativo.
Não há necessidade de correr o risco de corromper ainda mais o seu ficheiro usando o Open Office like it is suggested on some other forums
 6
Author: XLGeek, 2014-11-01 10:19:51

Os erros que levam a mensagem de erro "demasiados formatos de células" no Excel 2007+ foram abordados: http://sergeig888.wordpress.com/2011/05/06/msft-released-hot-fix-for-excel-2007-custom-styles-duplication/ Note que as correções de bugs não irão remover a corrupção de arquivos pré-existente relacionada com estilos. Open XML based tools (available for free) are the only option that can remove elements inacessible to the Excel object model based tools: e.g., bad styles that disguised themselves as embutido, estilos escondidos, etc... Limpeza baseada em XML aberta significa 100% estilos relacionados com arquivos livres de corrupção.

 2
Author: XLGeek, 2011-11-29 03:56:45

Eu tive este problema, encontrei a maneira mais fácil de limpar foi usando este Excel adicionar em . Parece ser a resposta "oficial" da página da Microsoft sobre o problema.

Para pessoas que estão tão confusas como eu estava a usar .arquivos xlam, depois de baixá-lo você faz isso no Excel:
  1. Carregue em Ficheiro
  2. sob a opção Gerir carregue em ir.
  3. na janela de Add-ins carregue em navegar, navegue até ao local onde o XLAM o ficheiro é gravado, realce-o e carregue em Ok.
  4. active o novo add-in na janela de Add-ins e carregue em Ok.
  5. na sua barra de fitas de ecrã pessoal deve existir agora uma secção" remover estilos", que consiste num botão que mostra o número de estilos no livro de trabalho (provavelmente milhares se estiver a ter este problema).
  6. carregue no botão da fita e irá eliminar todos os formatos duplicados.
Se não o vires, vê se aparece na fita. correctamente. Carregue com o botão direito na fita e diga "personalizar a fita". Em seguida, clique em Add-Ins. Sob os Add-ins activos da aplicação, deverá ver "remover os estilos Extra".
 2
Author: Alex S, 2015-10-02 16:23:34

A folha de cálculo para o. NET irá reunir formatos não únicos que poderão ajudar com a sua situação.

Pode baixar o teste gratuito aqui Se quiser ver se ajuda. Basta carregar o livro de trabalho na aplicação "SpreadsheetGear 2009 for Windows", que é instalado com o software de Avaliação e, em seguida, salvar o livro de trabalho.

Se você realmente tem tantos formatos únicos, você terá que simplificar. Cada combinação única da cor do tipo de letra / da célula (Interior), formato de número, alinhamento horizontal e vertical, fronteiras, nível de indentação, e provavelmente algumas coisas que eu não estou pensando causarão uma entrada única na tabela.

Outra opção é mudar para o Excel 2007, que tem o limite de formatos de células únicos aumentou de 4.000 para 64K.

Declaração de exoneração de Responsabilidade: sou o proprietário da folha de cálculo LLC

 1
Author: Joe Erickson, 2010-03-15 20:45:25
Já vi este problema antes. É possível recriar para provar o que estou a dizer. É um pouco de um catch 22, Mas quando você tem uma folha que tem o problema de 'muitos formatos', abrir uma folha nova e copiar uma célula da folha de muitos formatos e simplesmente colá-lo no novo livro de trabalho. Este livro de trabalho será agora 'infectado' como foi e também terá o erro de muitos formatos. Parece que muitos dos dados de formato vem com essa pasta, a menos que você usa uma pasta especial para restringi-la. Como melhorar as coisas? Bem, uma solução é usar a função Save como HTML. Tem paciência comigo, embora isto funcione. Estou falando de 2003 aqui, eu não sei o que acontece em 2007, talvez este bug tenha sido corrigido. Entao ... Gravar como Html e fechar o excel. Carregue uma nova sessão e carregue isto para se certificar de que você não executa nenhuma macros e depois carrega a gravação como uma folha de cálculo.

Quando fechar e reabrir esta nova folha de cálculo os teus muitos formatos devem ter desaparecido.

 1
Author: FinancialRadDeveloper, 2010-11-19 18:12:54

Uma solução pode ser usar ASAP utilities. Na secção da folha existe uma opção remove all unused styles. Então você tem que fechar o manual e reabrir, eu acho.

 1
Author: Barbara Wiseman, 2014-06-16 14:46:45

Isto irá apagar todos os estilos, excepto os estilos predefinidos (normal, explicativo, 20% Accent1 etc.). Incluindo estilos que o usuário criou, mas é uma maneira rápida e suja de limpar um livro de trabalho:


Sub NewNukeStyles()
Dim tempstyle As Style

For Each tempstyle In ActiveWorkbook.Styles

 If tempstyle.BuiltIn = False Then
    If tempstyle.Locked = True Then 'not sure what this is
       tempstyle.Delete
    End If
End If

Next tempstyle

End Sub 'NukeStyles
Adorava saber qual é o estilo.a propriedade bloqueada refere-se realmente a outro que não "um valor booleano que indica se o objeto está bloqueado".
 1
Author: LeasMaps, 2016-06-23 03:18:07

Se puder abrir o ficheiro tente > editar > limpar > formatos.

Destaque a folha antes de bater os formatos que funcionou para mim.

Certifique-se de que faz uma cópia do EXCEL antes de fazer isto apenas incase algo está faltando você pode cruzar ref contra o documento antigo.

 0
Author: Zach Shaw, 2013-02-25 12:13:17
É um bug no Excel que atormenta todas as versões lançadas.

O problema pode ser corrigido usando esta ferramenta.

Funciona com XLS e XLSX ficheiros.

 -1
Author: ztef, 2012-11-07 21:25:43

Eu sei que acima há alguns métodos interessantes para resolver este erro.

Mas eu faria um resumo de alguns truques básicos para corrigir muitos erros de formato de células, mas eu acho que é muito eficaz especialmente para novos bies.

  1. copiar a folha de trabalho para um novo ficheiro-é eficaz mas leva o tempo
  2. apagar intervalos que você não sabe o que eles são
  3. volte a formatar as folhas de cálculo para que tenha o formato mimimum definido
  4. limpar todo o formato
Espero que gostes. estas dicas básicas

Os meus detalhes postam sobre o erro Como corrigir demasiados formatos de células diferentes

 -1
Author: AzExcel, 2016-02-29 08:33:06
Usei praticamente todas as respostas aqui, mas a mensagem de erro ficou.

Depois de ler esta página de suporte da microsoft ( https://support.microsoft.com/en-us/kb/213904 vim para XLStylesTool.exe .

Mas, mais uma vez, sem sorte (porque eu o usei erradamente).

Tenho o windows sete, por isso a versão 8/10 do windows não funciona.

Eu li Os comentários da página de download (porque não está escrito nos infos de download) aqui https://sergeig888.wordpress.com/2011/03/21/net4-0-version-of-the-xlstylestool-is-now-available/

Descobri que preciso da versão.NET4. 0 para fazer com que funcione sob o win7 (aqueles bonecos não podem simplesmente chamar-lhe Versão win7 ???)

Ligação de transferência: https://skydrive.live.com/redir?resid=53E1D37F76F69444!900&authkey=!AH5oeGVaWlMsFHA&ithint=file%2c.zip

O meu próximo problema era que não funciona em *.XLS, então abri o excel e salvei como *.XLSM, wich obra.

Depois disso, basta clicar em 'Get Excel File', e' Process File '(eu verifiquei' commit changes and open in excel', e no excel' save as''*.xls. Fechar o excel, reabrir o arquivo, funciona (sem aviso de anoying) !!!

 -1
Author: Patrick Lepelletier, 2016-06-01 10:11:38

Se isso lhe der um erro "demasiados formatos de células", então salve o documento imediatamente. Mude o nome do documento para outro nome Por enquanto. Abra o documento e, em seguida, salve-o com o mesmo nome que você queria antes. Agora feche o documento e abra-o, ele não iria mostrar mais esse erro. Às vezes também desaparece com um simples salvamento, mas é um pouco estranho para mim!

 -2
Author: user2132914, 2013-03-04 18:13:07

Uma solução simples no caso de ser um pequeno ficheiro:

Copia tudo e cola-o em palavras. Ele irá detectar o conteúdo como tabelas. Em seguida, seleccione Todas as colunas (NÃO a tabela completa através do sinal cruz no canto superior esquerdo) e passe-a para um novo .XLS sheet e você terá apenas os valores claros.
 -2
Author: MJK, 2014-06-16 14:49:08