Cómo VB3: Dinámicamente crear gráficos de Excel 5 en OLE 2 control

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 114263
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Resumen
En este artículo muestra cómo crear nuevos gráficos de Excel 5.0 en tiempo de ejecución que se mostrará en el control de contenedor OLE 2.0 de Visual Basic.
Más información
El control contenedor OLE de Visual Basic puede utilizarse para incrustar objetos OLE nuevos en tiempo de ejecución. Uno de los objetos que se pueden incrustar es un gráfico de Excel. Básicamente es un proceso de cuatro pasos:

  1. Para incrustar un gráfico nuevo en el control OLE, establezca la propiedad de clase Excel.Chart o Excel.Chart.5. Ambas clases (Excel.Chart y Excel.Chart.5) son para los gráficos de Excel. Pero Excel.Chart.5 es dependiente de la versión, especifica un objeto de Excel versión 5.0 de gráfico.
  2. Crear el objeto estableciendo la propiedad Action a OLE_CREATE_EMBED. Esto incrusta un gráfico predeterminado (Chart1) desde Excel en el control OLE. El gráfico (Chart1) es parte de un libro predeterminada (Libro1) que también contiene una hoja de cálculo predeterminada (Hoja1) para proporcionar datos para el gráfico.
  3. Establecer variables de objeto para hacer referencia a los objetos de Excel que necesita manipular el gráfico a través de automatización. Esto hará que el código más pequeños y fáciles de comprender.
  4. Llamar al método ChartWizard para dar formato del gráfico.

Establecer variables de objeto en la referencia de objetos de Excel

El control OLE proporciona la propiedad Object para poder hacer referencia al objeto creado. Por ejemplo, el código siguiente crea y lo incrusta un gráfico en el control OLE y a continuación, establece el título:
   Const OLE_CREATE_EMBED = 0   Ole1.Class = "Excel.Chart.5"   Ole1.Action = OLE_CREATE_EMBED   Ole1.Object.HasTitle = 1   Ole1.Object.ChartTitle.Caption = "Expenses"				
se podría desplazarse de la propiedad Object todo el tiempo, pero sería laborioso. Para que sea más fácil, puede establecer las variables de objeto hacen referencia a los objetos que desee. Aquí es una versión modificada del ejemplo anterior con variables de objeto:
   Const OLE_CREATE_EMBED = 0   Dim objChart as Object   Dim objChartTitle as Object   Ole1.Class = "Excel.Chart.5"   Ole1.Action = OLE_CREATE_EMBED   Set objChart = Ole1.Object   Set objChartTitle = Ole1.Object.ChartTitle   objChart.HasTitle = 1   objChartTitle.Caption = "Expenses"				
el ejemplo se muestra al final de este artículo utiliza tres variables de objeto:

  • Una referencia al gráfico.
  • Hacer referencia a la hoja de cálculo uno.
  • Una referencia al objeto de aplicación.

Llamar al método ChartWizard para dar formato a un gráfico

Para aplicar formato rápidamente a un gráfico, Excel proporciona el método ChartWizard. Con una llamada al método ChartWizard, puede crear un gráfico en uno de muchos formatos predefinidos. El ejemplo utiliza este método, pero también podría utilizar la manipulación de objeto directo del gráfico.

Antes de que se puede llamar al método ChartWizard, la hoja de cálculo debe rellenarse con los datos adecuados. El ejemplo crea datos aleatorios. La mayor parte del tiempo va a utilizar datos más significativos que puede manipular con Excel. En el ejemplo, la orientación de xlRows se utiliza con 1 fila para rótulos y una columna para etiquetas de serie. Aquí es un diagrama que muestra cómo se coloca los datos en la hoja de cálculo:
   -----------------------------------------------------------   |                | Category 1 Label | Category 2 Label |   -----------------------------------------------------------   | Series 1 Label | Data Value       | Data Value       |   -----------------------------------------------------------   | Series 2 Label | Data Value       | Data Value       |   -----------------------------------------------------------   |                |                  |                  |				
cuando los datos (incluidas etiquetas) se ha agregado a la hoja de cálculo, pase todo el rango al método ChartWizard junto con los otros parámetros de formato.

