Base de conocimientos KB0156

No puedo pegar datos en la hoja de datos de think-cell o bien el formato se ha perdido

Síntomas

Dispone de datos en un libro de Excel (.xlsx) y desea copiarlos/pegarlos en la hoja de datos interna de un gráfico de think-cell. Al pegar los datos, observa uno de los problemas siguientes:

  • Recibe un mensaje: No se pueden pegar los datos.
  • Solo se pegan celdas vacías.
  • Su formato de fecha o número se ha perdido, por ejemplo, 1/1/2012 se convirtió en 40909 o $3,5 en 3,5.
  • Después de pegar, los valores de porcentaje se muestran incorrectamente. En los gráficos 100%, el diseño del gráfico puede cambiar.
  • Los colores de las celdas no aparecen en el gráfico a pesar de que ha marcado la opción Utilizar relleno de Excel en parte superior.

Estos problemas también pueden aparecer al utilizar vínculos de datos de Excel de think-cell.

Problema 1

Cualquiera de los problemas enumerados anteriormente puede surgir si el libro .xlsx contiene más de 3000 estilos de celda aproximadamente. Puede comprobar el número de estilos de celda con el siguiente comando de VBA en la Ventana Inmediato:
print Activeworkbook.Styles.Count

Los pasos para comprobarlo son los siguientes:

  1. Pulse Alt+F11 para abrir el editor de VBA.
  2. Vaya a la ventana Inmediato. Si no se ve, puede mostrarla haciendo clic en VerVentana Inmediato.
  3. Escriba el comando siguiente y pulse Intro
    print Activeworkbook.Styles.Count

Solución 1: Limpiar los libros afectados

  • Copie sus hojas de cálculo en un nuevo libro

    En Office 2013 y versiones posteriores, la copia de hojas de cálculo entre libros evita la acumulación de estilos de celda no utilizados de forma predeterminada:

    • Seleccione todas las hojas de su libro: mantenga pulsada la tecla MAYÚS y haga clic en la primera y la última hoja de cálculo
    • Haga clic con el botón derecho en la selección: Mover o copiar…Al libro: (nuevo libro) y marque la opción Crear una copiaAceptar
    • Guarde el nuevo libro con un nombre diferente

    En Office 2007 y 2010, al copiar una hoja de cálculo en un libro nuevo, se copian todos los estilos de celda no utilizados. Para evitar esto, active primero la revisión siguiente:

    Si su versión de Office está plenamente actualizada, esta revisión probablemente ya estará instalada. No obstante, también tiene que activar esta revisión, bien utilizando la solución Fix it proporcionada por Microsoft o en el registro, como se explica en los siguientes artículos de Microsoft:

    Si activar la revisión no resuelve el problema, aplique la actualización mencionada en la sección Resolution de los artículos de Microsoft indicados anteriormente.

  • Limpie los libros afectados con una herramienta de limpieza

    Utilice una herramienta de limpieza como XLCleanerDotNET4.0, que Microsoft recomienda en KB213904. Después de iniciar la herramienta, haga clic en Get Excel File, marque Force all cell styles to 'Normal' y, a continuación, haga clic en Process File. Cuando se abra Excel con el archivo limpio, guárdelo con un nombre nuevo.

  • Elimine los estilos de celda personalizados de su libro utilizando una macro de VBA

    Abra el editor de VBA con Alt+F11. Seleccione el libro y haga clic en InsertarMódulo. A continuación, pegue la siguiente macro y ejecútela pulsando F5:

    DeleteCustomStyles() elimina de su libro todos los estilos de celda personalizados.

    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() solo elimina de su libro los estilos de celda personalizados que no estén en uso. Es similar a la macro anterior, pero puede necesitar mucho tiempo para ejecutarse. La macro ha sido proporcionada por el soporte técnico de 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

La mejor solución sería evitar pegar los estilos de celda sin usar, pero es necesario que Microsoft solucione un error en Excel 2007 y versiones posteriores. Hasta el momento Microsoft no ha considerado el impacto comercial lo suficientemente importante como para proporcionar esta corrección. Si su empresa tiene un contrato de soporte técnico de Microsoft Office y desea ponerse en contacto con Microsoft para solicitar una corrección, puede indicar el número de caso de Microsoft REG:113012810172527.

Explicación 1

El formato de archivo utilizado al pegar datos en la hoja de datos de think-cell o al transferirlos mediante un vínculo de datos de Excel (formato de archivo Biff8/.xls) solo admite aproximadamente 3000 estilos de celda. Al transferir datos desde un libro .xlsx con una cantidad mayor de estilos de celda a una hoja de datos de think-cell, o bien se pierde la información de formato, o bien no es posible pegar los datos.

