< návrat zpět

MS Excel


Téma: Application_WorkbookAfterClosed Event rss

Zaslal/a 18.2.2020 7:27

Zdravím makromilce,
řeším na úrovni aplikace potřebu zjistit, zda-li byl sešit zavřen. Zkusil jsem porovnávat počet sešitů v události WindowActivate a WindowDeactivate, ale nefunguje mi je-li to poslední okno. Nevíte někdo, jak na to?

Jméno
Kontrola
Text
  b i u s img code url hr   1 2 3 4 5 6 7 8 9 10

#045918
avatar
Asi by to chtělo blíže specifikovat. Pokud chceš vědět, jestli je soubor otevřený, tak projdeš všechny otevřené: For i = 1 To Workbooks.Count


a budeš se uvnitř For dotazovat na jméno If Workbooks(i).Name= "xyz.xlsx" Thencitovat
#045920
avatar
Ano, přesně tak, procházím všechny otevřené a pouze uložené :

Private Function GetNotPathLessWorkbooksCount() As Integer
Dim awb As Workbook
Dim i As Integer
For Each awb In Application.Workbooks
If awb.Path <> "" Then
i = i + 1
End If
Next awb
GetNotPathLessWorkbooksCount = i
End Function
citovat
#045923
avatar
Kontrola změny na základě porovnání počtu sešitů :
Private iNotPathLessWorkbooksCount As Integer

Private Sub Xl_Application_WindowActivate(ByVal Wb As Workbook, ByVal Wn As Window)
If iNotPathLessWorkbooksCount <> GetNotPathLessWorkbooksCount Then
'changed
End If
iNotPathLessWorkbooksCount = GetNotPathLessWorkbooksCount
End Sub
Private Sub Xl_Application_WindowDeactivate(ByVal Wb As Workbook, ByVal Wn As Window)
If Application.Windows.Count = 1 Then
'nenastane event windowactivate
End If
End Sub


Private Function GetNotPathLessWorkbooksCount() As Integer
Dim awb As Workbook
Dim i As Integer
For Each awb In Application.Workbooks
If awb.Path <> "" Then
i = i + 1
End If
Next awb
GetNotPathLessWorkbooksCount = i
End Function


Nejspíš to půjde úplně jinak...citovat
#045999
avatar
Zkoušel jsem najít nějaké řešení, ale zkouším se bez toho obejít. Neuvedl jsem, že by to mělo být součástí doplňku xlam. Nějaké podobné pokusy jsem našel...

Použít OnTime nebo Timer při Deactivate ? Stačilo by u posledního viditelného okna, ale ... Co když se s posledním oknem zavírá celá aplikace? Nezdá se mi to...

Uložit zavíraný sešit do proměnné v události BeforeClose a pak zjišťovat zda-li proměná ztratila vazbu na objekt, případně uložit název a hledat zda ještě existuje v kolekci Workbooks?
Nabízejí se také události WorkbookActivate a WorkbookDeactivate, sešit může mít více oken...citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Relativní cesta - zdroje Power Query

elninoslov • 23.4. 9:35

Relativní cesta - zdroje Power Query

Alfan • 23.4. 8:37

Relativní cesta - zdroje Power Query

elninoslov • 23.4. 8:10

Relativní cesta - zdroje Power Query

Alfan • 22.4. 17:33

Relativní cesta - zdroje Power Query

elninoslov • 22.4. 14:38

Relativní cesta - zdroje Power Query

Alfan • 22.4. 14:09

Čas od do

lubo • 19.4. 16:30