Open excel datoteke iu VBA

Pomoč pri izdelavi makrov
Odgovori
dragopre
Prispevkov: 109
Pridružen: To Dec 11, 2012 11:46 pm

Open excel datoteke iu VBA

Odgovor Napisal/-a dragopre »

Pozdravljeni
Imam excel zvezek, ki mi služi kot vzorec. Vanj ne dovolim shranjevanja.
V proceduri "Workbook_Open" izpišem sporočilo in še uredim nekaj nastavitev.
Zdaj bi pa rad ta zvezek odptl iz VBA kode. To znam. Moti pa v tem primeru sporočilo in prepoved shranjevanja. V proceduri "Workbook_Open" ne znam ugotoviti, ali je bil zvezek odprt iz VBA ali z Excelom.
Ali obstaja kakšna možnost, da pri ukazu "Set WB = Workbooks.Open(File)" podam nek parameter, s katerim bi v potem proceduri "Workkbooks_Open" ugotovil da je odprt iz VBA kode.
ps.
V nekem drugem zvezku (prosesu) imam včasih potrebo po dopolnitvi vzorca. Takrat to sporočilo moti. Če bi lahko vedel, da sem zvezek odprl iz VBA kode, bi lahko tudi krmilil prepoved shranjevanja.

Lep pozdrav in hvala za pomoć
Drago
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Open excel datoteke iu VBA

Odgovor Napisal/-a admin »

Pozdravljeni,

Moram priznati, da ne razumem kaj natančno počnete oz. zakaj to počnete; zato vam bom raje kar odgovoril na vprašanji:
  1. Ne, ne morete vedeti kdo je odprek delovni zvezek; ali uporabnik ali neka druga VBA koda
  2. Vsak zvezek lahko z VBA odprete v načinu branja; torej tako da popravki niso dovoljeni:

    Koda: Izberi vse

    Workbooks.Open Filename:=pot_do_zvezka, ReadOnly:=True
    
    ` ali če želite z zveskom še kaj početi
    
    Dim zvezek As Workbook
    Set zvezek= Workbooks.Open(Filename:=pot_do_zvezka, ReadOnly:=True)
    
lp,
Matjaž Prtenjak
Administrator
dragopre
Prispevkov: 109
Pridružen: To Dec 11, 2012 11:46 pm

Re: Open excel datoteke iu VBA

Odgovor Napisal/-a dragopre »

Očitno sem preveč kompliciral z opisom. Enostavno želim vedeti, kdo je zvezek odprl. To me zanima samo, če je zvezek odprt iz VBA kode.
Sem pa našel posredno rešitev:

Koda: Izberi vse

  Application.StatusBar = "Odprl Administrator"         ' Indikacija, kdo odpira VZOREC
  Set WB = Workbooks.Open(cMapa & "/VZOREC.xlsm")       ' Odprem zvezek VZOREC
  Application.StatusBar = ""                            ' Zbrišem informacijo
Vsebina StatusBar se prenese/ostane v novo odprti zvezek.Pri dogodku "Workbook_Open()" enostavno preverim StatusBar.
Odgovori