2009-08-12 134 views
1

我有一個使用XML擴展包爲Microsoft Word添加功能的項目。目前,當我們給客戶的文檔打開時,它會加載我們的包,該包執行SmartDocInitialize方法,該方法使用Microsoft.Office.Core.CommandBar.Controls.Add等向主菜單和工具欄添加內容。沒有修改,在Word 2007中打開時,這些按鈕將添加到加載項功能區選項卡上,但這並不理想,因爲按鈕都很小,沒有正確分組,並且無法將加載項選項卡文檔加載時的前端。以編程方式將功能區添加到Microsoft Word 2007

如果在Office 2003中打開文檔,我想保持此功能不變,但如果在Office 2007中打開該文檔,我希望讀入一個xml文件,其中描述了我的新功能區選項卡以及所有按鈕。我已經能夠在網上找到的所有東西似乎只會導致功能區文件只有在你有一個非常具體的魔法組合的情況下才能加載(在Visual Studio中生成並且可以工作,但沒有關於如何將它部署到用戶的信息框),並且只有當您擁有最初使用Office屬性的Visual Studio工具創建的整個項目時纔有效,我目前沒有這些工具。

我們的開發環境是XP,Visual Studio 2005中,C#,.NET 2.0

回答

2

Ribbon UI的就是不如舊的CommandBars UI作爲程序化。我認爲你不能做你想做的事。據我所知,編程方式修改功能區UI的唯一方法是讓(COM)加載項實現IRibbonExtensibility接口,並從GetCustomUI方法返回一個自定義XML文件(使用Ribbon定義)。無法像使用CommandBars UI一樣一次添加或刪除一個按鈕。它完全不同。我不相信你可以通過文檔中的某些宏來做你想做的。

我對XML擴展包並不熟悉,但是如果您必須將它們安裝在用戶的PC上,也許您可​​以安裝一個加載項,以便爲您加載相應的功能區XML。

+0

我所見過的所有關於COM加載項的內容都說它們是以應用程序加載的,而不是基於每個文檔。不幸的是,我不能這樣處理。我已經想出瞭如何在每個文檔基礎上添加功能區,但通過這種方式,onAction函數似乎必須是VBA宏,而且我很難弄清楚如何讓我的VBA宏調用我在C#中的事件處理程序。如果您對此有所瞭解,請爲此問題添加一個答案:http://stackoverflow.com/questions/1288717/is-it-possible-to-call-c-dlls-from-visual-basic-code-contained -in-a-word-2007-fi – 2009-08-18 14:06:24

+0

我的猜測是你必須讓.NET類COM以某種方式可見到VBA(這是COM基礎)可以看到並與他們一起工作。這是我的專長之外。 – 2009-08-18 15:05:53

+0

我找到了。僅供參考。 https://social.msdn.microsoft。com/Forums/office/zh-CN/ddf4a3fe-16af-440d-9697-9a3bf53b52c3/customize-microsoft-word-2007-in-cnet-windows-application-using-microsoftofficeinteropword?forum = worddev 我想不可能。 .. – 2017-10-23 14:01:10

0

這並不像看起來那麼難。

如果你已經將你的功能區按鈕連接到文檔中的某些VBA宏,那麼你只需要在你的VBA項目中添加一個引用到你的com可見.net程序集。

.net程序集除了被標記爲com可見(因此它顯示爲引用對話框中的類型庫)之外,必須具有一些可從VBA調用的方法。

谷歌「VBA .NET調用」

它並不難,標誌類作爲COM可見,與一個ProgID屬性聲明它,使公衆的方法,確保您的方法返回簡單類型,並使用regasm註冊裝配在目標機器上(開發箱上不需要)。

相關問題