Artigo: 147803 - Última revisão: quinta-feira, 1 de Julho de 2004 - Revisão: 3.1

Como criar dinamicamente Excel 5.0 gráficos de OLE 2.0 controlo

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo demonstra como criar novos gráficos do Excel 5.0 em tempo de execução a ser apresentado no controlo de contentor OLE 2.0 do Visual Basic.

Mais Informação

O controlo OLE do Visual Basic contentor pode ser utilizado para incorporar novos objectos OLE em tempo de execução. Um dos objectos que pode incorporar é um gráfico do Excel. É, essencialmente, um processo passo quatro:

  1. Para incorporar um novo gráfico no controlo OLE, defina a propriedade classe Excel.gráfico ou Excel.Chart.5. Ambas as classes (Excel.gráfico e Excel.Chart.5) são para gráficos do Excel. Mas Excel.Chart.5 é dependente da versão; Especifica um objecto do Excel versão 5.0 gráfico.
  2. Crie o objecto definindo a propriedade para OLE_CREATE_EMBED. Isto incorpora um gráfico de predefinição (Gráfico1) a partir do Excel para o controlo OLE. O gráfico (Gráfico1) é parte de um livro predefinido (Livro1) que também contém uma folha de cálculo predefinido (Folha1) para fornecer dados para o gráfico.
  3. Definir variáveis de objecto para referenciar objectos de Excel para manipular o gráfico através de automatização OLE. Isto tornará o código mais pequena e fácil de compreender.
  4. Chame o método do Assistente de gráficos para formatar o gráfico.

Definir variáveis de objecto para objectos do Excel de referência

O controlo OLE fornece a propriedade de objecto para permitir que faça referência ao objecto que criou. Por exemplo, o seguinte código cria e incorpora um gráfico no controlo OLE e, em seguida, define o 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"
				
, pode navegar da propriedade de objecto sempre, mas seria complicado. Para tornar mais fácil, pode definir variáveis de objecto para referenciar os objectos pretendidos. Aqui é uma versão modificada do exemplo anterior com variáveis de objecto:
   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"
				
o exemplo apresentado no fim neste artigo utiliza três variáveis de objecto:

  • Um referir o gráfico.
  • Uma referência a folha de cálculo.
  • Uma referência a objecto de aplicação.

Chamar o método do Assistente de gráficos para formatar um gráfico

Para formatar rapidamente um gráfico, o Excel fornece o método do Assistente de gráficos. Através de uma chamada para o método do Assistente de gráficos, pode criar um gráfico dos muitos formatos predefinidos. O exemplo utiliza este método, mas também é possível utilizar manipulação de objectos directa do gráfico.

Para poder chamar o método do Assistente de gráficos, folha de cálculo tem de ser preenchido com os dados adequados. O exemplo cria dados aleatórios. Na maior parte das vezes vai utilizar dados mais relevantes que pode manipular com o Excel. No exemplo, a orientação xlRows é utilizada com 1 linha para rótulos de categoria e uma coluna de rótulos de séries. Eis um diagrama que mostra como os dados são colocados na folha de cálculo:
-----------------------------------------------------------
|                | Category 1 Label | Category 2 Label |
-----------------------------------------------------------
| Series 1 Label | Data Value       | Data Value       |
-----------------------------------------------------------
| Series 2 Label | Data Value       | Data Value       |
 -----------------------------------------------------------
|                |                  |                  |
				
depois dos dados (incluindo etiquetas) foi adicionados à folha de cálculo, passar todo o intervalo para o método do Assistente de gráficos juntamente com os parâmetros de formatação.

Sintaxe do Assistente de gráficos, parâmetros e descrições

SINTAXE:

Object.ChartWizard(Source, Gallery, Format, PlotBy, CategoryLabels, SeriesLabels, HasLegend, Title, CategoryTitle, ValueTitle, ExtraTitle)
Parameter       Description
--------------  -------------------------------------------------
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.
				
são os parâmetros são mais importantes para o método do Assistente de gráficos:

  • PlotBy
  • CategoryLabels
  • SeriesLabels
Estes parâmetros ou determinam como vai ser definidos os dados ou são inicializados para ajustar os dados que tiver.

