注册 登录
编程论坛 VB6论坛

VB如何对已打开的EXCEL文件进行操作

燕之峰 发布于 2014-03-24 21:34, 700 次点击
各位网友好,VB操作EXCEL文件是常见的问题,但一般情况下是打开操作保存关闭。有时在VB程序运行前,EXCEL文件已打开,那么在这种情况下,VB又如何进行操作(如向EXCEL文件中 写放内容),保存关闭呢。请指导,谢谢。
3 回复
#2
owenlu19812014-03-25 10:35
首先,如果确定VB要对该文件进行修改操作,就应该事先关闭 (如果只是读取则无所谓是否已打开)
其次,如果非要在已打开状态下再执行VB,
    方法1,操作前,先强行关闭Excel进程; shell "taskkill /im Excel.exe",再用 Set xlBook = xlApp.workbooks.open 打开
    方法2,网上查看资料汇总的,但是我测试没通过,执行后抓取不到已打开的文件,可能是Excel版本的问题,你可以试一下
         Set xlapp = GetObject(,"Excel.Application")
         xlApp.workbooks.Count '已打开的Excel文件数
         xlApp.workbooks.(i).Name '第i个Excel的文件名,判断第几个文件是需要操作的Excel   
         Set xlbook = xlapp.Workbooks(i)
总之,如果文件需要修改就先手动关闭,由程序执行打开和编辑。
以上拙见,请版主大大赐教!
#3
风吹过b2014-03-25 10:54
方法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 编辑 ]
#4
w3609894262014-03-25 15:09
哥们你步子迈的太大了。。你去学习vba把
1