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

Seleccione idioma Seleccione idioma
Id. de artículo: 114263 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

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.

Propiedades

Id. de artículo: 114263 - Última revisión: miércoles, 05 de febrero de 2014 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Excel 5.0 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbhowto kbprogramming KB114263 KbMtes
Traducción automática
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

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com