方法2,网上查看资料汇总的,但是我测试没通过,执行后抓取不到已打开的文件,可能是Excel版本的问题,你可以试一下
Set xlapp = GetObject(,"Excel.Application")
xlApp.workbooks.Count '已打开的Excel文件数
xlApp.workbooks.(i).Name '第i个Excel的文件名,判断第几个文件是需要操作的Excel
Set xlbook = xlapp.Workbooks(i)
这个我用过,可以用。
在 Set xlapp = GetObject(,"Excel.Application") 这个之后,要进行错误判断一下,判断是否抓取成功,如果抓取不成功,再创建。

程序代码:
'-------刷新工作簿列表-----------
On Error Resume Next
Dim i As Long
'引用 已打开的 Excel 对象
If Option1.Value Then
Set excel1 = GetObject(, "Excel.Application")
'是否有错误
If Err.Number <> 0 Then
'错误,提示,结束过程
MsgBox "没有运行 Excel。请打开需要清理对象的文件后重新刷新。", vbCritical, "错误"
Exit Sub
End If
Else
Set excel1 = GetObject(, "et.Application")
'是否有错误
If Err.Number <> 0 Then
'错误,提示,结束过程
MsgBox "没有运行 WPS 表格(Et)。请打开需清理对象的文件后重新刷新。", vbCritical, "错误"
Exit Sub
End If
End If
List1.Clear
'导入所有的工作簿
With excel1
For i = 1 To .workbooks.Count
List1.AddItem .workbooks(i).Name
Next i
End With
Call 显示日志("就绪")
[
本帖最后由 风吹过b 于 2014-3-25 11:10 编辑 ]