-1

我試圖創建一個Excel(2007)加載,將數據透視表的更改使用此代碼作出迴應,:如何從ExcelDna部署.dna文件?

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
{ 
    Excel.Worksheet sh = this.Application.ActiveSheet; 

    sh.PivotTableUpdate += new 
Excel.DocEvents_PivotTableUpdateEventHandler(sh_PivotTableUpdate); 
} 

void sh_PivotTableUpdate(Excel.PivotTable TargetPivotTable) 
{ 
    MessageBox.Show("sh_PivotTableUpdate event fired"); 
} 
private void ThisAddIn_Shutdown(object sender, System.EventArgs e) 
{ 
} 

一旦.dll文件創建,部署它/生成.xll文件成爲挑戰;我使用this post作爲指導,現在有一個.xll文件。

我能夠將此添加到我想要響應代碼的Excel電子表格(.xlsx文件)(通過文件> Excel選項>加載項>去...>瀏覽),但得到這個錯誤味精添加.xll文件:

enter image description here

我沒有看到有一個*。DNA這裏提交\包\ ExcelDna.AddIn.0.33.9 \內容\ ExcelDna-Template.dna

...但製作該文件的副本並將其名稱更改爲[projectName] .dna(Excel2010AddInForRptRunner-AddIn.dna),然後將其複製到與.xll文件相同的位置.xlsx文件不是解決方案(不是雙關語意思)。手動更改數據透視表不會觸發事件/我看不到「sh_PivotTableUpdate事件觸發」消息。

的。DNA文件確實引用了該.dll像這樣:

<ExternalLibrary Path="Excel2010AddInForRptRunner.dll" LoadFromBytes="true" Pack="true" /> 

那麼做我需要做什麼來解決這個錯誤消息我弄到了.xll文件由電子表格來接受這樣它的代碼將運行並且PivotTableUpdate事件處理程序被觸發?

+1

你應該忽視你的鏈接地址 - 建議重命名軟件包目錄中的文件不正確。 'ExcelDna.AddIn' NuGet包自動設置你需要的所有東西。 – Govert

回答

0

有兩個問題,我在你的摘要中看到:

首先,你似乎已經混合VSTO辦公室的東西用Excel-DNA(我看到這從​​代碼,它涉及到VSTO) 。它們根本不混合 - 你不能在VSTO插件項目中使用Excel-DNA。任何以Microsoft.Office.Tools...開頭的名稱空間都表示存在問題。這可能發生在您開始使用「Office加載項」或「Excel加載項」作爲項目類型。

您的項目中還有一些與NuGet包相關的問題 - 某種程度上,輸出文件位於軟件包目錄中,或者軟件包目錄已被覆蓋或以某種方式更改。你不應該有下packages\...

有史以來編輯任何內容,如果一切正常,那麼您有興趣將在bin\Debugbin\Release項目目錄下找到該文件。通常,您只能重新分配單個...-AddIn-packed.xll文件(如果需要,也可以重命名)。

我建議你製作一個新的「類庫」項目(不是Office加載項或類似的東西),然後再次安裝ExcelDna.AddIn包。然後按照彈出的ReadMe文件中的說明使用一個UDF函數製作一個簡單的加載項,並檢查它是否運行並且可以正確調試和部署。

後你有完美的工作,您可以通過以下兩個步驟合併訪問COM對象模型到您的外接:

  • 添加對Excel互操作程序集的引用(Microsoft.Office.Interop.ExcelOffice) ,直接通過「添加引用」,或者從NuGet安裝ExcelDna.Interop程序集。

  • 通過調用ExcelDnaUtil.Application來獲取根對象Application。返回的對象可以被轉換爲Microsoft.Office.Interop.Excel.Application和用於獲取從那裏整個COM對象模型,以及掛鉤的事件處理程序等