< návrat zpět

MS Excel


Téma: EXCEL - VBA - otevření souboru brání samotný scr rss

Zaslal/a 12.8.2017 16:05

Ahoj, mám naprogramované makro, které pracuje ještě s externím programem SAP. Makro se mi postará o to, že z programu vyexportuje data a po chvilce se sám od sebe otevře excel s daty.. jenže problém je, že makro mám nastavené tak, že má počkat 10vteřin na otevření (excel se běžně otevírá 1-2vteřiny), ale když používám příkaz Application.Wait Now + TimeValue("00:00:10"), tak se nic neděje a makro pak proběhne dál, ale s chybou. Makro totiž při svém běhu blokuje pamět nebo něco, co brání excelu se spustit. Nenapadá někoho jak excel donutit, aby počkal 10vteřin, ve kterých se soubor excel musí otevřít?

Zaslat odpověď >

#037241
avatar
Pro představu uvádím kód, měl by čekat na otevření excelu, ale ten se otevře až po doběhnutí makra.


Application.Wait Now + TimeValue("00:00:04")
On Error Resume Next
Set SesitAUTO_ADR_SU = Workbooks("AUTO_ADR_SU.xlsx")
OtevrenySesitAUTO_ADR_SU = Not SesitAUTO_ADR_SU Is Nothing

If OtevrenySesitAUTO_ADR_SU = True Then
'možný kod při otevřeném sešit
Else 'když není otevřen
Application.Wait Now + TimeValue("00:00:04")
Set SesitAUTO_ADR_SU = Workbooks("AUTO_ADR_SU.xlsx")
OtevrenySesitAUTO_ADR_SU = Not SesitAUTO_ADR_SU Is Nothing

If OtevrenySesitAUTO_ADR_SU = True Then
'možný kod při otevřeném sešit
Else 'když není otevřen
Application.Wait Now + TimeValue("00:00:02")
Set SesitAUTO_ADR_SU = Workbooks("AUTO_ADR_SU.xlsx")
OtevrenySesitAUTO_ADR_SU = Not SesitAUTO_ADR_SU Is Nothing

If OtevrenySesitAUTO_ADR_SU = True Then
'možný kod při otevřeném sešit
Else 'když není otevřen
MsgBox "Excel nebyl spuštěn do 10ti vteřin."
Exit Sub
End If

End If

End If
citovat
#037242
avatar
se sám od sebe otevře...
nechápu, ale např:Dim SesitAUTO_ADR_SU As Workbook, wCas As Double
wCas = Now + TimeValue("00:00:10")
On Error Resume Next
While SesitAUTO_ADR_SU Is Nothing And Now < wCas
Set SesitAUTO_ADR_SU = Workbooks("AUTO_ADR_SU.xlsx")
DoEvents
Wend
On Error GoTo 0
If Not SesitAUTO_ADR_SU Is Nothing Then
'kod pri otevreném sešitu
Else
'když není otevren
End If
Set SesitAUTO_ADR_SU = Nothing
citovat
#037243
avatar
děkuji za kód, ale je také bohužel nefunkční. Tím, že se otevře excel myslím to, že script v programu SAP vytvoří report, který SAP vygeneruje do XLSX, když se dělají ruční reporty v SAP, po vygenerování se samo od sebe otevře okno s excelem. Právě proto si myslím, že excel blokuje SAP a excel čeká až skončí úplně celé makro a ihned po skončení se otevře excel, který generoval SAP. V tom vašem kodu se také nic nestalo, proběhlo tedy Else 'když není otevřen - vkládal jsem tam msgbox, abych věděl co z toho se stalo.citovat
#037244
avatar
No, v SAPu se nevyznám, ale pokud platí, že "a excel čeká až skončí úplně celé makro a ihned po skončení se otevře excel", dojde k události "Workbook_Deactivate"? A nebo zkus "OnTime".citovat
#037246
avatar
DÍÍÍÍÍKY!! Deactivate nezabralo, ale OnTime ano, sice musím překopat kód a bude se dělit na víc procesů, ale hlavní je, že to funguje :), ještě jednou děkuju, trávil jsem nad tím několik hodin a úplně zbytečně :/..citovat

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje