如何使用Word宏从已打开的Excel工作簿中获取数据?

时间:2014-03-03 15:25:08

标签: vba excel-vba word-vba excel

我目前正在努力使用vba宏,你能帮我吗?我非常感谢能够帮助我的人。

我想从Word文档宏访问Excel打开的工作簿的数据。出于某些原因,我需要从已在我的用户会话中打开的Excel工作簿中获取数据,而不是通过使用其路径在后台重新打开它。

这是我想要转换的宏的当前位,以便我使用已经打开的“GUI.xls”。窗口的名称是“Microsoft Excel - GUI.xls [兼容模式]” 我希望我能很好地解释我的问题,我没有在其他地方找到这个主题,抱歉,如果它已经存在。

如果可能,我希望AppExcel对象直接链接到打开的工作簿。问题是我尝试从Word访问工作簿。

非常感谢你的帮助,

西蒙

Set AppExcel = CreateObject("Excel.Application")
AppExcel.Workbooks.Open SourcePath1 & "" & "\GUI.xls"

    Data_Name = AppExcel.Worksheets("Output").Cells(RowNum, 2).value
    Data_Ending = AppExcel.Worksheets("Output").Cells(RowNum, 3).value

Dim WordFileName As String
WordFileName = Data_Name & Data_Ending

    Call candp(SourcePath, WordFileName, TargetName)

AppExcel.Activeworkbook.Close savechanges:=False
AppExcel.Quit
Set AppExcel = Nothing

1 个答案:

答案 0 :(得分:3)

尝试使用GetObject

Dim WordFileName As String
Dim exWb As Object
Dim AppExcel As Object

'try to get file if it's already open
On Error Resume Next
Set exWb = GetObject(SourcePath1 & "\GUI.xls")
On Error GoTo 0

'if it's not already opened - open it
If exWb Is Nothing Then
    Set AppExcel = CreateObject("Excel.Application")
    Set exWb = AppExcel.Workbooks.Open(SourcePath1 & "\GUI.xls")
End If

With exWb.Worksheets("Output")
    Data_Name = .Cells(RowNum, 2).Value
    Data_Ending = .Cells(RowNum, 3).Value
End With

WordFileName = Data_Name & Data_Ending

Call candp(SourcePath, WordFileName, TargetName)

exWb.Close savechanges:=False
Set exWb = Nothing

If Not AppExcel Is Nothing Then AppExcel.Quit
Set AppExcel = Nothing