2011-08-17 90 views
4

我使用VSTO模板(VS2010,Excel2007)創建了一個Excel Addin。 在解決方案資源管理器中,我有一個名爲Excel的組,並在其下創建一個名爲ExcelAddIn.cs的文件。這有權訪問活動工作表通過代碼如使用VSTO在C#類文件中訪問Excel工作表

public partial class MyAddIn 
{ 
    Excel.Worksheet activeWorksheet = (Excel.Worksheet)Application.Activesheet; 
    Excel.Range firstRow = activeWorksheet.get_Range("A1",missing); 
} 

等此代碼工作正常,即。我可以得到Excel模型。

但是,我不想將所有的處理代碼放在這個類文件中,而是想處理另一個類文件中的Excel工作表數據。我創建了這個文件,但無法使用上面的代碼,例如。我似乎無法從此文件訪問Excel模型。 我已經重複了「使用Microsoft.Office.Tools.Excel」引用,但投入一行:

Excel.Worksheet activeWorksheet = (Excel.Worksheet)Application.Activesheet; 

給了我一個「名字‘應用程序’在目前情況下不存在」錯誤。

關於從這個單獨的類文件獲取Excel模型需要做什麼參考/更改的任何想法?

btw。有效的文件是指第一個代碼行的「Excel.Application」對象,第二個不起作用的單獨文件是指「Microsoft.Office.Interop.Excel」對象。

感謝 皮特

==== FOUND答案==== 讓你從工作表添加其他類中的方法是簡單地訪問

Globals.ThisAddIn.Application.ActiveSheet; 

例如:

Excel.Worksheet ws = (Excel.Worksheet)Globals.ThisAddin.Application.ActiveSheet; 

其中'ThisAddIn'是嚮導創建的類的名稱(您可能已將其重命名)。

因此,使用Globals來獲取您的Excel對象在ThisAddin代碼之外。

+0

如果有人可以將答案代碼粘貼到答案部分,問題已關閉!我不能 - 太多的初級漢堡包在這裏.Pete – Pete855217 2011-08-17 14:03:01

回答

6

你自己的答案在這裏:

讓你的工作表從您添加其他類中的方法是簡單地訪問

Globals.ThisAddIn.Application.ActiveSheet; 

例如:

Excel.Worksheet ws = (Excel.Worksheet)Globals.ThisAddin.Application.ActiveSheet; 

其中 '的ThisAddIn'是嚮導創建的類的名稱(您可能已將其重命名)。

因此,使用Globals來獲取您的Excel對象在ThisAddin代碼之外。

0

這可能是因爲應用程序只存在於Excel可執行文件運行時?請記住,Addins是專門爲此設計的,並且可以在背景中使用「特殊醬」,以便與Office類互動。

我不認爲你可以從另一個類中調用Application.Activesheet,因爲你調用的類完全不知道應用程序的存在。

我意識到我可能會漫步一點點,我希望一些有意義之:)

總之,沒有我不相信你可以調用Application.Activesheet這樣,除非也許你通過了「應用程序'對象通過構造函數在你的類實例中。

即。

MyClass c = new MyClass(this.Application); 

...

public class MyClass 
{ 
    public MyClass(Application app) 
    { 
     // And from here manipulate the Application object (just be sure you've added the reference to the namespace that the Application object uses) 
    } 

} 

林不知道,如果這樣做的工作,雖然我不現在有我的虛擬機啓動了:)

祝你好運!

+0

感謝Adam G.我認爲你已經到了這裏。我想知道人們通常在這種情況下做什麼,因爲我無法想象他們會將所有的處理代碼限制在添加的類中,但我可能會錯誤的....會嘗試一些傳遞,看看它是如何去。再次感謝Pete – Pete855217 2011-08-17 13:55:14

相關問題