我在尝试后期绑定到VBProject对象时遇到“运行时错误429”:
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 :(得分: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
在这两种情况下,您都可能通过宏安全设置http://support.microsoft.com/kb/282830获得“对Visual Basic项目的编程访问不受信任”。
我希望这能回答你的问题。
答案 1 :(得分:0)
你是从哪里得到那个progid(ActiveDocument.VBProject)?通常progid的形式为AppName.ObjectName,如Excel.Sheet或Word.Document。 IIRC,VB6不支持OLE自身;相反,它支持创建 OLE自动化服务器和客户端。
更新
好的,我知道现在发生了什么。 ActiveDocument.VBProject不是有效的progid。 ActiveDocument是Word.Application对象的一个属性,它有一个progid(惊喜!)“Word.Application”。
所以你想要Meringros回答。