< návrat zpět

MS Excel


Téma: Online a Offline Addin rss

Zaslal/a 1.7.2014 9:50

Ako najefektivnejsie pracovat s makrom pre viacerych uzivatelov

takze mame povedzme 100ludi vsetci pracuju na internej sieti ale maju notebooks a beru si ich aj domov

... kedze kazdy programator si logiku robi sam tak tu davam svoj navrh ... verim tomu ze su aj lepsie veci ale len pre zaujimavost (nieje to cely kod takze trebaho potom dorobit)

Vytvorime si addins addin1 = offline a addin2 = sietovi

Addin1 (Offline): bude len kontrolovat ci je pocitac pripojeny k internej sieti a ci je verzia addinsu aktualna ked nieje pusti sa z jeho pocitaca
Addin2 (sietovi): je hlavne jadro programu

Addin1:
Sub Auto_Open()
If aDetectStatus(Version) Then
If aDelectVersion(aVersion) Then
Call aOnline
Else
Call aRefreshFolderFile
Call aOnline
End If
Else
Call aOffline
End If
End Sub

Sub Auto_Close()
If aDetectStatus(Version) Then
Call aUnloadOnline
Else
Call aUnloadOffline
End If
End Sub


nechcelo sa mi to cele rozpisovat ale ide o to:
Sub Auto_Open(): event sa zapne pri otvoreni excelu
Sub Auto_Close(): event sa zapne pri zatvoreni excelu

aDetectStatus: funkcia na zistovanie ci dana sietova cesta existuje ... vracia true/false
aDetectStatus existuje: tak skontroluje aDelectVersion ci verzia je ta ista ako sietova verzia porovna napr. textak v internom pc ktory je vytvoreny alebo nieje vytvoreny s textakom na sieti ..... (pozn. nieje vytvoreny ... moze sa jednat o noveho uzivatela)
aDetectStatus neexistuje: nainstaluje Addins2 offline

aDelectVersion: funkcia na zistovanie aktualnosti addins2 ... vracia true/false
aDelectVersion nezhoduje sa alebo nieje textak: tak skopiruje Addins2 do uzivatelskeho pocitaca. Potom nainstaluje Addins2 Online/offline
aDelectVersion ta ista verzia: nainstaluje Addins2 Online/offline

.... Addins Online/offline ci: zapnut to z miesneho pc alebo z sietoveho adresara to uz je na vas ... zalezi aky je to addin

a na zaver sa pri ukonceni excelu addins2 online/offline sam oddinstaluje

Vyhody:
- Instalacia u uzivatela je velmo jednoducha staci len nainstalovat addins1 ... s zapisom na disk
- kedze addins2 sa nachadza na sieti tak je dost jednoduche taketo nieco manazaovat/upravovat/menit
- pomocne subory k addinsu sa musia ukladat cez prikaz cesty Environ("APPDATA") .... funguje aj v win xp/ milenium/7/8 atd. .... takze na uzivatelskom pocitaci nebude problem s vytvorenim zlozky pre addin

viem ze som to napisal dost v skratkach ale tato tema je podla mna dosttt na dlho

Zaslat odpověď >

Strana:  « předchozí  1 2 3   další »
icon #020400
eLCHa
Tak jsem si dnes hrál. Vytvořil jsem doplněk IDoNothing, který překvapivě nic nedělá, pouze kontroluje, jestli není na serveru jeho nová verze a pak se aktualizuje.

V příloze je složka se dvěma úplně stejnými soubory
IDoNothing0_013.xlam
IDoNothing0_014.xlam

kde to číslo znamená verzi. Složku někam rozbalte a umístění vložte do konstantyConst SERVER_DIR As String = "V:\IDoNothing\"(myšleno server, u mně V:\IDoNothing\)

Instalace doplňku probíhá dvojklikem na vybraný soubor (poklepejte na 0_013). Ten se nainstaluje. Pak zavřete excel a znovu spusťte. Doplněk zkontroluje novou verzi a tu nainstaluje místo sebe.
Použil jsem OnTime +5s (šlo by asi i kratší), protože spouštím makro nového souboru ze starého, přitom musím ale ten starý nejdříve zavřít. Zatím mně nenapadl jiný způsob, aniž bych musel vytvářet další mezisoubory.

Číslo verze dávám přímo do názvu souboru, přijde mi to tak nejjednodušší, navíc je možnost mít v adresáři více verzí (asi k ničemu, ale možnost to je ;) ).

