Excel-DNA / ExcelDna

Excel-DNA - Free and easy .NET for Excel. This repository contains the core Excel-DNA library.
https://excel-dna.net
zlib License
1.26k stars 270 forks source link

ExcelDNA get file name #659

Open alex314159265358 opened 6 months ago

alex314159265358 commented 6 months ago

Dear ExcelDNA team,

Excel add-in is creating and ExcelDNA is being used. In custom function, I am trying to get name of calling file.

The code works, but it takes a long time to execute.

Code:

public string Method()
{
    var reference = (ExcelReference) XlCall.Excel(XlCall.xlfCaller);
    var sheetName = (string) XlCall.Excel(XlCall.xlSheetNm, reference);

    var path1 = XlCall.Excel(XlCall.xlfGetDocument, 2, sheetName);
    var path2 = XlCall.Excel(XlCall.xlfGetDocument, 88, sheetName);

    if (path1 is string && path2 is string)
    {
        var pStr1 = path1.ToString();
        var pStr2 = MethodUsingApplication(path2.ToString());

        // ...
    }

   // ...
}

private string MethodUsingApplication(string raw)
{
    try
    {
        var fullName = _app?.Workbooks[raw]?.FullName;
        return Path.GetFileName(fullName);
    }
    catch (Exception ex)
    {
        // ...
        return raw;
    }
}

Questions:

  1. Are there potential disadvantages to this code implementation?
  2. Are there any alternatives to this code?

Versions: Excel: 2311 (Build 17029.20108) ExcelDNA: 1.6.0 .NET: .NET Framework 4.8

Thanks in advance