Algunos libros .xlsx contienen un número muy grande de estilos de celda (varias decenas de miles) debido a errores y al diseño de código problemático en Excel. Un factor que contribuye también son las herramientas de informes que a veces generan innecesariamente muchos estilos de celda. En ciertas condiciones, también se copian todos los estilos de celda no utilizados al copiar celdas u hojas de cálculo entre libros.

  • Copiar una hoja de cálculo en un nuevo libro con Excel 2007 o 2010:
    Haga clic con el botón derecho en la pestaña de la hoja de cálculo → Mover o copiar…Al libro: (nuevo libro) y marque la opción Crear una copia.
  • Copiar/pegar celdas (incluso una sola celda) en otro libro en un proceso de Excel independiente o en la hoja de datos interna de think-cell
    • Para iniciar un proceso de Excel independiente, haga clic con el botón derecho en el símbolo de Excel de la barra de tareas y, a continuación, haga clic en Microsoft Excel 20… Cómo iniciar un proceso de Excel independiente
    • En Excel 2013 y versiones posteriores, mantenga pulsada la tecla ALT simultáneamente para iniciar un proceso independiente. Confirme el mensaje ¿Desea iniciar una nueva instancia de Excel? haciendo clic en .
    • think-cell se ve afectado porque nuestra hoja de datos se basa en una hoja de cálculo de Excel en un proceso de Excel independiente.

La copia de celdas en un libro nuevo dentro del mismo proceso de Excel no copia los estilos de celda no utilizados.

Problema 2

Puede ser posible copiar/pegar correctamente por primera vez datos de un libro de Excel (.xlsx) en la hoja de datos interna de un gráfico de think-cell; sin embargo, cualquier intento posterior de copiar/pegar (incluso a partir de una celda vacía) en la misma hoja de datos generará el mensaje: No se pueden pegar los datos. En tal caso, los otros problemas que se mencionan en la sección Síntomas anterior no se producirán.

Este problema se produce al copiar datos entre procesos de Excel independientes, si el estilo personalizado de tabla del mismo nombre existe tanto en el archivo de origen como en el archivo de destino. Como la primera operación de copiar/pegar también copia todos los estilos personalizados de tabla, los intentos posteriores de copiar/pegar fallarán. El problema se puede reproducir sin think-cell.

Reproducción sin think-cell

  1. Abra dos procesos de Excel. Cuando Excel ya está abierto y se crea un nuevo libro con Ctrl+N, el segundo libro se mantiene dentro del mismo proceso de Excel.

    • Para iniciar un proceso de Excel independiente, haga clic con el botón derecho en el símbolo de Excel de la barra de tareas y, a continuación, haga clic en Microsoft Excel…20 Cómo iniciar un proceso de Excel independiente
    • En Excel 2013 y versiones posteriores, mantenga pulsada la tecla ALT simultáneamente para iniciar un proceso independiente. Confirme el mensaje ¿Desea iniciar una nueva instancia de Excel? haciendo clic en .
  2. En el libro que está abierto en el primer proceso de Excel, vaya a ExcelInicioEstilosDar formato como tablaNuevo estilo de tabla…Aceptar. Se introducirá un estilo personalizado de tabla nuevo llamado "Estilo de tabla 1".
  3. Copie/pegue una celda del libro que contiene el "Estilo de tabla 1" en el otro libro del segundo proceso de Excel. Se realiza correctamente la primera vez.
  4. Una vez más, copie/pegue una celda del libro que contiene el "Estilo de tabla 1" en el otro libro del segundo proceso de Excel. La segunda vez se producirá un error con el mensaje: No se pueden pegar los datos.

Solución 2

  • Este problema no afecta a Excel 2007 y las versiones anteriores.
  • En noviembre de 2015, el problema continuaba produciéndose en Excel 2010. Si su empresa tiene un contrato de soporte técnico de Microsoft Office y desea ponerse en contacto con Microsoft para solicitar una corrección, puede indicar el número de caso de Microsoft for Excel 2013, REG:114021711190574.

    Entretanto, puede usar las soluciones alternativas siguientes:

    • Pegar los datos en la hoja de datos de think-cell como texto:
      hoja de datos de think-cellPegarMás (el pequeño botón triangular al lado del botón Pegar) → Pegado especial …TextoAceptar.
    • Haga clic en el botón Borrar los formatos de todas las celdas de la hoja de datos interna de think-cell. De esta manera, se eliminarán los estilos de tabla personalizados de la hoja de datos y los comandos para pegar se podrán usar al menos una vez.
  • Microsoft ha corregido este problema en Excel 2013. Instale el KB2881014 de las actualizaciones de Microsoft Office del 10 de junio de 2014, o bien la revisión KB2881042.