gpt4 book ai didi

excel - Application.Run 不会将参数传递给不同 .docm 模板中的宏,但可以在 VBA 模块中使用

转载 作者:行者123 更新时间:2023-12-04 15:21:27 24 4
gpt4 key购买 nike

我在两个单独的 .docm 文件中有两个宏,并且想从另一个调用一个。如果我没有传递参数,那么使用这个......

Sub MySub()
RunStr = "'" & filePath & fileName & "' !HiStr"
Application.Run RunStr
End Sub
...可以很好地启动包含在单独的 .docm 文件中的此宏...
Sub HiStr()
Debug.Print "Hello" & aStr
End Sub
但是,如果我想将 MySub 中的参数传递给 HiStr,如下所示:
Sub MySub()
RunStr = "'" & filePath & fileName & "' !HiStr"
Application.Run RunStr, " World" ' <----- Argument passed
End Sub
到外部宏编号 2:
Sub HiStr(Optional aStr As String)   ' <---- Accepting argument
Debug.Print "Hello" & aStr
End Sub
我得到运行时错误“438”:对象不支持此属性或方法。 FWIW,它从与 HiStr 相同的模块中运行此代码可以正常工作:
Sub InModule()
Application.Run "HiStr", " darkness, my old friend."
End Sub
尝试但不起作用的事情 (并不是我期望他们中的许多人):
  • 根本不发送可选参数(相反,我得到一个运行时错误和“无法运行指定的宏”,即使参数应该是可选的)
  • 删除 Optional使参数不是可选的(与上面相同的“438”错误)
  • ! 之间添加模块名称和 HiStr (即 !Module1.HiStr 有效且与上述不同)
  • 添加 global aStr as String在 HiStr 模块内的子(声明中)之外
  • 保存&关闭&重新打开文件
  • 去掉文件名周围的单引号(没有它们,VBA 根本找不到宏)
  • 替换 !HiStr!HiStr(' World')而是尝试传递参数(运行时错误)
  • 将整个宏逐字复制到 HiStr 子模块内部(情节变厚了,所以在传递参数时使用 application.run "'filename\file.docm' !macro'"application.run "macro" 必须有所不同?但是什么?)
  • documentation (我没有尝试通过 Excel VBA 运行它,但我怀疑 Application.Run 的工作方式相同)
  • 使用 Application.Run 阅读其他人的问题
  • 最佳答案

    显然,你面临的问题是一个已知的数量,并且已经有一段时间了。看this thread .
    当然,那里提供的解决方案需要打开其他文档。但是,由于您拥有该文档的全名和地址,因此只要需要,您就可以轻松地在后台打开它。

    关于excel - Application.Run 不会将参数传递给不同 .docm 模板中的宏,但可以在 VBA 模块中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63200191/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com