VBA, MS Access MS Access в примерах

MS Excel - Перехват уже открытой (локально) книги

Private Sub Process_ExcelWorkBook()
'Перехват уже открытой локально книги 
'Процедура получает доступ к книге Excel не зависимо от того, открыта она или нет
'  + Запущен Excel или нет то-же не важно.
'  * если только книга открыта по сети другим пользователем, то Save не пойдёт.
'--------------------------------------------------------------------------

Dim app As Object, wrk As Object
Dim s$, wbIsOpen As Boolean
 
'Путь к книжке
    s = "d:\Temp\Расчет ТОП-5.xlsm"
    
On Error Resume Next
    Set app = GetObject(, "Excel.Application")
    If Err.Number = 429 Then
        Debug.Print "Microsoft Excel не запущен. - Запускаем ...."
        Debug.Print String(72, "-")
        Err.Clear
        Set app = CreateObject("Excel.Application")
    End If

  
    app.Visible = True
   
    For Each wrk In app.WorkBooks
        If wrk.FullName = s Then 'Книга уже открыта!
            'Debug.Print "Книга: " & wrk.FullName  & " - Уже открыта."
            wbIsOpen = True
            Exit For
        End If
    Next wrk
    
    
    If wbIsOpen = False Then 'если Книга не была открыта
        Set wrk = app.WorkBooks.Open(s)
    End If

    wrk.Save
    app.WindowState = -4140 ' Свернуть окно Excel


End Sub

Назад ToTop
L.E. 28.08.2018
Рейтинг@Mail.ru