XlCall.Excel(XlCall.xlfCaller)を介して参照している特定のセルにフォーカスを強制したいと思います。VSTOでこれを行う方法を知っていますが、ExcelDNAでこれを行う方法はありますか?
5097 次
2 に答える
2
1つの方法は、VBAまたはVSTOの場合と同様に、COM自動化インターフェイスを使用することです。Application
取得したオブジェクトをExcelDnaUtil.Application
ルートとして使用してください。ExcelReference
受信したからxlfCaller
COMオブジェクトに変換するには、次のことを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 に答える