Autor Thema: Excel-Netzdiagramm mit LotusScript erstellen  (Gelesen 8109 mal)

Offline LuckyNoob

  • Frischling
  • *
  • Beiträge: 17
Excel-Netzdiagramm mit LotusScript erstellen
« am: 28.08.17 - 14:09:19 »
Hallo Leute, ich habe ein kleine Problem und vielleicht könnt ihr mir helfen.
Ich möchte ein Netzdiagramm erstellen, komme aber irgendwie nicht weiter. Ich habe den ChartType für ein Netz gefunden.
https://msdn.microsoft.com/de-de/library/office/ff838409.aspx
Jedoch wird dies nicht angezeigt. Und meine Werte kommen auch nicht rein. Zu guter letzt erscheint zum Schluss die Fehlermeldung: OLE: Automation object error.

Vielleicht könnt ihr mir helfen. Das wäre echt super.

Hier ist mal der Code, mit welchem ich es schaffe, die Excel zu erzeugen, Daten reinzuschreiben und mein"unerwünschtes" Chart erzeugt:
Code
Sub GenerateExcelGraph(data As Variant, anzahl As Integer) 
	    ' data ist ein array(1 To 4) und ist für die Excel. 
	    ' Anzahl ist die Anzahl der untersuchten Dokumente. 
	On Error GoTo ErrHandler
	
	    ' Excel erzeugen
	Dim xlApp As Variant
	Dim xlSheet As Variant
	Dim xlOb As Variant
	
	Set xlApp = CreateObject("Excel.application")
	xlApp.Visible = True
	xlApp.Workbooks.add
	xlApp.ReferenceStyle = 2
	Set xlSheet = xlApp.Workbooks(1).Worksheets(1)
	xlSheet.Name = "Auswertung"
	
	    ' Überschrift
	xlApp.Rows("1:1").Select
	xlApp.Selection.Font.Bold = True
	xlApp.Range(xlSheet.Cells(1,1), xlSheet.Cells(1,5)).Select
	With xlApp.Selection.Interior
		.ColorIndex = 15
		.PatternColorIndex = 6
	End With
	
	    ' Überschrift der Spalten.
	xlApp.Rows("1:1").Select
	xlApp.Selection.Font.Bold = True
	xlApp.Range(xlSheet.Cells(4,1), xlSheet.Cells(4,4)).Select
	'xlApp.Selection.Font.Bold = True
	xlSheet.Range("A1").Value = "Auswertung des ausgewählten Dokuments zur DISG-Befragung"
	xlSheet.Range("A2").Value = "Anzahl der ausgewählten Dokumente: " & anzahl
	xlSheet.Range("A4").Value = "Dominant"
	xlSheet.Range("A5").Value = data(1) 
	xlSheet.Range("B4").Value = "Initiativ"
	xlSheet.Range("B5").Value = data(2)
	xlSheet.Range("C4").Value = "Stetig"
	xlSheet.Range("C5").Value = data(3)
	xlSheet.Range("D4").Value = "Gewissenhaft"
	xlSheet.Range("D5").Value = data(4)
	
	'Chart Informationen hinzufügen.
	Dim chartObject As Variant
	xlApp.Charts.add
	Set chartObject = xlApp.Charts("Chart1")
	chartObject.chartType = -4151
	chartObject.setSourceData(xlSheet.Range(xlSheet.Cells(5,1), xlSheet.Cells(5,4)))
	With chartObject
		.HasTitle = True
		.ChartTitle.Characters.Text = "Testing"
		.HasLegend = True
	End With
	
	'Referenzen zur Excel schließen
	Set xlSheet = Nothing
	Set xlApp = Nothing
	
	Exit Sub

ErrHandler:
	Print "Fehler " & Str(Err) & " mit der Meldung " & Error$ & " ist bei Zeile " & Str(Erl) & " aufgetreten."
	
End Sub

