На какую сборку взаимодействия Microsoft Word (и Excel) или DLL следует ссылаться? - PullRequest
2 голосов
/ 07 марта 2011

Я использую VB.NET и .NET 3.5 framework.

Я пытаюсь автоматизировать Word и Excel, используя соответствующие им PIA для получения справки по intellisense, (поскольку у пользователей нетУстановленные сборки PIA / библиотеки DLL) удалите ссылки, чтобы они работали как вызов COM-объекта, не выдавая ошибку.

Я нашел эту статью: http://msdn.microsoft.com/en-us/library/15s06t57.aspx, но на самом деле это не помогает мнекакую версию сборки / DLL мне следует использовать.Когда я иду, чтобы добавить ссылку, я вижу что-то вроде этого:

first pane

затем

Second pane

затем

third pane

Обратите внимание, что все эти выделенные звуки похожи друг на друга, и существует несколько версий сборки.Ссылка, с которой я начал, предлагает имя библиотеки DLL в соответствии с версией продукта (например, WORD version 12 --- Microsoft.Office.Interop.Word.dll), но не говорит, что версия изПИА сборка.Итак, как узнать, какой из них использовать?

И лучший вопрос: почему это не OBVIOUS где-нибудь?Все, что я хочу, это чтобы Microsoft сказала «эй, вы хотите автоматизировать слияние почты с Word 2007? Используйте [вставить значимое имя DLL здесь (сборка PIA или« инструменты »?»]). Кстати, вы можете получить эту DLL здесь [«здесь» гиперссылка на нужную мне загрузку]. Работа с компьютерами, на которых могут быть установлены версии 2007 или 2010? Убедитесь, что у вас есть обе библиотеки DLL (если это так), и вот как вы это тестируете: [вставьте полезнуюпример].

(например, «Для Word 14 (например, Word 2010) используйте Microsoft.Office.Interop.Word DLL версии 12.0.0.0» (так ли это? Я не знаю.)) Это должно быть очевидно , и это не так.

Может быть, очевидно? Версия DLL такая же, как версияпрограмма? (т. е. Microsoft.Office.Interop.Word DLL версия 12.0.0.0 =? = WORD версия 12)

Возможно, я слишком обдумываю это, но для меня это все еще не очевидно. Я будурад, если вы сможете ответить на первый вопрос, но если вы сможете объяснить оба, это будет лучше.

Ответы [ 4 ]

4 голосов
/ 09 марта 2011

Билли в основном ответил на ваш вопрос

Office 2010 = 14.x.x.x

Office 2007 = 12.x.x.x

Office 2003 = 11.x.x.x

Office xp = 10.x.x.x

До этого не было никаких PIA, поэтому вам нужно было бы сделать свою собственную.

1 голос
/ 07 марта 2011

Существует множество способов снять шкуру с кошки, известную как «как я узнаю, какой объект делает Х».

  1. используйте браузер объектов и ищите нужные методы.
  2. Кодируйте его, а затем добавляйте сборки по одной - медленно и неэффективно, но это работает

Что касается определения конкретных битов, у Microsoft MSDN, Support и т. Д. Есть ресурсы. Для слияния, например, я нашел это: http://support.microsoft.com/kb/301659

Довольно просто следовать ссылкам на код, если проблема заключается в слиянии почты.

Что касается комментария «почему это где-то не очевидно»: объекты Word довольно хорошо задокументированы. Возможно, не до того уровня, на котором вы хотите автоматизировать Intellisense, но это крайний случай, ИМО. Я программировал .NET Framework еще до релиза 1.0, и у меня еще не было бизнес-обоснования того, что вы делаете. Я также не знаю никого, кто имел этот тип бизнес-кейса. Следуя правилу 80/20, я не удивляюсь, что на этом упражнении нет руки ... или даже полной документации.

1 голос
/ 07 марта 2011

Это в документации, например, DocumentClass :

Пространство имен: Microsoft.Office.Interop.Word
Сборка: Microsoft.Office.Interop.Word (в Microsoft.office.interop.word.dll)

Если у него есть какие-либо зависимости от других сборок, то он должен добавить их сам по себе, или он может попросить вас добавить их во время выполнения.

Я не уверен, что есть определенное руководство по выбору, но я бы выбрал

  • самую старую версию Microsoft.Office.Interop.Word, которая включает в себя все необходимые функции, так что высовместимы с максимально возможным количеством версий Word
  • предпочитают сборки, собранные с правильной версией .NET - я видел проблемы с сборками 1.1 против 4.0 (хотя не Interop сборок), но я думаю, что вообще 1.1 с 2.0 (= Версия исполнения 3.5 под крышками) должна быть в порядке.
1 голос
/ 07 марта 2011

Используйте браузер классов, чтобы увидеть, предоставляет ли добавляемая вами DLL нужную вам функциональность (точно так же, как вы делаете для все остальные ссылки, которые вы когда-либо добавляете .

, почему это так?где-то не ОБЯЗАТЕЛЬНО?

Итак, вы хотите все, что вы когда-либо могли создать с офисной интеграцией, задокументированной где-нибудь? Это не имеет смысла!

...