2016-03-21 8 views
0

Ich bin gerade dabei, ein VBA-Programm in C# neu zu erstellen, und habe ein Problem beim Aktualisieren von Serie-Diagrammen festgestellt. Ich habe unglaublich viel Zeit in Google und Foren verbracht, um die Antwort auf mein Problem für mich selbst zu finden, aber ich kann es nicht herausfinden.Aktualisieren von Excel-Serie-Diagramm in C#

Ich möchte ein Seriendiagramm aktualisieren, um Daten aus einem Arbeitsblatt anzuzeigen, das sich nicht in dem Diagramm befindet, und den Bereich aktualisieren.

Wo mein Problem kommt, ist, dass C# beim Aktualisieren des Seriendiagramms nur einen Bereich akzeptiert. Der Bereich, den das Seriendiagramm erfordert, enthält jedoch einen Blattname, und ein Bereich kann keinen Text enthalten (also glaube ich). ein Beispiel für den Bereich, den ich neu erstellen muss, ist wie folgt;

=ANZ!$J$313:$J$737,ANZ!$M$313:$O$737 

Der Code, den ich zur Zeit habe, ist:

CloudAllTrialsDataPage = UpdateBook.Worksheets[CloudAllTrialsChartDataPage1]; 
LastRow = CloudAllTrialsDataPage.Range["J:J"].Find(StartDate, Type.Missing, XlFindLookIn.xlValues, XlLookAt.xlWhole, XlSearchOrder.xlByRows, XlSearchDirection.xlNext, Type.Missing, Type.Missing, Type.Missing).Row; 
FoundCell = CloudAllTrialsDataPage.Range["J:J"].Find(strDateLM, Type.Missing, XlFindLookIn.xlValues, XlLookAt.xlWhole, XlSearchOrder.xlByRows, XlSearchDirection.xlNext, Type.Missing, Type.Missing, Type.Missing).Row; 
Excel.Range Range1 = CloudAllTrialsDataPage.Range["J" + FoundCell + ":J" + LastRow]; 
Excel.Range Range2 = CloudAllTrialsDataPage.Range["M" + FoundCell + ":O" + LastRow]; 
Range DataRange = CloudAllTrialsDataPage.Range[Range1].Address + CloudAllTrialsDataPage.Range[Range2].Address; 
chartObject2 = CloudAllTrialsChartPage.ChartObjects(Type.Missing); 
myChart = (Excel.ChartObject)chartObject2.Item("Monthly2"); 
myChart.Chart.SetSourceData(DataRange); 

gesamte Code zieht korrekt und richtig funktioniert bis zu dem Punkt des Bereichs in das Diagramm einfügen. Ich habe verschiedene Problemumgehungen ausprobiert, bin aber immer auf das Problem gestoßen, den Blattnamen zum Bereich hinzuzufügen.

Jede Hilfe oder Hinweise würden am dankbarsten geschätzt.

Vielen Dank.

Haftungsausschluss: Ich bin ein Laie entschuldigen Sie mich, wenn einer meiner Begriffe "falsch" ist.

+0

Grammatische Hilfe war nicht ganz das, was ich suchte, aber "jeden Tag ist ein Schultag", wie sie sagen. – DDuffy

Antwort

0

OK. Also habe ich die zwei Probleme herausgefunden, die ich damit hatte.

1) Es hilft oft, wenn Sie das richtige Diagramm referenzieren.

2) Um die beiden separaten Bereiche in den Seriendiagrammbereich zu kombinieren, verwenden Sie get_Range. Wenn Sie die Variable als

setzen, wird ein Bereich erstellt, der zwei Bereiche enthält. Da der deklarierte Bereich nicht auf dem gleichen Blatt wie das Diagramm liegt, wird der Blattname automatisch ausgefüllt.

Der endgültige Code, auf den ich mich festgelegt habe, war;

Excel.Range chartRange; 
Excel.ChartObjects xlCharts = (Excel.ChartObjects)CloudAllTrialsChartPage.ChartObjects(Type.Missing); 
Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Item("DailyView"); 
Excel.Chart chartPage = myChart.Chart; 
chartRange = CloudAllTrialsDataPage.get_Range("J" + FoundCell + ":J" + LastRow + ",M" + FoundCell + ":O" + LastRow); 
chartPage.SetSourceData(chartRange, Missing.Value); 

Nur gehen Sie hier, falls jemand anderes es braucht. Es gibt überraschend wenig Ratschläge zur Aktualisierung von Serienkarten. (Das konnte ich finden.)

Verwandte Themen