Base de dados de conhecimento KB0156

Não consigo copiar dados para a planilha do think-cell ou o formato é perdido

Sintomas

Você tem dados em uma pasta de trabalho do Excel (.xlsx) e deseja copiá-los/colá-los na planilha de dados interna de um think-cell chart. Quando você cola os dados, observa um dos seguintes problemas:

  • Você recebe uma mensagem: O Microsoft Excel não pode colar os dados.
  • Somente são coladas células vazias.
  • O seu formato de data ou número foi perdido, como por exemplo, 1/1/2012 transforma-se em 40909 ou $3,5 transforma-se em 3,5.
  • Depois de colar, os valores de porcentagem são exibidos incorretamente. Em gráficos de 100%, o layout do gráfico pode mudar.
  • As cores da célula não aparecem no gráfico, embora você tenha assinalado a opção Usar preenchimento do Excel na parte superior.

Esses problemas também podem ocorrer quando você usa os links de dados do Excel do think-cell.

Problema 1

Qualquer um dos problemas listados acima pode acontecer se a pasta de trabalho .xlsx contiver mais de, aproximadamente, 3.000 estilos de célula. Você pode verificar o número dos estilos de célula com o seguinte comando VBA no Immediate Window:
print Activeworkbook.Styles.Count

Aqui estão detalhas as etapas para verificar isso:

  1. Pressione Alt+F11 para abrir o editor do VBA.
  2. Vá para Janela Imediata. Se não estiver visível, você poderá visualizá-lo clicando em ExibirJanela imediata.
  3. Digite o comando a seguir e pressione Enter
    print Activeworkbook.Styles.Count

Solução 1: Limpar pastas de trabalho afetadas

  • Copiar suas planilhas em uma nova pasta de trabalho

    No Office 2013 e posteriores, copiar planilhas entre pastas de trabalho evita o acúmulo de estilos de células não usados por padrão:

    • Selecione todas as planilhas em sua pasta de trabalho: mantenha pressionada a tecla SHIFT e clique na primeira e na última planilhas
    • Clique com o botão direito do mouse na seleção: Mova ou copie…para a pasta de trabalho: (na pasta de trabalho) e assinale Criar uma cópiaOK
    • Salve a nova pasta de trabalho com um novo nome

    No Office 2007 e 2010, copiar planilhas em uma nova pasta de trabalho copia todos os estilos de células não usados. Para evitar isso, ative primeiro o seguinte Hotfix:

    Se sua versão do Office estiver totalmente atualizada, esse Hotfix provavelmente já estará instalado. Entretanto, você também precisa ativar essa correção usando a solução Fix it fornecida pela Microsoft ou no registro, conforme explicado nos artigos a seguir da Microsoft:

    Se a ativação do Hotfix não funcionar, aplique a atualização mencionada na seção Resolução nos artigos da Microsoft acima.

  • Limpe suas pastas de trabalho com uma ferramenta de limpeza

    Use a ferramenta de limpeza XLCleanerDotNET4.0 , recomendada pela Microsoft em KB213904. Depois de iniciar a ferramenta, clique em Get Excel File, marque Force all cell styles to 'Normal' e, em seguida, clique em Process File. Quando o Excel é aberto com o arquivo limpo, salve-o com um novo nome.

  • Remova os estilos de célula personalizados da sua pasta de trabalho usando uma macro VBA

    Abra o editor do VBA com Alt+F11. Selecione sua pasta de trabalho e clique em InserirMódulo. Então copie uma das macros a seguir e execute-a pressionando F5:

    DeleteCustomStyles() remove todos os estilos de célula personalizados da sua pasta de trabalho.

    Sub DeleteCustomStyles()
    Dim st As Style
    Dim i, i_cust As Long
    i_cust = 0
    For i = (ActiveWorkbook.Styles.Count) To 1 Step -1
    	With ActiveWorkbook.Styles(i)
    		If .BuiltIn = False Then
    			On Error Resume Next
    			.Locked = False
    			On Error GoTo 0
    			If Not .Locked Then
    				.Delete
    				i_cust = i_cust + 1
    			End If
    		End If
    	End With
    	If (i Mod 100) = 0 Then Debug.Print i
    Next
    MsgBox "Styles deleted: " & i_cust & " styles" & Chr(13) & "Styles left: " & ActiveWorkbook.Styles.Count
    End Sub

    Remove_Styles() remove somente os estilos de célula personalizados não usados da sua pasta de trabalho. É semelhante à macro acima, contudo pode demorar muito tempo a executar. A macro foi fornecida pelo suporte do Microsoft Office.

    Option Explicit
    Dim st_array() As String
    Dim i_x As Long
    Sub Remove_Styles()
    Dim stname As String
    Dim ustname As String
    Dim uc As Range
    Dim retval As Boolean
    Dim ust As Style
    Dim sh As Worksheet
    i_x = 0
    For Each sh In ActiveWorkbook.Worksheets
        For Each uc In sh.UsedRange
            stname = uc.Style.Name
            retval = Check_Array(stname)
            If retval = False Then
            ReDim Preserve st_array(i_x)
            st_array(i_x) = stname
            i_x = i_x + 1
            End If
        Next uc
    Next sh
    For Each ust In ActiveWorkbook.Styles
        If ust.BuiltIn = False Then
            ustname = ust.Name
            retval = Delete_Styles(ustname)
            On Error Resume Next
            If retval = True Then ust.Delete
            On Error GoTo 0
        End If
    Next ust
    End Sub
    Function Delete_Styles(stylename As String) As Boolean
    Delete_Styles = True
    Dim i_y As Long
    For i_y = 0 To i_x - 1
        If st_array(i_y) = stylename Then Delete_Styles = False
    Next i_y
    End Function
    Function Check_Array(stylename As String) As Boolean
    Check_Array = False
    Dim i_y As Long
    For i_y = 0 To i_x - 1
        If st_array(i_y) = stylename Then Check_Array = True
    Next i_y
    End Function