Vielen Dank für eure Hilfe
« Letzte Änderung: 29.08.17 - 07:28:09 von LuckyNoob »

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #1 am: 28.08.17 - 15:02:46 »
Wenn du die Code-Zeile, die den Fehler verursacht, nicht kennst, dann verwende bitte ein Errorhandling in Notes, das hilft ungemein. Ich Tippe mal auf diese Zeile:
Code
chartObject.setSourceData(xlSheet.Range(""))
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline LuckyNoob

  • Frischling
  • *
  • Beiträge: 17
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #2 am: 28.08.17 - 15:45:18 »
Hi, danke für den Tipp.
Ich habe den fehlenden Range oben hinzugefügt. Ich hoffe, dass ist richtig gesetzt.  ???
Leider bin ich irgendwie nicht schlauer aus meinem Problem geworden.

Er sagt mir nun, dass in Zeile 56 der Fehler wäre (Siehe Code)
Code
xlSheet.Range("A1").Value = "Auswertung des ausgewählten Dokuments"
Ich habe auch schon die Zeilen verschoben, um sicher zu gehen...

Zudem Öffnet er immernoch ein Balkendiagramm...  :'(

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #3 am: 28.08.17 - 15:47:16 »
Den Range kann auf 2 weege gesetzt werden., wie ist der erste gesetzt ?
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #4 am: 28.08.17 - 16:22:47 »
Er sagt mir nun, dass in Zeile 56 der Fehler wäre (Siehe Code)
das glaube ich nicht ;) denn in deinem Code ist das die Zeile 56:
Code
xlApp.Selection.Font.Bold = True
und diese liegt vor deiner genannten Zeile (Zeile 59).

Du musst im LS-Editor auf die Funktion klicken die den Fehler erzeugt hat, das zeigt dir dann die richtige Fehlerzeile an.
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline LuckyNoob

  • Frischling
  • *
  • Beiträge: 17
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #5 am: 29.08.17 - 07:34:43 »
Hallo,

ich habe mal oben den Code Editiert und den komplett aktuellen eingefügt. So wie er genau bei mir drin ist.
Ich bekomme laut Print folgenden Fehler:
Code
Fehler 213 mit der Meldung OLE: Automation object Error ist bei Zeile 50 aufgetreten

@ronka
Zitat
Den Range kann auf 2 weege gesetzt werden., wie ist der erste gesetzt ?
Ich habe den Range so gesetzt:
Code
chartObject.setSourceData(xlSheet.Range(xlSheet.Cells(5,1), xlSheet.Cells(5,4)))

@jBubbleBoy
Der Fehlercode ist nun bei mir genau in Zeile 50. Hab alles angepasst. Ihr könnt die Sub gerne einfach ausprobieren.
data kann z.b. so aussehen:
data(1) = 30
data(2) = 60
data(3) = 90
data(4) = 120
Sind nur Test Int Werte und anzahl = 1 z.b.

Es wäre genial, wenn ihr mir helfen könnte, das Netz-Diagramm zu erzeugen.
Ich habe mich schon ganz gut (m. M. :-D ) in LS reingearbeitet aber es kommen doch ab und zu harte Probleme  ::)

Viele Grüße

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #6 am: 29.08.17 - 07:56:47 »
Schalte mal den Debugger ein und gehe von Zeile zu Zeile, dann siehst Du, wo es genau hakt.

Und wenn es denn wirklich die Zeile 50 ist, also irgendwo in diesem Bereich

With chartObject
   .HasTitle = True
   .ChartTitle.Characters.Text = "Testing"
   .HasLegend = True
End With

dann kommentier das erst einmal aus, damit es überhaupt funktioniert. Danach kümmerst du Dich darum.

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #7 am: 29.08.17 - 08:08:36 »
Ich musste noch xlApp.Charts("Chart1") in xlApp.Charts(1) ändern, aber dann lief der Code ohne Probleme :)

Welche Excel-Version hast du denn?
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline LuckyNoob

  • Frischling
  • *
  • Beiträge: 17
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #8 am: 29.08.17 - 09:50:57 »
Leute, ihr seid die größten!

Da lag der Fehler:
Code
xlApp.Charts("Chart1") in xlApp.Charts(1)

Dort hätte ich wahrscheinlich nie geschaut. Vielen Dank an euch alle für die super Hilfe.

Viele Grüße
« Letzte Änderung: 29.08.17 - 10:05:00 von LuckyNoob »

Offline LuckyNoob

  • Frischling
  • *
  • Beiträge: 17
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #9 am: 29.08.17 - 10:38:23 »
Ihr wisst nicht zufällig, wie man noch die Achsen beschriftet? In meinem Beispiel schreibt LS 1,2,3,4 ran. Ich möchte aber gerne diese Beschriften und die Achsenlänge festlegen.

