Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

如何判断工作簿已经打开(access里的VBA)

linmeici  发表于:2018-03-12 22:20:33  
复制

---------判断一个工作簿是否已经打开.下面代码在ACCESS的VBA里运行有问题.恳请各位高手给予指教,学生在先行谢过了!!!!!!
附件:
 判断工作簿是否已经打开.rar (50.13 KB, 下载次数: 1) 

Sub Com()
'On Error Resume Next    '延迟错误捕获。
Set xlapp = CreateObject("excel.application")
Set app = GetObject(, "excel.application")              '返回文件中的 ActiveX 对象的引用。(注意:必须先经过创建APPLICATION对象后,GETOBJECT才能返回这个对象,否则返回结果为空)
Set book = app.workbooks
        Dim ss As Object
        a = book.Count      ----------------这里有问题,当我手工打开"报销单"这个工作簿时,这里可以统计得到包含这个工作簿的个数,当我用OPEN命令打开工作簿时,就统计不到这个工作簿,也无法都取得这个工作簿的名称,从而无法判断这个工作簿是否已经打开.  
If a = 0 Then
    xlpath = CurrentProject.Path & "\报销单.xlsx"
    xlapp.workbooks.Open xlpath, readonly:=False
    xlapp.Visible = True
Else
    For Each ss In book
        If ss.Name = "报销单.xlsx" Then        --------通过OPEN命令打开,在这里取不到工作簿名称
            MsgBox "已打开"
        Else
            xlpath = CurrentProject.Path & "\报销单.xlsx"
            xlapp.workbooks.Open xlpath, readonly:=False
            xlapp.Visible = True         
         End If
    Next
End If
End Sub

 

Top
linmeici 发表于:2018-03-13 13:26:01
自己找到解决方法了,加入一句:

app.activewindow.caption="报销单.xlsx"

就可以找到通过OPEN打开的工作簿名称了.



总记录:1篇  页次:1/1 9 1 :