如何找出当前的文档组件和代码模块部件

how do i find out the current document component and code module parts

提问人:Bender 提问时间:5/31/2023 最后编辑:Ken WhiteBender 更新时间:5/31/2023 访问量:51

问:

我正在尝试运行以下代码

Private Sub Document_Open()

    StringExecute ("MsgBox ""hello""")
        
End Sub
Sub StringExecute(s As String)
    Dim vbComp As Object
    Set vbComp = ThisDocument.VBProject.VBComponents.Add(1)
    vbComp.CodeModule.AddFromString "Sub foo()" & vbCrLf & s & vbCrLf & "End Sub"
    Application.Run vbComp.Name & ".foo"
    ThisWorkbook.VBProject.VBComponents.Remove vbComp
End Sub

问题是我无法弄清楚用什么来替换这个文档。我将要执行的代码用于将变量字符串转换为Access VBA中的命令。最终,我将在 Access 中打开 Microsoft Word,并将命令中的数据插入到 Word 书签中。

我得到的最常见的错误,或者至少是我能让它工作的最接近的错误,说该属性不受支持。最终,通过将此文档与我打算在我的情况下使用的 Word 文档的名称 (oapp) 交换,我已经非常接近了。然后我不得不在 vbproject 之后添加 .vbe。

这至少允许我通过设置的 vbcomp 行和 debug.print 建议 vbcomp 已将模块 1 设置为适当的模块。但是,当我点击application.run行时,它不会找到.foo子。当我手动搜索时,我找不到从字符串行添加的任何内容(我确实删除了最后一行,但没有任何区别)。

以下代码是我更改 vbcomp 以尝试到达某个地方的代码。

    Set vbComp = Oapp.VBE.VBProjects.VBE.ActiveVBProject.VBComponents.Add(1)
    Debug.Print "the name of vbcomp is " & vbComp.Name

问题似乎在于(除其他外,可能)代码试图用 word 重写模块,而不是在 access 中重写它。有谁知道如何在访问中引用相关的组件?

VBA MS-ACCESS-2010 变量赋值

评论

0赞 Tim Williams 5/31/2023
将有助于显示您尝试过的完整代码(例如上面的内容?Oapp
0赞 Andre 5/31/2023
这个 nolongerset.com/writing-code-with-code-in-vba 加上这个 stackoverflow.com/questions/51709628/......也许。
1赞 Kostas K. 5/31/2023
你无缘无故地通过动态创建代码模块然后删除它们来使事情复杂化。在 Access 中生成代码一次,然后从主应用调用它。代码应该保持不变,只是输入应该不同。

答: 暂无答案