2009-12-02 4 views
1

Я получаю «Ошибка выполнения 429» в моей попытке в конце привязки к объекту VBProject:Позднее связывание объекта в VBA

Dim vbProj As Object 
Set vbProj = CreateObject("ActiveDocument.VBProject") 

есть нечто фундаментальное я не в состоянии понять?

Например, как бы вы написать код в article 308340 использовать позднее связывание ?:

Sub CheckReference() 

     Dim vbProj As VBProject 
     Set vbProj = ActiveDocument.VBProject 

     For Each chkRef In vbProj.References 

      If chkRef.IsBroken Then 
      Debug.Print chkRef.Name 
      End If 

     Next 

    End Sub 
+0

Ссылка, которую вы отправили, никуда не денется. Работает ли ранняя версия привязки для вас? Если нет, то проблема не в вашем коде, это в вашей системе. –

+0

Я исправил ссылку на статью. – CoderDennis

ответ

0

Где вы придумали, что ProgID (ActiveDocument.VBProject)? Обычно progid имеют вид AppName.ObjectName, как в Excel.Sheet или Word.Document. IIRC, VB6 не поддерживает автоматизацию OLE; скорее, он поддерживает , создавая серверы и клиенты OLE Automation.

Update:

Хорошо, я вижу, что происходит сейчас. ActiveDocument.VBProject не является допустимой прогидой. ActiveDocument является свойством объекта Word.Application, который имеет progid (сюрприз!) «Word.Application».

Итак, вы хотите, чтобы Meringros ответил.

+0

Вместо добавления библиотеки «Microsoft Visual Basic для расширяемости приложений 5.3» во время разработки мне нужно, чтобы это выполнялось во время выполнения. Я собираюсь добавить некоторые важные изменения в свой вопрос. – JohnZaj

4

Деннис,

, если вы работаете в этом изнутри Word, то вам не нужно использовать CreateObject().

Установить vbProj = ActiveDocument.VBProject будет работать.

, если вы работаете в этом из других источников, то вам, возможно, потребуется создать объект Word, первый и загрузить документ:

Dim a As Object 
    Dim vbProj As Object 

    Set a = CreateObject("Word.Application") 
    a.Documents.Open "C:\temp\test1.docx" 
    MsgBox a.Documents.Count 
    Set vbProj = a.ActiveDocument.VBProject 

В обоих случаях вы можете получить «Программный доступ к проекту Visual Basic не является доверенным », который разрешает настройки безопасности Macro, http://support.microsoft.com/kb/282830.

Надеюсь, это ответит на ваш вопрос.

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