微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取从Excel宏调用的Word宏函数的返回值

如何解决获取从Excel宏调用的Word宏函数的返回值

我正在执行Excel宏以获取Word文件的第1个表之前的第1个段落的文本(基本上是表的标题)。

我在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"来将返回String保存在变量中。 在我的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。 / p>

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")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。