有没有办法检查这个(例如test.xlsm)文件是否已打开?
Dim v_datenwb As String
v_datenwb = "test.xlsm"
Dim err As String
err = " ist nicht geöffnet!"
Dim op As Integer
op = 0
Do While op <> 1
If IsFileOpen(v_datenweb) = True Then
Workbooks(v_datenwb).Activate
op = 1
Else
If vbCancel = MsgBox(v_datenwb & err, vbRetryCancel, "Error") Then
Exit Sub
End If
err = " ist nicht geöffnet! Sind sie sich sicher dass das Dokument offen ist ?"
End If
Loop
Public Function IsFileOpen( _
ByVal FileName As String, _
Optional ByVal ViewKind As String ="{00000000-0000-0000-0000-000000000000}" _
) As Boolean
我尝试过类似的东西,但它没有用。 每当程序检查文件是否打开时,结果都是False。
我很欣赏任何提出更好解决方案的建议。
答案 0 :(得分:0)
您定义了v_datenwb = "test.xlsm"
,但是您在v_datenweb
打了If IsFileOpen(v_datenweb) = True Then
。
您是否尝试过this solution?
您只需将c:\Book2.xls
更改为所需的工作簿即可。
此代码有一个名为IsFileOpen
的函数和一个名为TestFileOpened
的宏来调用该函数。
Sub TestFileOpened()
' Test to see if the file is open.
If IsFileOpen("c:\Book2.xls") Then
' Display a message stating the file in use.
MsgBox "File already in use!"
'
' Add code here to handle case where file is open by another
' user.
'
Else
' Display a message stating the file is not in use.
MsgBox "File not in use!"
' Open the file in Excel.
Workbooks.Open "c:\Book2.xls"
'
' Add code here to handle case where file is NOT open by another
' user.
'
End If
End Sub
' This function checks to see if a file is open or not. If the file is
' already open, it returns True. If the file is not open, it returns
' False. Otherwise, a run-time error occurs because there is
' some other problem accessing the file.
Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next ' Turn error checking off.
filenum = FreeFile() ' Get a free file number.
' Attempt to open the file and lock it.
Open filename For Input Lock Read As #filenum
Close filenum ' Close the file.
errnum = Err ' Save the error number that occurred.
On Error GoTo 0 ' Turn error checking back on.
' Check to see which error occurred.
Select Case errnum
' No error occurred.
' File is NOT already open by another user.
Case 0
IsFileOpen = False
' Error number for "Permission Denied."
' File is already opened by another user.
Case 70
IsFileOpen = True
' Another error occurred.
Case Else
Error errnum
End Select
End Function
答案 1 :(得分:0)
可以使用一个简单的逻辑来检查文件是否打开...
Function IsFileOpen(fileName As String) As Boolean
Dim wb As Workbook
On Error Resume Next
Set wb = Workbooks(fileName)
On Error GoTo 0
If Not wb Is Nothing Then IsFileOpen = True
End Function
Sub Test()
Dim fName As String
fName = "test.xlsm"
If IsFileOpen(fName) Then
MsgBox "File is open.", vbExclamation
Else
MsgBox "File is not open.", vbExclamation
End If
End Sub