我有一段代碼,用于檢查一個excel檔案是否存在。如果該檔案已經存在,那么我想追加到檔案中。但是用戶可能已經打開了excel檔案,并且在前臺。我怎樣才能關閉那個excel檔案視窗?(這相當于在excel檔案的視窗中點擊x)
我已經試過了。
我已經嘗試了以下方法:
XLName = "excel2close.xlxs"/span>
'Set oxlApp = CreateObject("Excel.Application") ' EDIT: Not correct
'Set oxlApp = GetObject(", Excel.Application") 'EDIT: 語法錯誤。
'Set oxlApp = GetObject(XLName, Excel.Application) 'EDIT: Error
'429': ActiveX組件不能創建物件
Set oxlApp = GetObject(XLName, "Excel.Application") 'EDIT: Error[/span
'432': 在自動化操作中沒有找到檔案名或類名。
'回傳 運行時錯誤'9'。下標超出范圍
oxlApp.Workbooks(XLName).Close SaveChanges:=False。
'運行時錯誤'438'。物件不支持此屬性方法。
oxlApp.Workbook(XLName).Close
'運行時錯誤'438'。物件不支持此屬性方法。
oxlApp.Window(XLName).Close
'回傳運行時錯誤'9'。下標超出范圍
oxlApp.Windows(XLName).Close
我還嘗試了所有這些的完整路徑,而不僅僅是名稱。
uj5u.com熱心網友回復:
請測驗下一段代碼并嘗試理解它:
Sub ExcelSessions()
Dim XLName As String, oxlApp As Object, wb As Workbook, wbOp As Workbook
XLName = "excel2close.xlsx" '小心,你使用了一個不存在的擴展名(xlxs)...。
On Error Resume Next
Set oxlApp = GetObject(, "Excel.Application") '如果存在一個現有的開放會話,它將以這種方式被設定。
If err.Number <> 0 Then '如果不存在開放會話:
err.Clear: On Error GoTo 0
Set oxlApp = CreateObject("Excel.Application") '創建一個新會話。
Else '如果可以設定一個現有的會話,請檢查是否存在必要的作業簿:
For Each wb In oxlApp.Workbooks
If wb.Name = XLName Then Set wbOp = wb: Exit For '只有當它存在時,它才被設定。
接下來
End If
On Error GoTo 0
如果 不是 wbOp 是 Nothing Then 'if the necessary workbook has been found:
wbOp.Close '它被關閉。
Else
MsgBox "No document named "" & XLName & ""存在于找到的開放會話中。"
End If
End Sub
現在,GetObject將設定第一個發現的會話。但是,如果存在多個會話,你搜索的作業簿可能不會在找到的開放會話中找到......
在這種情況下,有可能會出現一個新的作業簿。
在這種情況下,有兩個選項需要探討:
- 如果你確定作業簿是打開的并且你知道它的完整路徑,你可以通過下一個方法獲得必要的會話:
在這種情況下,有兩個選項需要探討:
在這種情況下,有兩個選項需要探討:
Sub getExcelSessByWbFullName()
Dim XLName As String, oxlApp As Object, wb As Workbook
XLName = "excel2close.xlsx的全稱" "C:yourFolderexcel2close.xlsx"
Set oxlApp = GetObject(XLName).Application
oxlApp.Workbooks(Right(XLName, InStrRev(XLName, ""/span>)).Close
'oxlApp.Quit '如果你想退出會話,你必須取消這一行的注釋。
End Sub
- 如果你只是認為它可能是開放的,而且許多會話可能是開放的,我可以告訴你一個更復雜的方法,找到所有開放的會話,并在每個會話中檢查是否搜索的作業簿是開放的。如果是打開的,就關閉它(如果你想這樣做,也關閉會話)。但我將在你測驗了前面的代碼并證明你明白他們在做什么之后再發布它... 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324164.html
標籤:
上一篇:每60秒更新一次HTML表格
