等待高手:
问题如下:dim xlapp as excel.application
dim xlbook as excel.workbook
dim xlsheet as excel.worksheet
On Error Resume Next
  Set xlApp = GetObject(, "Excel.Application")
If Err Then
  MsgBox "要先打开Excel"
  Exit Sub
End If
  
  For i = 1 To xlApp.Workbooks.Count
    dim a as string
    a=xlbook.name
    debug.print a
    if xlbook.name="c:\data.xls" then msgbox "文件已经打开"
  Next问题描述:
    目的:检测正在运行的excel,判断C:\data.xls是否打开,如果打开了就关闭
运行环境:
    xp系统,C:\data.xls和D\data.xls 都已经打开,而且windows任务管理器里显示是两个excel进程。
    一般情况是一个进程且同名文件不能同时打开,现在是两个进程,且有同名文件。等待高手,给怎么办啊,困恼死我了。

解决方案 »

  1.   

    http://download.csdn.net/source/2341786
      

  2.   

    楼上的连接,我也看了,还是没解决关闭正在打开的excel文档,要知道,excel文件是已经打开的,程序是后面打开的,程序里只能关闭程序自己打开的excel文档。
    我认为还是要用getobject函数,我也期待答案。
      

  3.   


    Sub main()
        Dim objExcelApp As Excel.Application
        Dim objExcelWorkBook As Excel.Workbook
            
        Set objExcelApp = GetObject(, "Excel.Application")
        For Each objExcelWorkBook In objExcelApp.Workbooks
            If LCase(objExcelWorkBook.FullName) = "c:\book1.xls" Then
                If MsgBox(objExcelWorkBook.FullName & "文档已打开,是否关闭?", vbQuestion + vbYesNo, "询问") = vbYes Then
                    objExcelWorkBook.Close False
                    If objExcelApp.Workbooks.Count = 0 Then objExcelApp.Quit
                End If
                Exit For
            End If
        Next
        Set objExcelWorkBook = Nothing
        Set objExcelApp = Nothing
    End Sub
      

  4.   

    似乎楼上的高见。我的是直接杀掉excel进程,快刀但是误伤多……