[英]Get return value of Word macro function called from Excel macro
我正在做一个 Excel 宏来获取 Word 文件的第一个表(基本上是表的标题)之前的第一段的文本。
我的 Excel 宏如下:
Sub Main()
Set applicationWord = CreateObject("Word.Application")
Set documentWord = applicationWord.Documents.Open(Filename:="C:\Users\...\my_word.docm", ReadOnly:=True)
applicationWord.Visible = True
applicationWord.Activate
applicationWord.Run "GetFirstString"
Set documentWord = Nothing
Set applicationWord = Nothing
End Sub
我们不能像任何其他编程语言一样编写str = applicationWord.Run "GetFirstString"
来将返回字符串保存在变量中。 在我的 Word 文件my_word.docm
,我有以下宏GetFirstString
:
Function GetFirstString() As String
GetFirstString = ActiveDocument.Tables(1).Range.Previous(Unit:=wdParagraph, Count:=1)
End Sub
这是一个原型。 我想这样做是因为我想用从指定文件夹的每个 Word 文件中提取的文本编写一个 Excel 文件。 我在 Excel 中尝试了以下宏,以查看是否能够使用Paragraph
对象从 Word 文件中读取文本,但出现错误,此代码不适用于 Excel VBA,后者无法识别方法成员。
Private Sub ExtractionPrototype()
Dim applicationWord As Object
Dim documentWord As Object
Set applicationWord = GetObject(, "Word.Application")
applicationWord.Visible = True
Set documentWord = applicationWord.Documents.Open(cheminDossierReparation)
MsgBox documentWord.Tables(1).Range.Previous(Unit:=wdParagraph, Count:=1)
documentWord.Close savechanges:=False
End Sub
有没有办法将值从 Word 宏返回到 Excel 宏? 文档中写道“Run 方法返回被调用的宏返回的任何内容”但是这个值究竟是什么以及如何获取它?
您的 ExtractionPrototype 例程不起作用的唯一原因是您使用了常量值wdParagraph
,它是WdUnits
枚举的一部分,它没有在 Excel 中定义。 要么用它的值 4 替换它,要么在你的例程中将它声明为一个具有该值的常量。
"我们不能写str = applicationWord.Run "GetFirstString"
"
正确,因为您错过了告诉 VBA 您期望返回值的括号。 所以你写str = applicationWord.Run("GetFirstString")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.