Ich habe es schon damit versucht, aber das funktioniert auch nicht:
Code
With chartObject
		.HasTitle = True
		.ChartTitle.Characters.Text = "DISG - Netzdiagramm"
		.HasLegend = True
		.Axes(1,1).HasTitle = True
		.Axes(1,1).AxisTitle.Characters.Text = "Test"
	End With

Zudem habe ich festgestellt, dass LS "xlValue" und Co. nicht kennt. Hier habe ich eine Liste gefunden, welche die Cons Werte angeben.
http://www-10.lotus.com/ldd/nd6forum.nsf/DateAllFlatweb/fd49ba0380299fbc8525798800653fa5
Könnt ihr mir hier helfen, was eventuell falsch ist?

Vielen Dank schon mal

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #10 am: 29.08.17 - 15:57:17 »
Wenn ich Konstante von Excel oder Word nicht kenne, baue ich in Excel/Word ein Macro mit

Msgbox Konstante

und starte das Macro, dann wird mir der Wert ausgegeben.

Offline LuckyNoob

  • Frischling
  • *
  • Beiträge: 17
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #11 am: 30.08.17 - 07:49:01 »
Hallo Peter Klett,

erstmal Danke für den Tipp. Am Anfang hab ich mich über diese Info, sagen wir mal, "gewundert". Aber nach einer kurzen Recherche bezüglich Excel Makros habe ich mein aktuelles Diagramm mithilfe einer Makroaufzeichnung bearbeitet und mir im Anschluss den Code angeschaut.
Danke für den Tipp. Das hat mich gleich mal im LS - VBA - Excel Verständnis weit voran getrieben.

Es funktioniert! Für die Achsenbezeichnung habe ich einfach die genutzte Range verändert. Im Anschluss daran konnte ich durch die kurze Ausgabe von xlValue durch deinen Tipp sehen, dass der Wert 2 ist. Bezüglich des Links mit dem Werten... wissen ist gut, lieber selber noch einmal überprüfen ist besser  ::)

Hier der Code von meiner Anpassung:
Code
chartObject.setSourceData(xlSheet.Range(xlSheet.Cells(4,1), xlSheet.Cells(5,4)))
	With chartObject
		.HasTitle = True
		.ChartTitle.Characters.Text = "Netzdiagramm"
		.Axes(2).MaximumScale = 140
		.Axes(2).MajorUnit = 20
		.Axes(2).MinorUnit = 4
		.Axes(2).MinimumScale = 0
	End With

@jBubbleBoy
Zitat
Welche Excel-Version hast du denn?
Ich habe Excel 2010.

Viele Grüße
« Letzte Änderung: 30.08.17 - 07:55:04 von LuckyNoob »

Offline LuckyNoob

  • Frischling
  • *
  • Beiträge: 17
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #12 am: 01.11.17 - 14:18:27 »
Hallo Leute, könnt ihr mir weiterhelfen?
Wie übersetze ich folgenden VBA Code in LotusScript?
Ich möchte ein Diagramm erstellen und zwar auf eine bestimmte Position. Hier ist der VBA Code aus Excel. LS sagt mir beim "Source:=" einen Fehler... -_-
Code
Range("B9:F9").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlPie
    ActiveChart.SetSourceData Source:=Range( _
        "'Auswertung der Befragung'!$B$9:$F$9")

Hier ist mein VBA versuch, ein Diagramm zu verschieben. Also ähnlich wie das hier drüber:
Code
ActiveChart.SeriesCollection(1).Select
    ActiveChart.SeriesCollection(1).Points(1).Select
    ActiveChart.ChartArea.Select
    ActiveChart.Location Where:=xlLocationAsObject, Name:= _
        "Auswertung der Befragung"

Könnt ihr mir helfen?