Para determinar os parâmetros de formato e galeria, poderá modificar o exemplo. Além disso, pode registar a utilização do Assistente de gráficos no Excel e ver os parâmetros são utilizados.

Tudo o que é produzida depois chamar o método de Assistente de gráficos está a fechar as referências de aplicação e o objecto.

Exemplo passo a passo

  1. Inicie um novo projecto no Visual Basic. É criado o Form1 por predefinição.
  2. Adicione um controlo de OLE 2.0 ao Form1 e escolha o botão ' Cancelar ' na caixa de diálogo Inserir objecto.
  3. Adicione um CommandButton (Command1) ao Form1.
  4. Coloque o seguinte código no CommandButton clique evento.
           Private Sub cmdPrint_Click()
              Me.PrintForm
          End Sub
    
             Private Sub cmdQ147803_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
    
                Dim objChart As Object           'Object reference to Excel
                                                 'Chart
                Dim objXL As Object              'Object reference for Excel
                                                  App
                Dim objSheet As Object           'Object reference to Excel
                                                 'Worksheet
                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
                                                 'disable this button
                cmdQ147803.Enabled = False
                ' 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.CreateEmbed "", "Excel.Chart.5"
                'BEGIN FIX FOR DIFFERING OBJECT MODELS BETWEEN VERSIONS 7 & 8
                ' Set object references to Chart, Worksheet, and Application
                'objects:
                If Left(OLE1.object.Application.Version, 1) = "7" Then
                'Excel 95's object model is different from Excel 97's
                  Set objChart = OLE1.object ' Chart1 default chart
                Else  'assume all future excel object models are going to be
                      'the same
                Set objChart = OLE1.object.ActiveChart 'ole1.object is in
                                                       'Excel 97 the workbook
                End If
                Set objSheet = objChart.Parent.Worksheets(1) ' Sheet1 default
                                                             ' data
    
                Set objXL = objChart.Application
                'END FIX
                ' 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
                'exiting here leaves the default chart drawn with sample data
                ' 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:
                objSheet.Range(objSheet.Cells(1, 1), objSheet.Cells(cRows + _
                1, cCols + 1)).Name = "ChartDataRange"
                'objSheet.Range(objSheet.Cells(1, 1), objSheet.Cells(cRows + _
                1, cCols + 1)).Clear
                ' 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:
                objChart.ChartWizard cwSource, cwGallery(iGallery), cwFormat,
                cwPlotBy, cwCategoryLabels, cwSeriesLabels, cwHasLegend,
                cwTitle,cwCategoryTitle, cwValueTitle, cwExtraTitle
                ' Shut Down Excel and erase objects:
                Set objXL = Nothing
                Set objChart = Nothing
                Set objSheet = Nothing
                'enable this button
                cmdQ147803.Enabled = True
             End Sub
    
          Private Sub cmdXLView_Click()
                OLE1.DoVerb vbOLEOpen
          End Sub
    						
  5. Guarde o projecto.
  6. Execute o programa e clique no botão Command1. No primeiro gráfico deverá ser criado.
  7. Manter clicando no botão Command1 para percorrer os tipos de gráfico Galeria de 15 de 1 de formato.

Notas

  • Para modificar um gráfico no controlo OLE, tem de activar o controlo primeiro definindo a propriedade Verbo para -1 (editar) e, em seguida, definir a acção propriedade 7 (OLE_ACTIVATE). Em seguida, a propriedade de objecto dirão respeito ao objecto activo.
  • O exemplo utiliza o formato 1 com o método de Assistente de gráficos. Pode pretender fazer experiências com outros valores.
  • Depois de utilizar o método do Assistente de gráficos, pode ainda utilizar objectos, métodos e propriedades do objecto gráfico para modificá-lo.
  • Os utilizadores não conseguirá editar o gráfico fazendo clique sobre o controlo OLE ou, premindo o botão direito do rato e seleccionando ' Editar no menu de contexto. É possível eliminar esta capacidade definindo as propriedades AutoActivate e AutoVerbMenu do controlo OLE.

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Enterprise Edition
  • Microsoft Excel 5.0 Standard Edition
Palavras-chave: 
kbmt kb16bitonly kbhowto kbprogramming KB147803 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 147803  (http://support.microsoft.com/kb/147803/en-us/ )
Retired KB ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.