我收到“运行时错误429”在我企图在后期绑定到VBProject对象:
Dim vbProj As Object
Set vbProj = CreateObject("ActiveDocument.VBProject")
有一些基本的东西我不理解?
例如,你怎么会写在代码的文章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
丹尼斯,
如果你是从内部运行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项目的编程访问不受信任”,它通过宏安全设置解决, http://support.microsoft.com/kb/282830 。
我希望这回答了你的问题。
你从哪儿拿出那个进程id(ActiveDocument.VBProject)? 一般来说PROGID的是形式AppName.ObjectName的,如Excel.Sheet和Word.Document。 IIRC,VB6不支持OLE自动化本身; 相反,它支持创建 OLE自动化服务器和客户端。
更新:
好吧,我现在看到发生了什么事情。 ActiveDocument.VBProject不是有效的进程id。 是的ActiveDocument Word.Application对象,其中有一个ProgID的属性(惊喜!)“Word.Application”。
所以,你要Meringros答案。