2016-03-21 15 views
0

C#でVBAプログラムを再作成している途中で、シリーズチャートを更新中に問題が発生しました。私は自分自身のために私の問題への答えを見つけるために探しているGoogleやフォーラムで驚くほどの時間を費やしましたが、それを理解しているようには見えません。C#でExcel Series Chartを更新する

私が探しているのは、チャートが配置されていないワークシートからデータを見るためにシリーズチャートを更新し、その範囲を更新することです。

私の問題は、シリーズチャートを更新するときにC#が範囲を受け入れるということです。しかし、Seriesチャートに必要な範囲にはシート名が含まれており、範囲にはテキストを含めることはできません(私は信じるように誘導されています)。 私が再作成する必要がある範囲の例は次のとおりです。

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

私は現在持っているコードは次のとおりです。

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); 

コードのすべてが正しく引き出し、右のグラフに範囲を挿入する時点まで動作します。私はさまざまな回避策を試しましたが、常に範囲にシート名を追加しようとする問題にぶち当たっています。

何か助けや指導をいただければ幸いです。

ありがとうございます。

免責事項:私は慣れ親しんでいるので、私の用語が「間違っている」と言えばよろしいですか?

+0

文法援助は、私が探していたものではなく、「毎日の学校の日」というものです。 – DDuffy

答えて

0

OK。だから、私はこれで2つの問題を理解しました。

1)右のグラフを参照している場合に役立ちます。

2)2つの別々の範囲をシリーズチャート範囲に結合するには、get_Rangeを使用します。変数を次のように設定すると、

Excel.Range ChartRange = datapage.get_Range("A1:A6","C1:C6"); 

これは2つの範囲を含む範囲を作成します。宣言された範囲がチャートと同じシートにないので、シート名は自動的に記入されます。

最終的なコードは決まっていました。

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); 

他の誰かが必要とする場合に備えて、このままにしておきます。利用可能なシリーズチャートの更新に関する驚くほどのアドバイスはありません。 (私が見つけることができた)

関連する問題