CC: Excel 2010 Automation

29. Oktober 2010 13:40

Hallo zusammen,
wenn ich unten stehenden Code auführe wird zwar eine Excel Tabelle angelegt und auch eine Grafik gezeichnet allerdings erscheint auch folgende Fehlermeldung.

---------------------------
Microsoft Dynamics NAV Classic
---------------------------
Diese Meldung ist für C/AL-Programmierer:

Der Aufruf zum Member ChartWizard ist fehlgeschlagen. S gab die folgende Meldung zurück:
Dieses Objekt besitzt keinen Titel.

---------------------------
OK
---------------------------


Der Code stammt aus dem Solution Developer Kurs (8874) von Microsoft. Dieser Kurs ist allerding für NAV 5.

Kann mir jemand sagen wo der Fehler liegt? bzw wie ich dieFehlermeldung weg bekomme.



Variablen:
Code:
Name                 DataType     Subtype                                            Length
Customer             Record       Customer   
CustAmount           Record       Customer Amount   
Excel                Automation   'Microsoft Excel 14.0 Object Library'.Application   
Book                 Automation   'Microsoft Excel 14.0 Object Library'.Workbook   
Range                Automation   'Microsoft Excel 14.0 Object Library'.Range   
Sheet                Automation   'Microsoft Excel 14.0 Object Library'.Worksheet   
Chart                Automation   'Microsoft Excel 14.0 Object Library'.Chart   
CustFilter           Text                                                            250
CustDateFilter       Text                                                            30
j                    Text                                                            30
ShowType             Option      
NoOfRecordsToPrint   Integer      
i                    Integer      
MaxAmount            Decimal      


Code:
Code:
CustFilter := Customer.GETFILTERS;
CustDateFilter := Customer.GETFILTER("Date Filter");

i := 0;
CustAmount.DELETEALL;
//
CREATE(Excel);
Excel.Visible(TRUE);
Book := Excel.Workbooks.Add(-4167);
Sheet := Excel.ActiveSheet;
Sheet.Name := 'Top 10';

WITH Customer DO BEGIN
  REPEAT
    CALCFIELDS("Sales (LCY)","Balance (LCY)");
    IF ("Sales (LCY)" <> 0) OR ("Balance (LCY)" <> 0) THEN BEGIN
      CustAmount.INIT;
      CustAmount."Customer No." := "No.";
      IF ShowType = ShowType::"Sales (LCY)" THEN BEGIN
        CustAmount."Amount (LCY)" := - "Sales (LCY)";
        CustAmount."Amount 2 (LCY)" := - "Balance (LCY)";
      END ELSE BEGIN
        CustAmount."Amount (LCY)" := - "Balance (LCY)";
        CustAmount."Amount 2 (LCY)" := - "Sales (LCY)";
      END;
      CustAmount.INSERT;
      IF (NoOfRecordsToPrint = 0) OR (i < NoOfRecordsToPrint) THEN BEGIN
        i := i + 1;
      END ELSE BEGIN
        CustAmount.FIND('+');
        CustAmount.DELETE;
      END;
    END;
  UNTIL NEXT=0;
END;

Sheet.Range('A2').Value := 'No.';
Sheet.Range('B2').Value := 'Name';
Sheet.Range('C2').Value := 'Sales (LCY)';

IF CustAmount.FIND('-') THEN BEGIN
  j := '3';
  REPEAT
    Customer.SETRANGE("No.",CustAmount."Customer No.");
    Customer.FIND('-');
    Sheet.Range('A'+j).Value := CustAmount."Customer No.";
    Sheet.Range('B'+j).Value := Customer.Name;
    Sheet.Range('C'+j).Value := -CustAmount."Amount (LCY)";
    j := INCSTR(j);
  UNTIL CustAmount.NEXT = 0;
END;

Range := Sheet.Range('B3:C12');
Chart := Book.Charts.Add;
Chart.Name := 'Top 10 Customers - Graph';
//Chart.ChartWizard(Range,-4100,2,2,1,0,0,'Top 10 Customers','Customer','Sales (LCY)');
Chart.ChartWizard(Range,-4100,2,2,1,0,0,'test','test2','test3');
Zuletzt geändert von Chris Blank am 29. Oktober 2010 16:05, insgesamt 2-mal geändert.

Re: CC: Excel 2010 Automation

29. Oktober 2010 13:53

Evtl. hilft dir dieser Artikel weiter?

