Справочная проблема в VB.net - PullRequest
0 голосов
/ 24 ноября 2011

В моей программе я использую Microsoft Word 12.0 Object Library для автоматизации Word, и в моей системе установлен Office2007. Если я запакую этот проект и дам его покупателю, это вызовет какие-то проблемы?

На компьютере моего клиента должен быть установлен Office 2007 для работы моей программы? Что будет, если у него будет только Office2003? Если возникла какая-либо проблема, каков правильный метод ее решения или динамического изменения ссылки на 11.0 Object Library?

Когда я выбрал «Моя ссылка» в окне свойств проекта, в нем перечислены три ссылки:

Microsoft Office 12.0 Object Library --> vpp\obj\x86\Debug\Interop.Microsoft.Office.Core.dll
Microsoft Visual Basic for Applications Extensibility 5.3 --> vpp\obj\x86\Debug\Interop.VBIDE.dll
Microsoft Word 12.0 Object Library --> vpp\obj\x86\Debug\Interop.Microsoft.Office.Interop.Word.dll

Эти три библиотеки находятся в моей папке отладки. Так это будет работать на компьютере моего клиента?

1 Ответ

1 голос
/ 24 ноября 2011

Если вы используете раннее связывание, вы можете получить ошибку, описанную в Версия сборки Microsoft.Office.Interop.Word выше, чем указанная (это пример C #, но в VB он будет выглядеть аналогично).

О различиях между поздним и ранним связыванием вы можете прочитать в Привязка для серверов автоматизации Office с Visual C # .NET (все еще примеры C #) и Использование раннего и позднего связывания в автоматизации описывает, как это сделать в VB.

Код может выглядеть следующим образом (пример из VBA - Word - Открыть Word с использованием позднего связывания ):

Sub LaunchWord()
Dim objApp As Object

    'See if Word is already running
    On Error Resume Next
    Set objApp = GetObject(, "Word.Application")

    If Err.Number <> 0 Then
        'Launch a new instance of Word
        Err.Clear
        On Error GoTo Error_Handler
        Set objApp = CreateObject("Word.Application")
        objApp.Visible = True 'Make the application visible to the user (if wanted)
    End If

Exit Sub

Error_Handler:
    MsgBox "MS Access has generated the following error" & vbCrLf & vbCrLf & "Error Number: " & _
    Err.Number & vbCrLf & "Error Source: LaunchWord" & vbCrLf & "Error Description: " & _
    Err.Description, vbCritical, "An Error has Occured!"
    Exit Sub
End Sub

Добавлено:

«Позднее связывание» означает «отсутствие intellisense», поэтому обратите внимание на Воспользуйтесь Intellisense при написании кода с поздним связыванием .

...