1

XlCall.Excel(XlCall.xlfCaller)を介して参照している特定のセルにフォーカスを強制したいと思います。VSTOでこれを行う方法を知っていますが、ExcelDNAでこれを行う方法はありますか?

4

2 に答える 2

2

1つの方法は、VBAまたはVSTOの場合と同様に、COM自動化インターフェイスを使用することです。Application取得したオブジェクトをExcelDnaUtil.Applicationルートとして使用してください。ExcelReference受信したからxlfCallerCOMオブジェクトに変換するには、次のことをRange試してください(これはVB.NETバージョンです)。

Private Function ReferenceToRange(ByVal xlRef As ExcelReference) As Object 
     Dim strAddress As String = XlCall.Excel(XlCall.xlfReftext, xlRef, True) 
     ReferenceToRange = ExcelDnaUtil.Application.Range(strAddress) 
End Function 

C APIを使い続けたい場合は、最初に適切なシートを選択してから、実際のセルを選択する必要があります。だからあなたは持っているかもしれません:

string myCellSheet = (string)XlCall.Excel(XlCall.xlSheetNm, myCell);
XlCall.Excel(XlCall.xlcWorkbookSelect, new object[] { myCellSheet });
XlCall.Excel(XlCall.xlcFormulaGoto, myCell);

ワークシート関数で選択を変更することはできないので、マクロまたはリボンハンドラーからこれを呼び出していると思います。

于 2013-02-04T20:11:47.763 に答える
2

ExcelDNAで行うことが可能です:

var activeCell = new ExcelReference(5, 5);
ExcelAsyncUtil.QueueAsMacro(() => XlCall.Excel(XlCall.xlcSelect, activeCell));

「ExcelAsyncUtil.QueueAsMacro」はスキップできます。これは、Excelコマンドを呼び出すコンテキストによって異なります。別のExcel関数から呼び出す場合は、QueueAsMacroでラップする必要があります

于 2013-04-26T13:06:43.500 に答える