1

次のスニペットの正しい呼び出しは何ですか

// これは例外をスローします

Excel.Range range = worksheet.get_Range("A3", "B4");
myChart.SetSourceData(range.ToString(), Excel.XlRowCol.xlColumns); // Throws an 

// スローされた例外

Exception Source:      Microsoft.Office.Interop.PowerPoint
Exception Type:        System.Runtime.InteropServices.COMException
Exception Message:     Error HRESULT E_FAIL has been returned from a 
call to a COM component.
Exception Target Site: SetSourceData

-------------------------------------------------- -----------

// これはコンパイルされません

myChart.SetSourceData(range, Excel.XlRowCol.xlColumns);

// コンパイル エラー

1>  error CS1502: The best overloaded method match for 'Microsoft.Office.Interop.
PowerPoint.Chart.SetSourceData(string, object)' has some invalid arguments
1>  error CS1503: Argument 1: cannot convert from 
'Microsoft.Office.Interop.Excel.Range' to 'string'
4

3 に答える 3

1

SetSourceDataは、Excel ライブラリのメソッドを使用しているか、PowerPoint などの別のライブラリのメソッドを使用しているかによって、まったく異なる方法で動作します。

Sub SetSourceData(Source As Range , [PlotBy]) Excel.Chart のメンバー

Sub SetSourceData(Source As String , [PlotBy]) PowerPoint.Chart のメンバー

PowerPoint モデルでは、メソッドは、ソース データを含むグラフ データ範囲のアドレスを保持する文字列を期待しています!

https://msdn.microsoft.com/en-us/library/office/ff746759.aspx?f=255&MSPPError=-2147217396

2 つの異なる MSO オブジェクト モデルで 2 つの異なる方法で動作する同じメソッド。さすがマイクロソフト!

于 2015-03-06T09:29:52.623 に答える
0

これは実際にはかなり奇妙です。ほとんどのドキュメントでは、最初の範囲パラメーターを範囲オブジェクトとして定義していますが、これは実際には文字列として渡す必要があります

wdChart.SetSourceData("Sheet1!$A$1:$B$4", oMissing); 
于 2013-03-20T19:26:08.927 に答える
0

私はこれがうまくいくと思います:

myChart.SetSourceData(dataSheet.Name + "!" + dataSheet.UsedRange.Address, Excel.XlRowCol.xlColumns);

更新: データシート名を取得することが重要です。シート全体ではなく特定の範囲を選択する必要がある場合は、 dataSheet.UsedRange を範囲に置き換えます。これが必要で、テストしました。出来た。

于 2014-04-17T09:49:17.957 に答える