Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

Macro para extraer datos de un gráfico en Excel

Ha finalizado el soporte técnico para Office 2003

Microsoft puso fin al soporte técnico para Office 2003 el 8 de abril de 2014. Este cambio ha afectado a las actualizaciones de software y las opciones de seguridad. Sepa qué significa esto en su caso y cómo puede mantenerse protegido.

Para obtener una versión de este artículo para Microsoft Excel 2000, vea 213814.
Para obtener una versión de este artículo para Microsoft Excel 98 y versiones anteriores, vea 137016..
Resumen
En Microsoft Excel, puede recuperar datos de un gráfico incluso aunque los datos estén en una hoja de cálculo o un libro externo. Esto es útil en situaciones en las que el gráfico se creó desde otro archivo o se vinculó a otro archivo que no está disponible o que se ha dañado de algún modo. Cuando los datos de origen para un gráfico se pierden, aún puede recuperarlos desde el propio gráfico con una macro de Microsoft Visual Basic para Aplicaciones (VBA).
Más información
Microsoft proporciona ejemplos de programación solamente como ilustración, sin ninguna garantía ya sea expresa o implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. En este artículo se da por supuesto que ya conoce el lenguaje de programación que se muestra, así como las herramientas empleadas para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos adaptados a sus necesidades específicas.

La siguiente macro de ejemplo coloca los datos de origen del gráfico en una hoja de cálculo llamada "ChartData" que está en el libro activo, empezando por la primera columna y la primera fila.
  1. En la hoja de módulo, escriba la macro siguiente:
    Sub GetChartValues()   Dim NumberOfRows As Integer   Dim X As Object   Counter = 2   ' Calculate the number of rows of data.   NumberOfRows = UBound(ActiveChart.SeriesCollection(1).Values)   Worksheets("ChartData").Cells(1, 1) = "X Values"   ' Write x-axis values to worksheet.   With Worksheets("ChartData")      .Range(.Cells(2, 1), _      .Cells(NumberOfRows + 1, 1)) = _      Application.Transpose(ActiveChart.SeriesCollection(1).XValues)   End With   ' Loop through all series in the chart and write their values to   ' the worksheet.   For Each X In ActiveChart.SeriesCollection      Worksheets("ChartData").Cells(1, Counter) = X.Name      With Worksheets("ChartData")         .Range(.Cells(2, Counter), _         .Cells(NumberOfRows + 1, Counter)) = _         Application.Transpose(X.Values)      End With      Counter = Counter + 1   NextEnd Sub					
  2. Inserte una nueva hoja de cálculo en su libro y cámbiele el nombre a "ChartData" (sin las comillas).
  3. Seleccione el gráfico del que quiere extraer los valores de datos subyacentes.

    NOTA: el gráfico puede estar incrustado en una hoja de cálculo o en una hoja de gráfico independiente.
  4. Ejecute la macro GetChartValues.

    Los datos del gráfico están ubicados en la hoja de cálculo "ChartData".

Pasos para vincular el gráfico con los datos recuperados

Para que el gráfico sea interactivo con los datos recuperados, necesita vincular el gráfico con la nueva hoja de datos, en lugar de mantener los vínculos al libro perdido o dañado.
  1. Seleccione el gráfico y haga clic en una serie para encontrar el nombre de la hoja a la que está vinculado el gráfico en el libro dañado o perdido. El nombre de la hoja aparece en la fórmula de la serie de la barra de fórmulas.

    NOTA: el nombre de la hoja puede seguir al nombre del libro, encerrado entre corchetes, como por ejemplo "[Libro1]", y precede al signo de exclamación de cierre "!" (o al apóstrofo y signo de exclamación de cierre "'!") que indica el principio de una referencia de celda. El nombre de hoja incluye solamente los caracteres situados entre el símbolo de corchete de cierre "]" y el signo de exclamación de cierre (o apóstrofo y signo de exclamación de cierre). Deje fuera cualquier apóstrofo si está inmediatamente antes del signo de exclamación de cierre, porque un apóstrofo no puede ser el último carácter en un nombre de hoja.
  2. Haga clic en la ficha de la nueva hoja llamada ChartData.
  3. Escriba el nombre de la hoja original del paso 1 sobre el nombre "ChartData" resaltado y presione ENTRAR. Debe ser el mismo nombre que el nombre de la hoja del libro dañado o perdido.
  4. Si no ha guardado este archivo con el gráfico y la hoja de datos, guárdelo.
  5. En Excel 2003 o Excel 2002, haga clic en Vínculos en el menú Modificar y, a continuación, haga clic en Cambiar origen.

    En Excel 2007, haga clic en la ficha Datos, haga clic en Modificar vínculos en el grupo Conexiones y, a continuación, en Cambiar origen.
  6. En el cuadro Archivo de origen, seleccione el vínculo que ha de cambiar y haga clic en Cambiar origen.
  7. En el cuadro de diálogo Cambiar vínculos, seleccione el nuevo archivo con el gráfico y los datos recuperados y haga clic en Aceptar.
  8. Si recibe el mensaje de error siguiente
    La fórmula contiene una referencia externa no válida a una hoja de cálculo.
    es probable que el nombre de la hoja que escribió en el paso 3 no sea el mismo que el original. Vuelva al paso 1.
  9. Puede que ahora el cuadro Archivo de origen esté en blanco. Eso indica que todos los vínculos señalan al archivo activo, en lugar de al archivo perdido o dañado. Haga clic en Cerrar.
Ahora el gráfico hace referencia a, e interactúa con, los datos recuperados en la hoja, cuyo nombre se ha cambiado, del libro activo.
link unlink recover corrupt damage repair inf XL2002 XL2003 XL2007
Propiedades

Id. de artículo: 300643 - Última revisión: 05/21/2008 16:16:05 - Revisión: 4.1

  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • kbdtacode kbhowto kbprogramming KB300643
Comentarios
cript> vascript" src="https://c.microsoft.com/ms.js" '="">