Viele Grüße

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #13 am: 01.11.17 - 15:03:54 »
Schau dir bitte deine vorherigen Beiträge an, hier zeigst du uns wie man Excel-SetSourceData richtig verwendet.
Arbeitsblatt-Referenzen funktionieren in Notes ohne Anführungszeichen.
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline LuckyNoob

  • Frischling
  • *
  • Beiträge: 17
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #14 am: 01.11.17 - 15:21:10 »
Da gibt es nichts weiter zu sagen ...  :-[
Man bin ich blöde....
Und dabei liegt der Code auch die ganze Zeit vor mir.

Offline LuckyNoob

  • Frischling
  • *
  • Beiträge: 17
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #15 am: 01.11.17 - 16:19:29 »
Vielleicht könnt ihr mir wieder den richtigen Tritt verpassen...  ;)
Wie kann ich die Legende bearbeiten (Bezeichnungen hinzufügen)?

VBA wirft folgendes aus:
Code
ActiveChart.SeriesCollection(1).XValues = _
        "='Name des Arbeitsblattes'!Z5S2:Z5S6"

Habe mir auch gedacht, dass ich einen Range zurückgeben muss:
Code
Set sc = chartObject.SeriesCollection
sc(1).XValues(xlSheet.Range(xlSheet.Cells(5,2), xlSheet.Cells(5,6)))
Aber das funzt auch nicht.

Ich hoffe, ihr könnt mir da nochmal helfen.
« Letzte Änderung: 02.11.17 - 07:48:01 von LuckyNoob »

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #16 am: 01.11.17 - 16:27:29 »
Ist dein "sc" ein Array oder eine Klassenvariable? Versuch das mal:
Code
Set sc = chartObject.SeriesCollection(1)
sc.XValues(xlSheet.Range(xlSheet.Cells(5,2), xlSheet.Cells(5,6)))
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline LuckyNoob

  • Frischling
  • *
  • Beiträge: 17
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #17 am: 02.11.17 - 07:52:46 »
Hallo,

leider bekomme ich beim folgenden Code
Code
Set sc = chartObject.SeriesCollection(1)
sc.XValues(xlSheet.Range(xlSheet.Cells(5,2), xlSheet.Cells(5,6)))

die Fehlermeldung: Automation object member not found

Nun folgende Fehlermeldung:
Code
Automation object error

Hier mal mein Code für das Diagramm, damit man besser sehen kann, was ich überhaupt machen will, bzw. wie alles aussieht:
Code
Const xlLocationAsObject = 2
Dim chartObject As Variant
	xlApp.Charts.add
	Set chartObject       = xlApp.Charts(1)
	chartObject.chartType = xlPie
	chartObject.setSourceData(xlSheet.Range(xlSheet.Cells(6 + i, 2), xlSheet.Cells(6 + i ,6)))
	chartObject.ApplyLayout(6) ' Kreisdiagramm mit % Anzeige in den jeweiligen Teilen
	With chartObject
		.HasTitle                   = True
		.ChartTitle.Characters.Text = "Ergebnis"
	End With
	
       chartObject.Location xlLocationAsObject, "Arbeitsblatt"

	Set sc = chartObject.SeriesCollection(1)
	sc.XValues(xlSheet.Range(xlSheet.Cells(5,2), xlSheet.Cells(5,6)))

Wie gesagt, ich möchte gerne noch die Legende einfügen.
Wenn die Spaltenüberschrift über den jeweiligen Werten wäre, dann ist das kein Problem. Jedoch beziehe ich die Werte aus tieferen Zeilen und somit muss ich halt extra im Nachgang die Spaltenüberschrift als Diagrammlegende eintragen.


EDIT:
Ich habe erst einmal eine Zwischenlösung gefunden.
Beim setzen der setSourceData gebe ich dem Range neben den eigentlichen Werten zusätzlich die "Überschriften".
Code
chartObject.setSourceData(xlSheet.Range("'Ergebnis'!$B$5:$F$9:;'Ergebnis'!$B$9:$F$9"))

Trotzdem würde ich gerne die Beschriftung nachträglich ändern können.
Ich hoffe, ihr könnt da helfen.
« Letzte Änderung: 02.11.17 - 09:33:33 von LuckyNoob »

Offline LuckyNoob

  • Frischling
  • *
  • Beiträge: 17
Re: Excel-Netzdiagramm mit LotusScript erstellen
« Antwort #18 am: 02.11.17 - 16:12:24 »
Ich habe leider noch eine kleine Frage...  ???
kann man ein Diagramm via LS auch eine feste Position zuordnen bzw. an eine Zelle etc. binden?

Vielen Dank und viele Grüße

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz