Domino 9 und frühere Versionen > ND6: Entwicklung
Exceldiagramm mit Notes erstellen
Big768:
Hallo Ihr Lieben,
ich habe folgendes Problem:
ich möchte mit Notes ein Exceldiagramm erstellen. Dafür habe ich folgendes Programm geschrieben das auch funktioniert:
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As notesdocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Dim object As NotesEmbeddedObject
Dim xlApp As Variant
Dim oWorkbook As Variant
uidoc.EditMode = True
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
Set oworkbook = xlApp.Workbooks
oworkbook.Add
xlApp.cells(2,1) = "Fehler1"
xlApp.cells(3,1) = "Fehler2"
xlApp.cells(4,1) = "Fehlersumme"
xlApp.cells(5,1) = "Verbrauch"
xlApp.cells(1,2) = "A"
xlApp.cells(2,2) = 4
xlApp.cells(3,2) = 3
xlApp.cells(4,2) = 7
xlApp.cells(5,2) = 70
xlApp.cells(1,3) = "B"
xlApp.cells(2,3) = 3
xlApp.cells(3,3) = 2
xlApp.cells(4,3) = 5
xlApp.cells(5,3) = 50
xlApp.Range("A1:C5").Select
xlApp.Charts.Add
' xlApp.ActiveChart.ChartType = xlColumnClustered
' xlApp.ActiveChart.SetSourceData (Source=Sheets(ActiveChart).Range("A1:D5"), PlotBy=xlRows).select
xlChartType = 51
xlLocationAsObject = 2
With xlApp.ActiveWorkbook.ActiveChart
.Name = "Trend Chart"
.HasTitle = True
.HasLegend = False
.ChartTitle.Text = "Vergleich: "
.ChartType = xlChartType
.PlotArea.Interior.ColorIndex = "0"
.Location xlLocationAsObject , "Trend Chart"
End With
xlApp.ActiveSheet.ChartObjects("Chart 1").Activate
xlApp.ActiveChart.ChartArea.Select
xlApp.ActiveChart.ChartArea.Copy
'change chart dimensions
xlApp.ActiveSheet.Shapes("Chart 1").ScaleWidth 1.50, msoFalse, msoScaleFromTopLeft
xlApp.ActiveSheet.Shapes("Chart 1").ScaleHeight 1.24, msoFalse, msoScaleFromTopLeft
xlApp.ActiveSheet.Shapes("Diagramm 1").IncrementLeft -183
xlApp.ActiveSheet.Shapes("Diagramm 1").IncrementTop -122.25
xlApp.ActiveSheet.ChartObjects("Diagramm 1").Activate
xlApp.ActiveChart.ChartArea.Select
xlApp.ActiveChart.HasDataTable = True
xlApp.ActiveChart.DataTable.ShowLegendKey = True
xlApp.ActiveChart.DataTable.font.size = 8
xlApp.ActiveChart.SeriesCollection(1).Interior.ColorIndex = 32
xlApp.ActiveChart.ChartGroups(1).GapWidth = 10
xlApp.ActiveChart.SeriesCollection(1).Interior.ColorIndex = 27
xlApp.ActiveChart.SeriesCollection(2).Interior.ColorIndex = 32
Call uidoc.GotoField( "Chart" )
Call uidocpm.refresh
doc.art = "vorab"
Call doc.Save( True, True )
xlApp.activeworkbook.saveas "C:\Test.xls"
xlApp.activeworkbook.close
Call xlApp.Quit ;D
Das Problem ist, dass er nun das Diagramm nach der Spalte erzeugt. Es soll aber nach der Zeile erzeugt werden. Deshalb füge ich die Zeile:
xlApp.ActiveChart.SetSourceData (Source=Sheets(ActiveChart).Range("A1:D5"), PlotBy=xlRows).select ???
ein die ich oben deaktiviert habe. Wenn ich nun Versuche die Maske zu speichern erhalte ich folgende Fehlermeldung:
"Illegal parenthesize reference: SHEETS" ???
Was mache ich falsch.
Ich gebe auch zu, dass ich in VBA so gut wie keine Ahnung habe.
Für Eure Hilfe wäre ich Euch trotzdem dankbar.
Johann
Axel:
Was sofort ins Auge fällt, du kannst in LotusScript bie der Parameterübergabe keine = - Zeichen verwenden.
Du musst die Zeile in folgender Form einfügen:
xlApp.ActiveChart.SetSourceData (Sheets(ActiveChart).Range("A1:D5"), xlRows).select
Axel
PS:
--- Zitat von: Big768 am 21.11.06 - 18:06:13 ---Ich gebe auch zu, dass ich in VBA so gut wie keine Ahnung habe.
--- Ende Zitat ---
Wenn du solche Lösungen programmieren willst/musst, kommst du ohne VBA-Kenntnisse aber nicht sehr weit. Die solltest du dir dringend aneignen. Sonst stehst du bei der nächsten Fehlermeldung wieder auf dem Schlauch.
Big768:
Hallo Axel,
vielen Dank für die Hilfe, aber es klappt noch nicht.
Hat noch jemand einen Tipp?
Danke im voraus.
Johann
Johnson:
Hi,
Wenn du in VBA einen Macro aufzeichnest, wirst du feststellen, daß einige Objekte bereits zur Verfügung stehnen. Das liegt daran, daß VBA bereits weiß, worauf du dich beziehst.
Die Variable Sheets in einem VBA Modul gibt dir dann auch das Sheets-Objekt der Arbeitsmappe (Workbook) zurück, in der das Modul auch enthalten ist.
z.B.
--- Code: ---Sub MakroX
MsgBox Sheets.Item(1).Name
End Sub
--- Ende Code ---
In LS musst du erst spezifizieren, von welcher Arbeitsmappe du das Sheets-Objekt haben möchtest.
z.B.
Messagebox xlApp.ActiveWorkbook.Sheets.Item(1).Name
Also....
xlApp.ActiveChart.SetSourceData (xlApp.ActiveWorkbook.Sheets(ActiveChart).Range("A1:D5"), PlotBy=xlRows).select
Aber mal noch ne Frage was sollte denn "Sheets(ActiveChart)" zurück geben? Denn das wird so auch nicht tun (kann ich mir nicht vorstellen).
Gruß
Johnson
Big768:
Hallo,
"Aber mal noch ne Frage was sollte denn "Sheets(ActiveChart)" zurück geben? Denn das wird so auch nicht tun (kann ich mir nicht vorstellen)."
Es handelt sich dabei um ein bestehendes Programm, dass auch funktioniert. Nun habe wir in der Exceltabelle eine zusätzliche Zeile eingefügt. Nun wird das Diagramm nicht mehr nach Zeilen, sondern nach Spalten erzeugt. Den gleichen Effekt erreichst Du auch, wenn Du mit der Rechten Maustaste auf das Diagramm klickst, dann auf Datenquelle, Reiter Datenbereich, Reihe in "Zeilen / Spalten" anklickst.
Das ganze will ich nun über das Script erreichen.
Gruß
Johann
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln