问题描述
我正在执行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")