Bu makalede, Visual Basic OLE 2.0 kapsayıcısı Denetimde görüntülenecek çalışma zamanı en yeni Excel 5.0 grafikleri oluşturmak gösterilmiştir.
Visual Basic OLE kapsayıcı denetimi, çalıştırma sırasında yeni bir OLE nesneleri katıştırmak üzere kullanılabilir. Excel grafiği katıştırabilir, nesnelerin birisidir. Temel olarak, dört adımlı bir işlemi şöyledir:
- OLE denetimi yeni bir grafik katıştırmak için <a0></a0>, Excel.Chart veya Excel.Chart.5 Class özelliğini ayarlayın. Her iki (Excel.Chart ve Excel.Chart.5) için Excel grafikleri sınıflardır. Ancak Excel.Chart.5 bağımlı değildir; bu, Excel sürüm 5.0 grafik nesnesi belirtir.
- Nesne için OLE_CREATE_EMBED Action özelliğini ayarlayarak oluşturun. Bu, varsayılan Excel'den bir grafik (Grafik1) OLE denetimi içine katıştırır. Grafik (Grafik1) içeren de varsayılan çalışma (veri sağlamak için Sheet1) grafik için bir varsayılan çalışma kitabını (Kitap1) bir parçasıdır.
- Nesne değişkenlerini, OLE Otomasyonu ile grafik işlemek için gereken <a1>Excel</a1> nesneleri için başvuracak biçimde ayarlayın. Kodunuzu bu daha küçük ve anlamak daha kolay hale getirir.
- Grafiği biçimlendirmek için Grafik Sihirbazı yöntemini çağırın.
Başvuru Excel nesneleri için nesne değişkenlerini ayarlama
OLE denetimi oluşturduğunuz nesnesine başvuru sağlamak için nesne özelliği sağlar. Örneğin, aşağıdaki kod oluşturur ve grafik OLE denetimi katıştırır ve daha sonra başlığını ayarlar:
Const OLE_CREATE_EMBED = 0
Ole1.Class = "Excel.Chart.5"
Ole1.Action = OLE_CREATE_EMBED
Ole1.Object.HasTitle = 1
Ole1.Object.ChartTitle.Caption = "Expenses"
her zaman nesne özelliğinden gidin, ancak hantal olacaktır. Kolaylaştırmak için <a0></a0>, istediğiniz nesneleri başvurmak için nesne değişkenlerini de ayarlayabilir. Değiştirilmiş bir sürümü önceki örnekle bir nesne değişkenlerini aşağıdadır:
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"
üç nesne değişkenlerini, bu makalenin sonunda gösterilen örnek kullanır:
- Bir grafiğe başvuru.
- Bir çalışma sayfasına başvuru.
- Bir uygulama nesnesine başvuru yapan.
Bir grafik biçimi için Grafik Sihirbazı yöntemi çağırma
Excel, grafiğe hızlı şekilde biçimlendirmek için <a0></a0>, Grafik Sihirbazı yöntemi sağlar. Grafik Sihirbazı yöntemine yap?lan bir ça?r?y? ile bir grafik, birçok önceden tanımlanmış biçimlerden birisinde oluşturabilirsiniz. Örneğin, bu yöntemi kullanır, ancak doğrudan nesne düzenleme grafiğin de kullanabilirsiniz.
Yöntem Grafik Sihirbazı'nı aramadan önce çalışma uygun verileri ile doldurulması gerekir. Bu örnek, rasgele verileri oluşturur. Çoğu zaman, işleyebileceğiniz daha anlamlı veri Excel'le kullanacaksınız. Bu örnekte, kategori etiketleri ve Seri etiketleri için bir sütun için 1 satır xlRows yönlendirmesini kullanılır. Nasıl, verileri çalışma sayfasına koymak gösteren bir diyagram aşağıdadır:
-----------------------------------------------------------
| | Category 1 Label | Category 2 Label |
-----------------------------------------------------------
| Series 1 Label | Data Value | Data Value |
-----------------------------------------------------------
| Series 2 Label | Data Value | Data Value |
-----------------------------------------------------------
| | | |
(etiketler dahil) verileri çalışma sayfasına eklenmiş once, tüm aralığı diğer biçimlendirme parametreleri ile birlikte <a1>Grafik Sihirbazı</a1> yöntemine geçirin.
Grafik Sihirbazı sözdizimi, Parametreler ve açıklamaları
Sözdizimi:
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.
için <a1>Grafik Sihirbazı</a1> yöntemi en önemli olan parametreler:
- PlotBy
- CategoryLabels
- SeriesLabels
Bu parametreleri ayarlanacak verilerinizi nasıl gittiği ya da belirlemek veya sahip olduğunuz verilerin sığması amacıyla başlatıldı.
Galeri ve biçim parametrelerini belirlemek için <a0></a0>, örneğin değiştirmek isteyebilirsiniz. Ayrıca, Excel'de Grafik Sihirbazı kullanımını kaydetmek ve kullanılan parametreleri'ne bakın.
Grafik Sihirbazı yöntemini çağıran uygulama ve nesne başvurularını kapatıyor sonra tüm bırakılır.
Adım adım örnek
- Yeni bir proje için Visual Basic'te başlatın. Varsayılan olarak, Form1 oluşturulur.
- Form1'e bir OLE 2.0 denetimi ekleyin ve Nesne Ekle iletişim kutusunda <a2>iptal</a2> düğmesini tıklatın.
- Bir KomutDüğmesi (Command1) Form1'e ekleyin.
- Yerine aşağıdaki kodu KomutDüğmesi olay'ı tıklatın.
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
- Projeyi kaydedin.
- Programı çalıştırmak ve Command1 düğmesini tıklatın. Ilk grafik oluşturulmalıdır.
- 15 Galerisi grafik türlerini biçim 1 arasında geçiş yapmak için Command1 düğmesi tutun.
NOTLAR
- OLE denetimindeki bir grafiği değiştirmek için <a0></a0>, size denetimi ilk fiil özelliği, -1 için (Düzenle) ayarı ve sonra işlemi ayarlama etkinleştirmelisiniz özelliği, 7 (OLE_ACTIVATE). Nesne özelliği, daha sonra etkin bir nesneye başvuruyor.
- Örnek biçim 1 ile Grafik Sihirbazı yöntemi kullanır. Diğer değerleri denemek isteyebilirsiniz.
- Grafik Sihirbazı</a0> yöntemini kullandıktan sonra nesneleri, yöntemleri ve grafik nesnesinin özelliklerini değiştirmek için kullanmaya devam edebilirsiniz.
- OLE denetimi çift tıklatarak veya sağ fare düğmesiyle tıklatıp açılır menüden düzen seçme grafiği düzenlemek kullanıcılar yükleyebilirler. OLE denetimi AutoActivate ve AutoVerbMenu özelliklerini ayarlayarak, bu beceriyi ortadan kaldırabilirsiniz.