A melhor solução seria evitar colar estilos de célula não usados, mas exige que a Microsoft corrija um bug no Excel 2007 e posteriores. Até agora, a Microsoft não considerou o impacto empresarial suficientemente elevado para fornecer essa correção. Se sua empresa tiver um contrato de suporte do Microsoft Office e você desejar entrar em contato com a Microsoft para solicitar uma correção, consulte o número de caso na MicrosoftREG:113012810172527.

Explanation 1

O formato de arquivo usado ao colar dados na planilha do think-cell ou ao transferi-los em um vínculo de dados do Excel (formato de arquivo Biff8/.xls) suporta somente 3.000 estilos de célula, aproximadamente. Ao transferir dados de uma pasta de trabalho .xlsx com um grande número de estilos de célula para uma planilha de dados do think-cell, a informação de formatação é perdida ou não é possível colar.

Algumas pastas de trabalho .xlsx contêm um elevado número (várias dezenas de milhares) de estilos de célula devido a bugs e design de código problemático no Excel. Um fator contribuinte são também as ferramentas de criação de relatórios que por vezes geram muitos estilos de célula desnecessários. Em determinadas condições, todos os estilos de célula não usados são copiados ao copiar células ou planilhas entre pastas de trabalho.

  • Copiar uma planilha para uma nova pasta de trabalho com o Excel 2007 ou 2010:
    Clique com o botão direito do mouse na guia da pasta de trabalho → Mover ou copiar…Para pasta de trabalho: (nova pasta de trabalho) e selecione Criar uma cópia.
  • Copiar/colar células (mesmo uma única célula) em outra pasta de trabalho em um processo de Excel separado ou em uma planilha de dados do think-cell
    • Para iniciar um processo de Excel separado, clique com o botão direito do mouse no símbolo do Excel na barra de tarefas e clique em Microsoft Excel 20… Como iniciar um processo do Excel separado
    • No Excel 2013 e posteriores, mantenha a tecla ALT pressionada simultaneamente para iniciar um processo separado. Confirme a mensagem Você deseja iniciar uma nova instância do Excel? com Sim.
    • O think-cell é afetado porque nossa planilha de dados baseia-se em uma planilha do Excel em um processo separado do Excel.

A cópia de células na mesma pasta de trabalho não copia estilos de célula não usados.

Problema 2

A princípio, é possível copiar/colar com sucesso dados de uma pasta de trabalho do Excel (.xlsx) em uma planilha interna de dados de um gráfico do think-cell, mas qualquer tentativa posterior de copiar/colar (mesmo a partir de uma célula vazia) na mesma planilha de dados fará surgir a mensagem O Microsoft Excel não pode colar os dados. Nesse caso, os demais problemas mencionados na seção Sintomas acima não ocorrerão.

Esse problema acontece ao copiar dados entre processos separados do Excel, se um estilo de tabela personalizado existir com o mesmo nome em ambos os arquivos de origem e de destino. Uma vez que o primeiro copiar/colar também copia qualquer estilo de tabela personalizado, a tentativa seguinte de copiar/colar será falha. O problema pode ser reproduzido sem o think-cell.

Reprodução sem o think-cell

  1. Abra dois processos do Excel. Se o Excel já estiver aberto e você criar uma nova pasta de trabalho com Ctrl+N, a segunda será mantida no mesmo processo.

    • Para iniciar um processo de Excel separado, clique com o botão direito do mouse no símbolo do Excel na barra de tarefas e clique em Microsoft Excel 20… Como iniciar um processo do Excel separado
    • No Excel 2013 e posteriores, mantenha a tecla ALT pressionada simultaneamente para iniciar um processo separado. Confirme a mensagem Você deseja iniciar uma nova instância do Excel? com Sim.
  2. Na pasta de trabalho que está aberta no primeiro processo do Excel, vá para ExcelInícioEstilosFormatar como tabelaNovo estilo de tabela …OK. Isso irá criar um novo estilo de tabela personalizada chamado "Estilo de tabela 1".
  3. Copie/cole uma célula da pasta de trabalho contendo "Estilo de tabela 1" para outra pasta de trabalho no segundo processo do Excel. Isso funciona pela primeira vez.
  4. Novamente, copie/cole uma célula da pasta de trabalho contendo "Estilo de tabela 1" para outra pasta de trabalho no segundo processo do Excel. Na segunda vez que a falha ocorrer, ela virá acompanhada da mensagem O Microsoft Excel não pode colar os dados.

Solução 2

  • Excel 2007 e anteriores não são afetados por esse problema.
  • No Excel 2010, o problema ainda pode ocorrer até novembro de 2015. Se sua empresa tiver um contrato de suporte do Microsoft Office e você desejar entrar em contato com a Microsoft para solicitar uma correção, consulte o número de caso na Microsoftfor Excel 2013, REG:114021711190574.

    Enquanto isso, você pode usar os seguintes atalhos:

    • Cole os dados na planilha do think-cell como texto:
      planilha de dados do think-cell ColarMais (o botão em formato de triângulo pequeno perto do botão Colar) → Colar especial …TextoOK.
    • Clique no botão Limpar os formatos de todas as células na planilha de dados interna do think-cell. Isso remove qualquer estilo de tabela personalizado da planilha de dados e os comandos de colagem subsequentes funcionarão pelo menos uma vez.
  • A Microsoft corrigiu esse problema para o Excel 2013. Instale o KB2881014 a partir das atualizações do Microsoft Office de 10 de junho de 2014 ou o hotfix KB2881042.