| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2869 人关注过本帖
标题:小白求助:VB遍历已打开的excel文件名
只看楼主 加入收藏
zhusong1998
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-8-27
结帖率:0
收藏
已结贴  问题点数:10 回复次数:2 
小白求助:VB遍历已打开的excel文件名
程序代码:
Option Explicit

 Public xlapp As excel.Application

 Private Sub Command1_Click()
   Dim i%
   Dim fn As String
   Dim mywb
   Dim fn1
   fn = app.path & "\调试初始化\各国家中重卡采购明细汇总表.xlsx"
   fn1 = "各国家中重卡采购明细汇总表.xlsx"
   On Error Resume Next
   Set xlapp = GetObject(, "excel.application")
   If Not xlapp Is Nothing Then
     For i = 1 To xlapp.Workbooks.Count '统计不了程序打开的文件,打开了4个文件,但统计数只有3个
      If LCase(xlapp.Workbooks(i).FullName) = LCase(fn) Then '识别不到程序打开的文件
        xlapp.Workbooks(fn).Activate
         Set mywb = xlapp.Workbooks(fn1)
         Exit For
       End If
     Next i
       If mywb Is Nothing Then
         Set xlapp = CreateObject("excel.application")
         Set mywb = excel.Workbooks.Open(App.Path & "\各国家中重卡采购明细汇总表.xlsx")
         xlapp.Visible = True
       End If
   Else
         Set xlapp = CreateObject("excel.application")
         Set mywb = excel.Workbooks.Open("" & App.Path & "\各国家中重卡采购明细汇总表.xlsx")
         xlapp.Visible = True
   End If
   End

 End Sub
'实现的功能:判断所需文件是否打开,如果打开了就激活文件。如果没有打开则打开再激活。

'存在问题:手动打开所需的文件,再次启动程序时可以识别到所需文件已经打。
'          但是程序自己打开所需文件,再次运行程序时就识别不到所需文件已经打开,仍然会再次打开所需文件(只读)。

'程序打开的文件名称是这种“microsoft excel-文件名.xlsx”,可能因为这个,程序在下次判断时就识别不到自己打开的文件。


图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 打开 excel Set If 文件 
2019-03-26 14:37
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:10 
根据你程序的代码来看,你程序打开的文件,每次都是新建了 EXCEL 对象。感觉就是这个问题导致的。

你这样测试一下
   If Not xlapp Is Nothing Then
       ......
       If mywb Is Nothing Then        '没找到这个文件
'         Set xlapp = CreateObject("excel.application")            '前面已引用的已运行的EXCEL对象了,直接再打开一个工作簿,不要再新建EXCEL对象了
         Set mywb = excel.Workbooks.Open(App.Path & "\各国家中重卡采购明细汇总表.xlsx")
         xlapp.Visible = True
       End If
   Else        '执行到这里,说明没有已运行的 EXCEL 对象
         Set xlapp = CreateObject("excel.application")        '创建一个EXCEL对象
         Set mywb = excel.Workbooks.Open("" & App.Path & "\各国家中重卡采购明细汇总表.xlsx")
         xlapp.Visible = True
   End If

授人于鱼,不如授人于渔
早已停用QQ了
2019-03-26 17:22
zhusong1998
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-8-27
收藏
得分:0 
回复 2楼 风吹过b
非常完美,只是需要把Set mywb = excel.Workbooks.Open(App.Path & "\各国家中重卡采购明细汇总表.xlsx")改为
Set mywb = xlapp.Workbooks.Open(App.Path & "\各国家中重卡采购明细汇总表.xlsx")


谢谢版版

[此贴子已经被作者于2019-3-26 18:00编辑过]

2019-03-26 17:59
快速回复:小白求助:VB遍历已打开的excel文件名
数据加载中...
 
   



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

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