Hallo,
ich automatisiere gerade in einem Programm ein Excelfile in vb.net (2003).
Importieren, Expotieren, Diagramm erstellen usw. geht alles prima.
Doch nun möchte ich noch Dinge (hauptsächlich am Diagramm) verändern, wo es keine Tutorials mehr im Netz zu geben scheint.
Hier ist erstmal mein Programm (nur der Teil beim erstellen des Diagramms, der interessiert ):
(Den Teil habe ich von diesem Link: http://www.codeproject.com/office/Excel_Automation.asp)
Dim oChart As Excel.Chart
Dim MyCharts As Excel.ChartObjects
Dim MyCharts1 As Excel.ChartObject
MyCharts = oExcelArbeitsblatt.ChartObjects
'setzt Diagrammposition:
MyCharts1 = MyCharts.Add(150, 300, 400, 250)
oChart = MyCharts1.Chart
'falls das Diagramm an einer default position sein soll die nächste
' Zeile verwenden:
oChart.Location(Excel.XlChartLocation.xlLocationAsObject, _
oExcelArbeitsblatt.Name)
With oChart
'wählt die zu benutzenden Daten aus:
Dim chartRange As Excel.Range
chartRange = oExcelArbeitsblatt.Range("P20", "U50")
.SetSourceData(chartRange)
'setzt ob die Spalten oder Zeilen als Diagramm geseichnet werten
' sollen:
.PlotBy = Excel.XlRowCol.xlColumns
'ob datalables verwendet werden sollen:
.ApplyDataLabels(Excel.XlDataLabelsType.xlDataLabelsShowNone)
'soll eine Legendeangezeigt werden?:
.HasLegend = True
'Position der Legende:
.Legend.Position = Excel.XlLegendPosition.xlLegendPositionBottom
'DiagrammTyp:
.ChartType = Excel.XlChartType.xlLine
'Diagrammtitel:
.HasTitle = True
.ChartTitle.Text = "Abweichung Übertragungsmaß"
'legt die Namen der Axen und kategorien fest:
Dim xlAxisCategory, xlAxisValue As Excel.Axes
xlAxisCategory = CType(oChart.Axes(, Excel.XlAxisGroup.xlPrimary), _
Excel.Axes)
xlAxisCategory.Item(Excel.XlAxisType.xlCategory).HasTitle = True
xlAxisCategory.Item( _
Excel.XlAxisType.xlCategory).AxisTitle.Characters.Text = _
"Frequenz in Hz"
xlAxisValue = CType(oChart.Axes(, Excel.XlAxisGroup.xlPrimary), _
Excel.Axes)
xlAxisValue.Item(Excel.XlAxisType.xlValue).HasTitle = True
xlAxisValue.Item( _
Excel.XlAxisType.xlValue).AxisTitle.Characters.Text = "Abweichung" & _
"in dB"
End With Das funktioniert alles prima, auch wenn ich nicht verstehe oder nicht nachvollziehen kann wie er die Achsen anders beschriftet hat.
Jetzt will ich noch, dass das Diagramm keinen grauen Hintergrund hat sondern einen weißen.
Um zu sehen welche eigenschaften da überhaupt angewendet wurden, habe ich zuerst ein Excelmakro aufgezeichnet. Folgendes hat Excel mir da ausgespuckt:
With Selection.Border
.Color Index = 16
.Weight = xlThin
.LineStyle = xlContinuous
End With
With Selection.Interior
.Color Index = 2
.PatternColorIndex = 1
.Pattern = xlSolid
End With Für vb.net kann man das ja jetzt leider nicht einfach so übernehmen ..oder?
Dann habe ich es versucht es den Achsen nachzuvollziehen (nur am Beispiel Borders):
Dim xlBorder As Excel.Borders
xlBorder.ColorIndex = 16
'xlBorder.Weight = xlThick
'xlBorder.LineStyle = xlContinuous
End With Hier sagt er aber, dass es keine Eigenschaft xlThick usw.. gibt.
Jetzt kann ich zwar bei den Verweisen in der Projektmappe und dann im Objektbrowser unter:
Interop.Excel--> Excel--> Borders--> LineStyle() As Object sehen, dass es diese Eigenschaft gibt, aber nicht welche Eigenschaften diese Objekt annehmen kann.
Wie bekomme ich diese Eigenschaften heraus?
Und die nächste Frage ist, wie kann man diesem Code beibringen, das es die Border von meinem gemeinten Chart is (ich habe schon bei den Axen nicht verstamden, wo ich mein Chart meine?)
Im Msdn habe ich auch nix dazu gefunden.
http://msdn2.microsoft.com/de-de/library/microsoft.office.tools.excel.chart_members(VS.80).aspx
In der Chartklasse gibt es keine Border...
Hat jemand einen tollen Link, oder kann mir sein vorgehen erklären, wie er an so eine Frage herangeht? Vielleicht ist meine gesamte Vorgehensweise falsch.
Gibt es irgendwo eine komplette Sammlung der Excelbefehle (klar msdn aber ich meine auch verständlich?)
Bitte gebt mir Hilfe zur Selbsthilfe , ich hoffe ihr konntet mein Problem verstehen.
Gruß Thoto |