2014-01-03 4 views
2

Вот мой код в Form1.vb:Алиас для Microsoft.Office.Interop.Word имен не recogized

Imports Word = Microsoft.Office.Interop.Word 

Public Class Form1 

Private Sub Button1_Click(ByVal sender As System.Object, _ 
    ByVal e As System.EventArgs) Handles Button1.Click 

    Dim oWord As Word.Application 
    Dim oWord1 As Microsoft.Office.Interop.Word.Application 
    Dim oWord2 as Application 

Я использую VStudio2012 и Office 2010 и после выборки из https://support.microsoft.com/kb/316383

The декларация oWord попадает на IntelliSense, как «Тип 'Word.Application' не определен,
в то время как oWord1 и oWord2 принимаются. Intellisense р rovides несколько вариантов исправления ошибок - два из которых я пробовал (oWord1 и oWord2) - другие варианты, похоже, не применяются.

Короче говоря, я смущен тем, почему использование псевдонима Word в выражении Imposspace не соответствует синтаксису Dim oWord As Word.Application, как описано в статье базы знаний. Есть ли какая-нибудь «мастер-ручка», чтобы включить диалог свойств проекта или что-то еще?

+1

Вы пытались переименовать свой псевдоним в нечто иное, чем последний лист пространства имен? Что-то вроде 'Импорт WD = Microsoft.Office.Interop.Word'? – Steve

+0

от того, что я вижу Импорт Word = Microsoft.Office.Interop.Word не существует объявления, ссылки на Microsoft.Office.Interop.Word в refrences, а затем объявить Импорт Microsoft.Office.Interop.Word – Jay

+0

Стив, я просто попробовал предложение. Оно работает. Итак, правильно ли я заключил, что псевдоним не может быть таким же, как «последний лист» пространства имен? По-видимому, это был прежний хороший синтаксис, но теперь это не так? Я могу жить с быстрым глобальным изменением кода из Word. к WD. но какие-то мысли о том, почему? –

ответ

0

Вам нужно будет добавить ссылку для импорта DLL для этого пространства имен. В Visual Studio 2012, в вашем проводнике решений щелкните правой кнопкой мыши по имени проекта> нажмите «Добавить ссылку»> Выберите «Ассембли»> «Расширения»> «Microsoft.Office.Interop.Word». Может быть несколько версий Interop Libraries (Office 2003, 2007, 2010 и т. Д.), Выберите подходящую.

Я считаю, что эти сборки изначально были установлены, когда вы устанавливаете Microsoft Office с DVD. Поэтому вам нужно будет установить Word, я верю.

Edit: это работает для меня, с Intellisense:

Imports Word = Microsoft.Office.Interop.Word 
Module Module1 
    Sub Main() 
     Dim oWord As Word.Application 
    End Sub 
End Module 
+0

Да, ссылка была первой, что я добавил в статью KB. Таким образом, была добавлена ​​библиотека объектов Microsoft Word 14.0; путь - C: \ Windows \ assembly \ GAC_MSIL \ Microsoft.Office.Interop.Word \ 14.0.0.0__71e9bce111e9429c \ Microsoft.Office.Interop.Word.dll –

+0

Хорошо, я думал, что это может легко решить. Если это полезно, я проверил ваш код на своем VS2012 с Office 2010, и «декларация oWord» работает для меня. Intellisense также работает. Я пытался умышленно испортить пространство имен, но я не мог заставить его реплицировать вашу проблему. – laylarenee

+2

@John: статья в KB о более старой версии .NET Framework и Office, в которой все было сделано по-другому. В VS 2012 вы, как правило, гарантируете, что вы нацелились на более позднюю структуру (4.0 или 4.5, я должен подумать), а затем вы выберите ссылку на Microsoft.Office.Interop.Word с вкладки .NET, а не на вкладку COM. Раньше у меня были очень запутанные результаты в том же духе, что и вы. –

0

Вместо 'Imports слова = Microsoft.Office.Interop.Word' Я 'Импорт Microsoft.Office.Interop' и он работал отлично

Смежные вопросы