http://www.msdynamics.de/viewtopic.php?f=40&t=11274

mfg,
winfy

Re: CC: Excel 2010 Automation

29. Oktober 2010 14:10

Hallo,

hatte den Thread auch schon gelesen..ich nutze aus diesem Grund Testweise nur Lokale Variablen (Bei diesen tritt das Problem aus dem Thread nicht auf). Mein Problem ist aber ein anderes und lässt sic auf beschriebene weise leider nicht lösen.

Re: CC: Excel 2010 Automation

29. Oktober 2010 14:46

Vielleicht kamen bei 'Microsoft Excel 14.0 Object Library'.Chart für Chart.ChartWizard Parameter hinzu? :wink:
Ich sehe da schon mal 4 Title Bezeichnungen am Ende, in deinem Code waren nur 3.
Ich kann es leider nicht für dich testen, da ich die Library nicht drauf habe.

Chris Blank hat geschrieben:
Code:
Chart.ChartWizard(Range,-4100,2,2,1,0,0,'test','test2','test3');


Parameter
Source
Der Bereich, der die Quelldaten für das neue Diagramm enthält. Wenn dieses Argument ausgelassen wird, wird in Microsoft Office Excel das aktive Diagrammblatt oder das ausgewählte Chart-Steuerelement auf dem aktiven Arbeitsblatt bearbeitet.

Gallery
XlChartType. Der Diagrammtyp.

Format
Die Optionsnummer für die integrierten automatischen Formatierungen. Kann je nach Sammlungstyp eine Zahl von 1 bis 10 sein. Wenn dieses Argument ausgelassen wird, wählt Excel einen Standardwert auf Grundlage des Sammlungstyps und der Datenquelle.

PlotBy
Gibt an, ob die Daten für jede Reihe in Zeilen oder Spalten angeordnet werden. Kann eine der folgenden XlRowCol-Konstanten sein: xlRows oder xlColumns.

CategoryLabels
Eine ganze Zahl, die die Anzahl der Zeilen oder Spalten mit Rubrikenbeschriftungen im Quellbereich angibt. Gültige Werte sind von 0 (null) zur maximalen Anzahl der entsprechenden Kategorien oder Reihen minus eins.

SeriesLabels
Eine ganze Zahl, die die Anzahl der Zeilen oder Spalten mit Reihenbeschriftungen im Quellbereich angibt. Gültige Werte sind von 0 (null) zur maximalen Anzahl der entsprechenden Kategorien oder Reihen minus eins.

HasLegend
true, um eine Legende hinzuzufügen.

Title
Der Titeltext des Chart-Steuerelements.

CategoryTitle
Der Rubrikenachsentiteltext.

ValueTitle
Der Wertachsentiteltext

ExtraTitle
Der Reihenachsentitel für 3D-Diagramme oder der zweite Wertachsentitel für 2D-Diagramme.


http://msdn.microsoft.com/de-de/library/microsoft.office.tools.excel.chart.chartwizard(VS.80).aspx

mfg,
winfy

Re: CC: Excel 2010 Automation

29. Oktober 2010 15:29

Vielen Dank. Hatte das den letzten Parameter völlig übersehen. :oops:

Code:
Chart.ChartWizard(Range,-4103,2,2,1,0,0,'T1','T2','T3','T4');


:-D

Das erste von vermutlich 10000 Problem ist gelöst. :-?

Re: [gelöst]CC: Excel 2010 Automation

29. Oktober 2010 16:05

Wenn mir jetzt noch jemand Sagen kann warum ich den Diagramm Typ nicht ändern kann wäre ich echt Happy.
Egal welchen Gallery Code ich angebe es bleibt immer ein Balkendiagram
Ich habe die Codes von hier ausprobiert und mir auch schon die Codes mit hilfe von Macros ausgeben lassen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: CC: Excel 2010 Automation

29. Oktober 2010 16:40

Excel vorher auch beendet - sprich geschlossen?

Machst du nach dem Report ein
Code:
CLEAR(Excel);
?

mfg,
winfy

Re: CC: Excel 2010 Automation

29. Oktober 2010 16:42

winfy hat geschrieben:Machst du nach dem Report ein
Code:
CLEAR(Excel);
?


Ja mach ich. Hatte das oben irgendwie nicht dabei.
Falls es eine Rolle spielt: Es handelt sich nicht um einen Report sondern um eine CodeUnit.