判斷Excel工作簿文件是否被打開
- 2019-11-18 09:05:00
- zstmtony 原創
- 18537
工作場景中,可能有時處理數據之前,可能需要使用VBA先判斷待處理的Excel文件是否已經被彆人打開,如果打開,需要提示先關閉或代碼強製關閉。
那如何判斷工作簿已經被打開呢,有以下一些方法
方法1:
Const strFileName As String = "你的文件.xls" Sub CheckFileIsOpen() Dim xApp As Application Set xApp = CreateObject("Excel.Application") xApp.DisplayAlerts = False On Error GoTo Error_Handler xApp.Workbooks.Open Filename:=ThisWorkbook.Path & "" & strFileName, notify:=False, ReadOnly:=False If xApp.ActiveWorkbook.ReadOnly = True Then MsgBox "文件已經被打開!" Else MsgBox "文件未被打開!" End If GoTo Exit_Handler Error_Handler: MsgBox "File is not exist" Exit_Handler: xApp.Quit End Sub
方法2:
Dim wb As Workbook Set wb = GetObject("G:\測試工作簿.xlsx") ' If wb.IsInplace = False Then If wb.ReadOnly = True Then MsgBox "指定的工作簿已經被打開瞭" wb.Close Set wb = Nothing Exit Sub Else wb.Close Set wb = Nothing End If
方法3:
Sub 判斷文件是否已經打開() Dim x As Integer For x = 1 To Windows.Count If Windows(x).Caption = "test.xls" Then MsgBox "test文件已經打開瞭" Exit Sub Else MsgBox "test文件沒有被打開!" End If Next End Sub
方法4:
判斷一箇指定的工作簿文件是否打開 先將下麵的VBA代碼放到一箇標準模塊中,然後在需要的地方進行調用。 '如果目標工作簿已打開則返迴TRUE,否則返迴FALSE Function IsWkLoaded(strWbName As String) As Boolean Dim i As Long For i = Workbooks.Count To 1 Step -1 If Workbooks(i).Name = strWbName Then Exit For End If Next '如果工作簿未找到 If i = 0 Then IsWkLoaded = False Else IsWkLoaded = True End If End Function 調用示例如下,將“Book2.xls”換成指定的工作簿名稱: Sub 調用() If IsWkLoaded("test.xls") Then MsgBox "指定的工作簿已打開" Else MsgBox "指定的工作簿沒有打開" End If End Sub
文章分類
聯繫我們
聯繫人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |