2008-10-01 66 views
1

當前正在開發的應用程序具有使用MS Word對應用程序中的某些textareas執行拼寫檢查的要求。VB.Net將MS Word自動化以進行拼寫檢查功能

我目前有Office 2007(這是Office 12 com對象)。

我的問題是,如果我在Office 12中添加Office對象,會發生什麼?這是關於其他開發箱以及最終用戶。

我相信最終的結果是這些用戶不能使用拼寫功能嗎?如果我使用了Office 11對象,這意味着如果用戶安裝了Office 07,用戶將無法執行拼寫檢查?

回答

1

我們放棄嘗試使用對Word的依賴關係,因爲它們都安裝了不同的版本,或者根本沒有安裝Office!而是選擇NetSpell

0

我在這裏猜測,但如果是因爲你不能在2003安裝中使用2007 PIA(Primary Interop Assembly),你可以嘗試通過反射來訪問PIA,因爲我猜想你想要的呼叫贏得'兩者之間沒有任何變化,那麼它就無關緊要 - 您將使用安裝的任何一個。如果你正在安裝PIA,那麼你可以讓用戶告訴你他們有哪些,或者更聰明一點,只是嘗試2007年,如果失敗,嘗試2003年。

就像我說的,我在這裏猜測,但它可能值得一試。

編輯:我發現這個link關於Office PIA的。這是指Excel,但實際上涵蓋了Office。我不羨慕你的任務。看起來您需要檢測PIA(可能安裝或未安裝)並採取相應措施。聽起來像是一件反思我的工作。

0

較新版本的Office將保留大多數(如果不是全部)與舊版COM對象的兼容性。這意味着如果您想針對Office 2003和2007進行編程,則需要將Office 11 COM對象用作依賴項,因爲它們是2003年發佈時的最新版本。只要您驗證所需的方法存在於兩個COM對象版本中,只要您使用較舊的COM對象,就應該沒有問題。

不幸的是,雖然我已經爲自己的工作使用了這個解決方案,但我還沒有使用拼寫檢查進行測試。最後,請確保您使用要與之集成的所有Office版本測試您的代碼。

0

我對這個問題的直覺反應是,只是建議你去另一條路線。嘗試使用第三方拼寫檢查控件。他們相對便宜(你可能會發現一些免費的控件)。至少你可以通過這種方式來控制應用程序中包含的控件的版本,並且可以依靠它的功能。坦率地說,我很驚訝這個庫已經不是Windows內置的。當然,Windows支持的所有語言都很複雜,但現在它與用戶期望的複製/粘貼類似。

0

實際上,您可以打包office11和office12 interop工作所需的兩個版本。這需要一些小的工作,但我設法做到了。我在註冊表中進行檢查,看看哪個interop調用,然後用正確的版本執行拼寫檢查。它甚至可以檢查您是否安裝了Word,並引發一個錯誤提示,說明您無法在沒有Word的情況下進行拼寫檢查。由於與我們需要使用的Office捆綁在一起的醫療字典,我們與使用Word相關聯。

在interop或Com包裝上進行搜索,我想你會發現你可以很容易地使用它們。