在Excel中的VBA代码和Word之间传递变量
我有一个Excel VBA sub,它调用一个Word VBA sub来处理一些文件。我需要Word sub向Excel sub报告操作是否成功 我的问题是,本应将Word的成功或失败结果传递回Excel的WResult布尔变量(它被传递给Word宏ByRef)没有这样做,对于Excel它根本不会更改 有解决办法吗?如果可能,我希望避免使用基于剪贴板或将值写入磁盘上文件的解决方案 我的代码在Excel中类似如下:在Excel中的VBA代码和Word之间传递变量,excel,vba,ms-word,Excel,Vba,Ms Word,我有一个Excel VBA sub,它调用一个Word VBA sub来处理一些文件。我需要Word sub向Excel sub报告操作是否成功 我的问题是,本应将Word的成功或失败结果传递回Excel的WResult布尔变量(它被传递给Word宏ByRef)没有这样做,对于Excel它根本不会更改 有解决办法吗?如果可能,我希望避免使用基于剪贴板或将值写入磁盘上文件的解决方案 我的代码在Excel中类似如下: Dim objW As Word.Application Dim objWFile
Dim objW As Word.Application
Dim objWFile As Word.Document
Dim my_FileNamePath As String
Public WResult As Boolean
Sub Main()
Set objW = CreateObject("Word.Application")
Set objWFile = objW.Documents.Open("C:\WordMacro.docm")
'Run Word macro
objW.Run "Manip_Text", my_FileNamePath, WResult
If WResult Then
Macro_Continue
Else
Err_Handling
End If
End Sub
。。。总之:
Public Sub Manip_Text(my_FileNamePath As String, ByRef WResult As Boolean)
On Error GoTo IfError
'Word macro code here
WResult = True 'Set result to True if there were no errors and exit sub back to Excel
Exit Sub
IfError:
MsgBox "There was an error with the Word file"
WResult = False 'Set result to False and exit back to Excel
End Sub
将Word中的Sub更改为返回布尔值的函数 Run方法返回被调用宏返回的任何内容 单词功能:
Public Function ReturnMethod(ByVal stringText As String) As Boolean
MsgBox stringText
ReturnMethod = True
End Function
Excel方法调用Word中的函数:
Sub TestReturnMethod()
Dim a As String: a = "Hello there!"
Dim objW As Object
Dim objWFile As Object
Set objW = CreateObject("Word.Application")
Set objWFile = objW.Documents.Open("E:\SomeFolder\Test.docm")
Dim returnValue As Boolean
returnValue = objW.Run("ReturnMethod", a)
MsgBox returnValue
End Sub
将Word中的Sub更改为返回布尔值的函数 Run方法返回被调用宏返回的任何内容 单词功能:
Public Function ReturnMethod(ByVal stringText As String) As Boolean
MsgBox stringText
ReturnMethod = True
End Function
Excel方法调用Word中的函数:
Sub TestReturnMethod()
Dim a As String: a = "Hello there!"
Dim objW As Object
Dim objWFile As Object
Set objW = CreateObject("Word.Application")
Set objWFile = objW.Documents.Open("E:\SomeFolder\Test.docm")
Dim returnValue As Boolean
returnValue = objW.Run("ReturnMethod", a)
MsgBox returnValue
End Sub
我想你不能从word返回任何excel。。。我的解决方法是使用word app创建一个txt文件,并将其称为成功或失败,这样excel就可以查找该文件并知道是哪个文件。您可以使用数据库从中读写。它不像听起来那么复杂,而且非常可靠。我认为你不能从word返回任何优秀的东西。。。我的解决方法是使用word app创建一个txt文件,并将其称为成功或失败,这样excel就可以查找该文件并知道是哪个文件。您可以使用数据库从中读写。它不像听起来那么复杂,而且非常可靠。