使用(VBA)第二次打开同一文件时,如果Excel文件已处于打开状态,则将其关闭

时间:2012-02-25 15:37:59

标签: excel vba

我有一个命令按钮,用于打开文件。

但是如果第二次打开同一个文件,它应该首先关闭它,然后重新打开它。

所以我正在寻找这样的代码 - 我非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

检查它是否打开,如果没有,请使用关闭方法将其关闭。

以下代码来自此VBAXpress Article

Function IsFileOpen(FileName As String) 
Dim iFilenum As Long 
Dim iErr As Long 

On Error Resume Next 
iFilenum = FreeFile() 
Open FileName For Input Lock Read As #iFilenum 
Close iFilenum 
iErr = Err 
On Error Goto 0 

Select Case iErr 
Case 0:    IsFileOpen = False 
Case 70:   IsFileOpen = True 
Case Else: Error iErr 
End Select     
End Function 

Sub test() 
    If Not IsFileOpen("C:\MyTest\volker2.xls") Then 
        Workbooks.Open "C:\MyTest\volker2.xls" 
    End If 
End Sub 

如果您只想关闭工作簿而不提示用户进行任何确认 关于保存工作簿,你可以简单地这样做:

ActiveWorkbook.Close False 

'关闭活动工作簿而不保存任何更改

ActiveWorkbook.Close True 

'关闭活动工作簿并保存所有更改

ActiveWorkbook.Close 

'关闭活动工作簿并让用户决定是否保存更改

Workbooks("BOOK1.XLS").Close SaveChanges:=False

答案 1 :(得分:0)

工作簿采用Close方法。

请参阅here