Private Declare Function FindWindowByClass Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As Long) As Long
Public Function IsWorBookOpen(wbName As String) As Boolean
'
On Error GoTo eRes
'//////////////////////////////////////////////////////////////////////////////////////
Dim lRes As Long, objExcel As Object
Dim wbCurrent As Object
'//////////////////////////////////////////////////////////////////////////////////////
lRes = FindWindowByClass("XLMAIN", 0&)
If lRes <> 0 Then
Set objExcel = GetObject(, "Excel.Application")
Else
IsWorBookOpen = False
Exit Function
End If
For Each wbCurrent In objExcel.Workbooks
If LCase(wbCurrent.Name) = LCase(wbName) Then
IsWorBookOpen = True
Exit Function
End If
Next
IsWorBookOpen = False
Exit Function
eRes:
Call Err.Raise(Err.Number, "IsWorBookOpen", Err.Description)
End Function
Private Sub Command1_Click()
MsgBox (IsWorBookOpen("test.xls"))
End Sub
Sedge писал(а): без пути
Sedge писал(а):Стоп. Тебе надо проверить открыт ли файл по сети? Если да, то конечно нет
Надо было точнее вопрос формулировать.
Public Function IsWorkBookOpen(wbPath As String) As Boolean
'
On Error GoTo eRes
'//////////////////////////////////////////////////////////////////////////////////////
Dim objExcel As Object
Dim vArray As Variant, sWBName As String
'//////////////////////////////////////////////////////////////////////////////////////
vArray = Split(wbPath, "\", , vbTextCompare)
sWBName = vArray(UBound(vArray))
Set objExcel = CreateObject("Excel.Application")
With objExcel
.Workbooks.Open (wbPath)
With Workbooks(sWBName)
IsWorkBookOpen = .ReadOnly
.Saved = True
End With
.Quit
End With
Set objExcel = Nothing
Exit Function
eRes:
Call Err.Raise(Err.Number, "IsWorkBookOpen", Err.Description)
End Function
Private Sub Command1_Click()
MsgBox IsWorkBookOpen("D:\common\test2.xls")
End Sub
Public Function IsWorkBookOpen(wbPath As String) As Boolean
'
On Error Resume Next
Open wbPath For Input Lock Read As #1
Close #1
IsWorkBookOpen = Err.Number <> 0
End Function
Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 15