Asi takhle nějak bych na to šel já, kdybych to někdy dělal ;))
Můžou tam být mušky, mouchy a možná i nějaká masařka, ale při cca 10 pokusech to cca 10x proběhlo.
Příloha: zip20400_idonothing.zip (27kB, staženo 23x)
citovat
#020427
avatar
pri spusteni IDoNothing0_013.xlam sa to zasekne pri: With Application.AddIns
.Add sInstalPath & THIS_ADDIN_FULLNAME, CopyFile:=False

nehladal som preco, tak len davam report :)citovat
icon #020428
eLCHa
Tak to neporadím, protože mně to nedělá ;)
Jen dávám odpověď ;)

Zkusil jste krokovat?
Asi ne, když jen dáváte report ;))citovat
#020431
avatar
tak uz som to aj odkrokoval a aj pochopil co presne to makro robi :)

debug:
- nedokoncil som to zas lebo zas robota ahhh :) ale skuste si z addinsov ten addins dat prec a otestovat nanovo nainstalovat a uvidite ze vam to vyhodi tu hlasku co som hore pisal

postreh:
- vyuzivate event Private Sub Workbook_Open() mohli ste pouzit event Sub Auto_Open()
- Kill sInstalPath & THIS_ADDIN_FULLNAME ... toto je myslim ze zbytocne kedze saveas to prepisecitovat
icon #020433
eLCHa
Věřte, že jsem to zkoušel různé možnosti, než jsem to sem dal a vážně mi to vždycky projede ;) (přes sebe, pod sebe, nad sebe, bez sebe).
Nevím kde Vám to vázne, třeba to zkusí ještě někdo ;)

Auto_Open jsem použil naposledy snad v E97, teď už bych ho tam dal jen kvůli kompatibilitě (1x za 10 let). Možná mně přesvědčíte, v čem je lepší.

Kill - přepisuji IDoNothing.xlam, tak by tam snad měl být - ale možná to funguje i bez toho. Ničemu to neškodí ;)citovat
#020434
avatar
eLCHa: Ano, auto open je stary nazov eventu teraz sa vola tusim nejak modernejsie ale stale je to to iste auto open ... popravde ked som to zacal debugovat tak som vobec netusil kde to startuje :)))) .... az potom som si vsimol ze tam je Workbook_Open. Jedina zmena pri pouzivani auto open by nastala ze by to nebolo v module workbook ale v tom novom module .... nic ine

.... preco to mne robi zatial netusim ale ja nato dojdem hadam viacery to vyskusaju ... inac ked uz to je nabehnute v addinse tak to pekne funguje .)citovat
icon #020435
eLCHa
Auto_Open bylo nahrazeno Workbook_Open, ale je možné, že v sešitu můžou být obě možnosti. Někdy zkusím.
Ano, to by mohlo být využití, že bude vše pěkně pohromadě v jednom modulu.

Já ale Workbook_Open volám z jiného sešitu a modul modUpdate je nastavený jako private (aby nebyla makra viditelná ze sešitu), kdo ví jestli by to fungovalo.citovat
#020645
avatar
Tiež sa mi to zasekávalo pri riadku ".Add sInstalPath & THIS_ADDIN_FULLNAME, CopyFile:=False".
Tak som ho jednoducho vyremoval a už to funguje ...citovat
icon #020650
eLCHa
@pvav
díky za info
toto není dobré řešení, protože tím znemožníte prvotní instalaci (tzn. pokud doplněk ještě není v seznamu doplňků, zastaví se kód hned na dalším řádku.

Taxe mi to konečně podařilo nasimulovat ;)
Jde o známou chybu, řešení je např. zde
http://www.oraxcel.com/cgi-bin/yabb2/YaBB.pl?num=1259052558

Takže před řádky With Application.AddIns
.Add sInstalPath & THIS_ADDIN_FULLNAME, CopyFile:=False
.Item(THIS_ADDIN_NAME).Installed = True
End With 'Application.AddIns
vložte kód z odkazu a mělo by to fungovat

úprava: If Application.ActiveWorkbook Is Nothing Then
Application.Workbooks.Add
End If
With Application.AddIns
.Add sInstalPath & THIS_ADDIN_FULLNAME, CopyFile:=False
.Item(THIS_ADDIN_NAME).Installed = True
End With 'Application.AddIns
citovat
#020653
avatar
@eLCHa
vďaka, už to funguje OK 5.citovat

Strana:  « předchozí  1 2 3   další »

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