Kiru Marimuthu
Guest
|
Hi
We are using RTD server in Excel 2016 which polls data from RestAPI. When there is HTTP error from RestAPI we are showing the modal error dialog message in the custom task pane.
When there is two excel workbook open, the messages are shown in both the windows.
How do I uniquely identify each excel window and show the message?
Thanks |
|
Andrei Smolin
Add-in Express team
Posts: 18821
Joined: 2006-05-11
|
Hello Kiru,
You can wrap your RTD server call in an XLL call: see section Inserting the RTD function in a user-friendly way at https://www.add-in-express.com/docs/net-excel-udf-tips.php#advanced-rtd. In this case, you can determine the caller cell: see section Determining the cell, worksheet or workbook your UDF is called from on that page. When the caller cell is known, you show the pane in the Excel window containing that cell. Note however that the user may open the same workbook in two or more windows; in this scenario you can show the pane in the active window or in all of them.
Andrei Smolin
Add-in Express Team Leader |
|
Kiru Marimuthu
Guest
|
Hi Andrei
Thank for earlier response. Unfortunately, the CallWorksheetFunction doesn't return ADXExcelRef.
Here is the code we got
var result = Module.CallWorksheetFunction(ADXExcelWorksheetFunction.Rtd,
"ExcelAddinExpress.RTDMetrics", "", "SecurityData",
securityId, securityType, metrics, direction,
aggregation, bucket, Math.Abs(dateFrom.ToOADate()) > 0 ? dateFrom.ToString("yyyy-MM-dd") : "",
filter);
//initial value, errors
if (result.Equals("#FetchingData") ||
result.Equals(ADXExcelError.xlErrorNull) ||
result.Equals(ADXExcelError.xlErrorNA) ||
result.Equals(ADXExcelError.xlErrorValue))
{
//logger.Info($"************************ Result {result}");
return result;
}
//dlm value
double answer;
if (double.TryParse(result.ToString(), out answer))
{
return answer;
}
The possible return values are "FetchingData", "ADXExcelError" or any valid decimal values.
Thanks |
|
Andrei Smolin
Add-in Express team
Posts: 18821
Joined: 2006-05-11
|
You should issue a separate ADXXLLModule.CallWorksheetFunction call to get the caller cell:
ADXExcelRef caller = Module.CallWorksheetFunction(ADXExcelWorksheetFunction.Caller) as ADXExcelRef;
Andrei Smolin
Add-in Express Team Leader |
|