| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 700 人关注过本帖
标题:VB如何对已打开的EXCEL文件进行操作
只看楼主 加入收藏
燕之峰
Rank: 2
等 级:论坛游民
帖 子:146
专家分:63
注 册:2014-3-21
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:3 
VB如何对已打开的EXCEL文件进行操作
各位网友好,VB操作EXCEL文件是常见的问题,但一般情况下是打开操作保存关闭。有时在VB程序运行前,EXCEL文件已打开,那么在这种情况下,VB又如何进行操作(如向EXCEL文件中 写放内容),保存关闭呢。请指导,谢谢。
搜索更多相关主题的帖子: EXCEL 如何 友好 
2014-03-24 21:34
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
收藏
得分:2 
首先,如果确定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)
总之,如果文件需要修改就先手动关闭,由程序执行打开和编辑。
以上拙见,请版主大大赐教!
2014-03-25 10:35
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:2 
方法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 编辑 ]

授人于鱼,不如授人于渔
早已停用QQ了
2014-03-25 10:54
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:2 
哥们你步子迈的太大了。。你去学习vba把
2014-03-25 15:09
快速回复:VB如何对已打开的EXCEL文件进行操作
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038003 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved