Anbei ein kleines funktionierendes Beispiel, das Werte eines Notes-Dokuments in einem in Excel erstellten Diagramm innerhalb des gleichen Notes-Dokuments anzeigt.
Schritt 1 in Excel:
Man erstellt eine Exceltabelle mit einer (oder mehreren) Zahlenreihen (in meinem Beispiel zwei Zahlen in den Zellen A1 und A2).
Anschließend erstellt man ein Diagramm in Excel, das die Zahlenreihen wie gewünscht anzeigt.
In meinem Beispiel speichere ich die Datei als Vorlage auf der Festplatte, in einem produktiven Umfeld würde ich die Datei in einem Richtextfeld eines Einstellungsdokuments anhängen und zur Laufzeit auf die Platte schreiben (idealerweise ins Tempverzeichnis) und anschließend wieder löschen.
Schritt 2 in Notes:
In Notes erstellt man eine Maske mit den Feldern, deren Inhalt im Diagramm angezeigt werden soll (hier Wert1 und Wert2).
Weiterhin wird ein Richtextfeld benötigt, in das das Diagramm abgelegt werden soll. Das Feld habe ich "Diagramm" genannt, es muss bearbeitbar sein.
Im Querysave habe ich folgende Routine eingefügt, die die Daten in Excel schreibt und das Diagramm in das Richtextfeld übernimmt. Natürlich sollte die Routine nur ausgeführt werden, wenn sich die Werte geändert haben, aber das habe ich zur Übersichtlichkeit weggelassen.
Sub Querysave(Source As Notesuidocument, Continue As Variant)
'Dateiname der Musterdatei
Const exceldatei = "c:\export\diagramm.xls"
'Temporärer Dateiname zum Speichern
Const exceldatei2 = "c:\export\diagramm2.xls"
'Das aktuelle Dokument
Dim doc As NotesDocument
Set doc = Source.Document
'Excel unsichtbar starten, Musterdatei öffnen
Dim excel As Variant
Set excel = CreateObject ("Excel.Application")
excel.Application.Visible = False
excel.Workbooks.Open (exceldatei)
'Werte in Exceltabelle aktualisieren
excel.Range ("A1").Select
excel.ActiveCell.FormulaR1C1 = doc.Wert1 (0)
excel.Range ("A2").Select
excel.ActiveCell.FormulaR1C1 = doc.Wert2 (0)
'Diagramm in die Zwischenablage kopieren
excel.ActiveSheet.ChartObjects ("Diagramm 1").Activate
excel.ActiveChart.ChartArea.Select
excel.ActiveChart.ChartArea.Copy
'Diagramm in Richtextfeld einfügen, vorher alles markieren, um bisherigen Inhalt zu löschen
Call Source.GoToField ("Diagramm")
Call Source.SelectAll
Call Source.Paste
'Excel speichern, schließen, temporäre Datei löschen
Call excel.Save (exceldatei2)
Call excel.Application.Quit
Kill exceldatei2
End Sub