Asistente para gráficos sintaxis, parámetros y descripciones

SINTAXIS:
Object.ChartWizard (Source, Gallery, Format, PlotBy, CategoryLabels, SeriesLabels, HasLegend, Title, CategoryTitle, ValueTitle, ExtraTitle)

Parámetro Descripción

Object          The Chart object.Source          Specifies range that contains source data for the chart.Gallery         Specifies chart type (see constants in example.)Format          Specifies built-in autoformat.PlotBy          Specifies orientation of the data (xlRows or xlColumns.)CategoryLabels  The number of rows or columns containing category labels.SeriesLabels    The number of rows or columns containing series labels.HasLegend       Specifies if chart has a legend.Title           The title text of the chart.CategoryTitle   Category axis title text.ValueTitle      Value axis title text.ExtraTitle      Additional axis title text for some charts.				
Los parámetros que son más importantes para el método ChartWizard son:

  • PlotBy
  • CaetgoryLabels
  • SeriesLabels
Estos parámetros o determinan cómo sus datos va a configurarse o se inicializan para ajustar los datos que tiene.

Para determinar los parámetros de formato y la galería, puede que desee modificar el ejemplo. Además, puede grabar el uso del Asistente para gráficos en Excel y ver qué parámetros se utilizan.

Todos los que queda después de llamar al método ChartWizard está cerrando las referencias de objeto y de aplicación.

Ejemplo paso a paso

  1. Inicie un proyecto nuevo de Visual Basic. Se creará Form1 de manera predeterminada.
  2. Agregue un control de OLE 2.0 a Form1 y elija el botón Cancelar en el cuadro de diálogo Insertar objeto.
  3. Agregue un botón de comando (Command1) a Form1.
  4. Ponga el siguiente código en el botón de comando de evento click.
       Sub Command1_Click ()      ' Excel chart constants (ODK 1.0 XLCONST.BAS or MsgBox in Excel):      Const xlArea = 1      Const xlBar = 2      Const xlColumn = 3      Const xlLine = 4      Const xlPie = 5      Const xlRadar = -4151      Const xlXYScatter = -4169      Const xlCombination = -4111      Const xl3DArea = -4098      Const xl3DBar = -4099      Const xl3DColumn = -4100      Const xl3DLine = -4101      Const xl3DPie = -4102      Const xl3DSurface = -4103      Const xlDoughnut = -4120      ' Excel orientation constants:      Const xlRows = 1      Const xlColumns = 2      ' OLE Constant:      Const OLE_CREATE_EMBED = 0      Dim objXL As Object              'Object reference for Excel App      Dim objSheet As Object           'Object reference to Excel Worksheet      Dim objChart As Object           'Object reference to Excel Chart      Dim iRow As Integer              'Index variable for the current Row      Dim iCol As Integer              'Index variable for the current Row      Dim cRows As Integer             'Number of rows      Dim cCols As Integer             'Number of Columns      Dim cwSource As String           'Named Range      Static cwGallery(15) As Integer  'Array for Chart types      Static iGallery As Integer       'Index for Chart type array      Dim cwFormat As Integer          'Format of Chart type      Dim cwPlotBy As Integer          'How data is taken from Worksheet      Dim cwCategoryLabels As Integer  'Rows/Cols with Catagory labels      Dim cwSeriesLabels As Integer    'Rows/Cols with Catagory Labels      Dim cwHasLegend As Integer       'Display Legend      Dim cwTitle As String            'Chart Title      Dim cwCategoryTitle As String    'Category Title      Dim cwValueTitle As String       'Value Title      Dim cwExtraTitle As String       'Extra Title for some Charts      ' Fill in array with possible Chart types:      cwGallery(1) = xlArea      cwGallery(2) = xlBar      cwGallery(3) = xlColumn      cwGallery(4) = xlLine      cwGallery(5) = xlPie      cwGallery(6) = xlRadar      cwGallery(7) = xlXYScatter      cwGallery(8) = xlCombination      cwGallery(9) = xl3DArea      cwGallery(10) = xl3DBar      cwGallery(11) = xl3DColumn      cwGallery(12) = xl3DLine      cwGallery(13) = xl3DPie      cwGallery(14) = xl3DSurface      cwGallery(15) = xlDoughnut      ' Embed a new Excel 5.0 Chart into the OLE control:      Ole1.Class = "Excel.Chart.5"      Ole1.Action = OLE_CREATE_EMBED      ' Set object references to Chart, Worksheet, and Application objects:      Set objChart = Ole1.Object   ' Chart1 default chart      Set objSheet = Ole1.Object.Parent.worksheets(1) ' Sheet1 default data      Set objXL = Ole1.Object.application      ' Set the number of columns and rows used for data:      cCols = 10      cRows = 3      ' Create Series Labels on Worksheet:      For iRow = 1 To cRows         objSheet.Cells(iRow + 1, 1).Value = "SL" & iRow      Next      ' Create Category Labels on Worksheet:      For iCol = 1 To cCols         objSheet.Cells(1, iCol + 1).Value = "CL" & iCol      Next      ' Create random data on Worksheet:      Randomize Timer      For iRow = 1 To cRows         For iCol = 1 To cCols            objSheet.Cells(iRow + 1, iCol + 1).Value = Int(Rnd * 50) + 1         Next iCol      Next iRow      ' Name the Range containing the previously added data:      ' Enter the following two lines as one, single line of code:      objSheet.Range(objSheet.Cells(1, 1), objSheet.         Cells(cRows + 1, cCols + 1)).Name = "ChartDataRange"      ' Set the ChartWizard parameters:      cwSource = "ChartDataRange"       'Name of Named Range      iGallery = iGallery Mod 15 + 1    'Iterate through 15 Chart types      cwFormat = 1                      'Use default format of Chart Type      cwPlotBy = xlRows                 'Rows = Series orientation      cwCategoryLabels = 1              '1 Row contains Category Labels      cwSeriesLabels = 1                '1 Column contains Series Labels      cwHasLegend = 1                   'Display the Legend      cwTitle = "Embedded Chart"        'Chart Title      cwCategoryTitle = "Categories"    'Category Title      cwValueTitle = "Values"           'Value Title      cwExtraTitle = "Extras"           'Extra Title      ' Use the ChartWizard method to fill in the Chart:      ' Enter the following three lines as one, single line of code:      objChart.ChartWizard cwSource, cwGallery(iGallery), cwFormat,         cwPlotBy, cwCategoryLabels, cwSeriesLabels, cwHasLegend, cwTitle,         cwCategoryTitle, cwValueTitle, cwExtraTitle      ' Shut Down Excel and erase objects:      objXL.Quit      Set objXL = Nothing      Set objChart = Nothing      Set objSheet = Nothing   End Sub						
  5. Guarde el proyecto.
  6. Ejecutar el programa y haga clic en el botón Command1. Se debe crear el primer gráfico.
  7. Mantener haciendo clic el botón de Command1 para desplazarse por los tipos de gráfico quince de galería de formato 1.

Notas

  • Para modificar un gráfico en el control OLE, debe activar el control mediante primero estableciendo la propiedad Verb en -1 (edición) y estableciendo después la acción de propiedad a 7 (OLE_ACTIVATE). A continuación, la propiedad Object hará referencia a un objeto activo.
  • El ejemplo utiliza formato 1 con el método ChartWizard. Quizás desee experimentar con otros valores.
  • Después de utilizar el método ChartWizard, puede utilizar objetos, métodos y propiedades del objeto gráfico para modificarlo.
  • Los usuarios podrán editar el gráfico haciendo clic en el control OLE o haciendo clic en el botón secundario del mouse y eligiendo Editar en el menú emergente. Puede eliminar esta capacidad estableciendo las propiedades AutoActivate y AutoVerbMenu del control OLE.

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 114263 - Última revisión: 02/05/2014 13:50:18 - Revisión: 2.1

Microsoft Visual Basic 3.0 Professional Edition, Microsoft Visual Basic 3.0 Professional Edition, Microsoft Excel 5.0 Standard Edition

  • kbnosurvey kbarchive kbmt kbhowto kbprogramming KB114263 KbMtes
Comentarios