Add-in Express prvič

V dosedanjih blogih s tematiko programiranja za Office (Razvoj dodatkov za Excel in Razvoj Excelovih dodatkov v .NET okolju) sem se dotaknil manjše primerjave med različnimi možnostmi razvoja dodatkov v Excelu.

Danes pa se bom malce bolj posvetil programski opremi Add-in Express, ki je namenjena celostnemu razvoju programskih dodatkov za Office v okolju .NET.

Dosedaj sem ta produkt primerjal samo v povezavi z razvojem v Excelu, saj je to primarno področje delovanja mojega podjetja, a sem bil v tem primeru do njega krivičen. V tem blogu pa ga bom poskušal predstaviti malce bolj obširno.

Kaj je Add-in Express?

Add-in Expres je dodatek razvojnemu okolju Visual Studio, s pomočjo katerega poenostavimo razvoj dodatkov za Office. Prednost njegova prednost pred konkurenti pa je predvsem v fleksibilnosti in hitrosti razvoja

Razvojno okolje

Add-in Expres lahko uporabljate v vseh generacijah Visual Studia: VS 2005, VS 2008 in VS 2010. In tudi v vseh različicah, torej tako v VS Express, VS Professional, VS Ultimate in VS Team System.

Podprte različice Office-a

Podprte so vse različice Office-a od 2000 dalje; torej Office 2000, Office XP, Office 2003, Office 2007 in Office 2010.

Podprti programi

Podprti so vsi programi MS pisarne; torej Excel, Word, PowerPoint, Outlook, Visio…

Največja prednost, ki nam jo produkt ponudi pa je v dejstvu, da lahko za vse programe hkrati razvijam en sam dodatek, ki bo tekel na vseh programih. Torej situacija je sledeča:

Razvoj Excelovih dodatkov v .NET okolju

Zadnjič smo si ogledali nekatere izmed možnosti razvoja Excelovih dodatkov, danes pa se bom omejil samo na razvoj v .NET okolju in podrobneje predstavil opcije na tem področju.

Seveda ne bom opisal vseh možnosti saj to niti ni mogoče. Pa tudi sicer tale zapis ni neka poglobljena študija temveč bolj moj osebni vpogled v tehnologije, ki sem jih preizkusil.

VSTO

VSTO (Visual Studio Tools for Office) je MS tehnologija za razvoj Office dodatkov. Preko VSTO lahko razvijate tako dodatke za Excel kakor tudi za vse preostale produkte za Office.

Prednosti

  • Podprta s strani MS
Slabosti

  • Za razvoj potrebujete Visual Studio 20xx Professional ali še višjega
  • Za vsako aplikacijo (Excel, Word…) potrebujete lasten projekt
  • Težko razvijate dodatek ki bi tekel na različnih verzijah Excela (vsaka verzija svoj dodatek)

Excel-DNA

Excel DNA je čudovito orodje in ga priporočam vsakemu, ki želi razvijati dodatke za Excel.

Prednosti

  • Zastonj
  • Ne potrebujete Visual Studia za razvoj, dovolj je .NET prevajalnik
Slabosti

  • Težko razvijate dodatek ki bi tekel na različnih verzijah Excela (vsaka verzija svoj dodatek)
  • Primeren izključno samo za razvoj Excelovih dodatkov, na pa tudidodatkov za druge Office programe

Add-in Express

Add-in Express ima glede na Excel-DNA eno veliko prednost in eno manjšo pomanjkljivost. Njegova velika prednost je zmožnost razvoje ene aplikacije za VSE verzije Excela hkrati, pomanjkljivost pa je da (za razliko od Excel-DNA) ni zastonj.

Prednosti

  • En projekt za vse verzije Excela hkrati
  • Preprost za uporabo
Slabosti

  • Ni zastonj

Primerjava

Ko primerjate omenjene produkte je potrebno vedeti, za katero verzijo Excela boste dodatek razvijali in katero verzijo Visual Studia uporabljate.


Kako brati sliko?

Vsak oblaček prikazuje ali lahko v izbranem okolju razvijate dodatek. Ker rdečega krogca (VSTO) ni narisanega pod Visual Studio Express to pomeni, da s to različico v okolju VSTO ne morete razvijati. Velikost oblačka pa prikazuje čez koliko verzij Excela lahko greste brez spremembe kode.

Glede na prikaz v sliki se najslabše odreže VSTO. Da bi lahko razvijali s slednjim morate imeti ustrezno verzijo Visual Studia. To je torej najslabša izbira.

Če izberete Excel-DNA pomeni, da lahko razvijate v poljubni različici Visual Studia, vendar morate imeti za vsako verzije Excela lasten projekt. Tu moram opozoriti, da lahko tudi v okoljih VSTO in Excel DNA razvijate dodatek, ki teče tako na verziji 2003 kot na 2007, vendar je potrebno vložiti kar nekaj truda.

Na drugi strani pa je Add-in Express, kjer pa lahko v enem projektu razvijate za vse verzije Excela hkrati.

Kaj torej izbrati

Po mojem mnenju je odločitev dokaj preprosta. VSTO definitivno odpade, ker nima nobene prednosti. V kolikor nimate potrebe po razvoju za več verzij Excela potem izberite Excel-DNA, ki je super produkt in povsem zastonj.

V kolikor razvijate za več verzij Excela hkrati pa se lahko potrudite in rešitev vseeno razvijate s pomočjo Excel-DNA ali pa vložite nekaj denarja in izberete produkt Add-in Express, saj z nakupom slednjega dobite tudi možnost razvoja dodatkov za druge programe v okolju Office (Word, Excel…)

Razvoj dodatkov za Excel

Ko razvijamo dodatke za Excel se prej ali slej srečamo s problemom vzdrževanja programske kode. Na izbiro imamo namreč kar nekaj različnih načinov in okolij za razvoj dodatkov.

Na eni strani imamo VBA, ki je vgrajen v večino Office produktov, na drugi strani imamo programski jezik C in WIN API ter COM, na tretji pa .NET tehnologijo in COM.

VBA

Vsekakor je se potrebno pred kakršnimkoli resnim razvojem za MS Office dodobra seznaniti z programskim jezikom VBA. Razvoj v VBA-ju je nekako najlažji izmed vseh načinov in ima mnogo prednosti:

VBA Prednosti

  • VBA bazira na programskem jeziku BASIC, ki je zelo preprost jezik
  • Zelo dobra podpora znotraj vseh Office programov
  • Vvečino problemov nam reši vgrajeno snemanje makrov – če želite kaj postoriti, začnete s snemanjem makra in ga nato razvijate dalje
  • VBA urejevalnik nam preko vgrajenega ‘InteliSence’-a aktivno in obilno pomaga pri programiranju.
  • Programska koda se ne prevaja, temveč interpretira, kar je za razvoj dobrodošlo, saj lahko programsko kod spreminjamo med razhroščevanjem programa (glej spodaj)

VBA Slabosti

  • Programska koda je zapakirana v posamezen dokument (Excelov XLS ali XLSM oz. XLA in XLAM) kar pomeni slab nadzor nad programsko kodo
  • Programske kode ni možno dajati v repozitorije programske kode
  • Otežena je souporaba kode v več projektih saj VBA ne pozna koncepta knjižnic
  • Programska koda se ne prevaja temveč interpretira (glej zgoraj), kar je lahko slabost, saj se ob prevajanju odkrijejo mnoge napake.
  • Preko VBA ne moremo storiti vsega – določene stvari lahko spreminjamo, popravljamo, dograjujemo samo preko knjižnic v C oz. C++ jezikih.

C / C++

Izmed vseh izbir je to najtežja pot, ki ima glede na naslednjo možnost, torej razvoj v .NET-u eno slabost in eno prednost

C / C++ prednosti

  • Najhitrejša koda in največja možnost nadzora nad načinom izvajanja

C / C++ slabosti

  • Zelo zapleten in dolgotrajen razvoj, slaba (zelo slaba!) literatura

.NET

Za razvoj v .NET-u pa imamo več možnosti, ki so prikazane spodaj.

.NET Prednosti

  • Možna uporaba knjižnic
  • Možna uporaba vseh znanj pridobljenih na področju –NET razvoja vključno z tisiči in tisoči objektov, ki so napisani zanj
  • Glede na prejšnjo točko seveda tudi preprosta možnost povezav do podatkovnih baz, spletnih storitev…
  • Popoln nadzor nad programsko kodo in možnost uporabe repozitorijev programske kode

.NET Slabosti

  • Neintuitivni razvoj
  • Težak dostop do ustrezne literature za dostop do Office automatization objektov

Pohitrimo Word

Ob oblikovanju diplomskih nalog se včasih srečam z nalogami, ki imajo velikoooo slik. Včasih celo toliko, da Wordova datoteka zasede po 20MB in komaj sede v poštni nabiralnik. A to ni problem, ki ga želim izpostaviti danes.

Problem dokumentov z veliko slikami, še bolj pa dokumentov z velikimi slikami, je v času njihovega nalaganja oz. času ga potrebujete da se po takšnem dokumentu sprehajate. Ko greste preko strani s slikami traja, da jih Word izriše in to zna biti moteče.

V kolikor ste se slik nagledali je uporabno, da v času urejanja teksta slike preprosto izklopite, in Word bo “magično” hitrejši. Torej Wordu zaukažete, naj slik ne prikazuje.

Word 2003

Izberite menu Orodja/Možnosti in odpre se vam novo okno, kjer se postavite na zavihek ‘Pogled’, ter tam VKLJUČITE opcijo ‘Ograde za slike’, ter IZKLJUČITE opcijo ‘Risbe’.

Word 2007 in naprej

Izberete Office gumb oz. zavihek Datoteka in tam gumb ‘Wordove možnosti‘ . Odpre se novo okno, kjer na levi strani izberite opcijo Dodatno in pod sekcijo ‘Prikaži vsebino dokumenta’ VKLJUČITE opcijo ‘Prikaži ograde slik’, ter IZKLJUČITE opcijo ‘Na zaslonu prikaži risbe in polja z besedilom’


Oblikovanje celic v Excelu – kode za datum in čas

V enem izmed prejšnjih prispevkov smo si ogledali kako lahko v Excelu definirate lasten izgled podatkov v celicah. V omenjenem prispevku pa smo se omejili samo na določanje oblike numeričnih podatkov.

Seveda pa pozna Excel tudi posebne kode za oblikovanje datumov in časov in v tem prispevku si bomo zatorej ogledali slednje.

Oblikovni znaki za datume in čase

Tabela oblikovnih znakov za datume:

Znak Pomen
m Izpiše mesec brez vodilne ničle, torej 1 do 12
mm Izpiše mesec z vodilno ničlo, torej 01 do 12
mmm Izpiše tričrkovno okrajšavo za mesec, torej jan do dec
mmmm
Izpiše ime meseca januar do december
d
Izpiše dan v mesecu brez vodilne ničle, torej 1 to 31
dd
Izpiše dan v mesecu z vodilno ničlo, torej 01 to 31
ddd
Izpiše tričrkovno okrajšavo za dan v tednu(!), torej pon do ned
dddd
Izpiše dan v tednu(!), torej ponedeljek do nedelja
yy
Izpiše dvomestno leto (torej brez 20 iz 19 spredaj)
yyyy
Izpiše vse 4 cifre v letu

Tabela oblikovnih znakov za čase:

Znak Pomen
s Sekunde brez vodilnih ničel 0 do 59
ss Sekunde z vodilnimi ničlami 00 do 59
m Minute brez vodilnih ničel 0 do 59
mm
Minute z vodilnimi ničlami 00 do 59
h
Ure brez vodilnih ničel 0 do 23
hh
Ure z vodilnimi ničlami 00 do 23

Primeri

Ker je razlaga suhoparna sem vam spet pripravil datoteko, kjer se lahko po mili volji igrate z nastavitvami … 🙂

<datoteka s primeri>

Oblikovanje celic v Excelu – kode za tekst

V enem izmed prejšnjih prispevkov smo si ogledali kako lahko v Excelu definirate lasten izgled podatkov v celicah. V omenjenem prispevku pa smo se omejili samo na določanje oblike numeričnih podatkov.

Seveda pa pozna Excel tudi posebne kode za oblikovanje teksta in v tem prispevku si bomo zatorej ogledali slednje.

Oblikovni znaki za besedilo

Tabela znakov za oblikovanje besedila:

Znak Pomen
$ + / – ( ) : presledek Ti znaki se izpišejo na mestu, kjer so zapisani
\<znak> Vsem preostalim znakom (torej znakom, ki niso napisani zgoraj) je potrebno dodati predpono \ ali pa jih zapreti med dvojna narekovaja, kot je prikazano spodaj
“besedilo” Izpiše se besedilo
*
Ta koda zapiše znak, ki ji sledi tolikokrat, da zapolni celotno širino celice (zelo uporabno!)
@ Izpiše vsebino kot tekst

Primeri

Ker je razlaga suhoparna sem vam spet pripravil datoteko, kjer se lahko po mili volji igrate z nastavitvami … 🙂

<datoteka s primeri>

Oblikovanje celic v Excelu – numerične kode

Kot sem omenil že večkrat, pozna Excel samo številke in črke oz. besede. In v odvisnosti od oblike lahko neko številko prikažemo kot število, kot procent, kot datum ali kot…

Excel ima mnogo vnaprej pripravljenih oblik celic (formatov) in ti resnično zadoščajo za večino potreb, a včasih bi želeli kaj posebnega in v teh primerih moramo pač poseči po lastni obliki celic.

V pričujočem blogu vam bom predstavil kako lahko v Excelu oblikujete številke, čez dan ali dva pa bom prikazal še oblikovanje:

  • teksta
  • datumov, časov
  • in prav posebne kode (uporaba slednjih pa je že mnogo let dokaj nesmiselna, saj jih je zamenjalo pogojno oblikovanje!)

Kako do lastne oblike celic

V verzijah Excelov pred 2007 izberete menijsko opcijo Oblika/Celice, v Excelu 2007 in novejših pa na zavihku Osnovno samo razširite okvirček Število:


V vsakem primeru se vam prikaže isto okno:

V prikazanem oknu izberete opcijo ‘Po meri‘ in vnesete novo obliko celic

Osnovna oblika

Excel loči 4 oblike: obliko za pozitivna števila, obliko za negativna števila, obliko ničel in obliko teksta. Ker je vse skupaj potrebno zapisati v eno vrstico, Excel posamezne elemente loči s podpičjem:

[pozitivna št.];[negativna št.];[ničle];[besedilo]

Oblikovni znaki za števila

Tabela oblikovnih znakov za števila:

Znak Pomen
0 (ničla) Ograda za cifro. Če na tem mestu ni cifre se izpiše 0
# Ograda za cifro. Če na tem mestu ni cifre se ne izpiše nič
? Ograda za cifro. Če na tem mestu ni cifre se izpiše presledek
. (pika) Oznaka za decimalno vejico. Da res vejico ? – mora sicer biti pika, a v SLO Excelu se bo na tem mestu prikazala vejica
% Odstotek. Excel pomnoži število s 100 in doda oznako za procent (%)
, (vejica) Ločilo tisočic. Mora biti vejica, v SLO Excelu jo seveda nadomesti pika
E+ E- e+ e- Oznaka za znanstveno notacijo.

Primeri

Četudi se vseskupaj zdi zapleteno, pa bo skozi primere vidno, da je prav preprosto. Naložite si pripeto datoteko in se igrajte … 🙂

<datoteka s primeri>

Posamezni elementi datuma v Excelu

Kot smo že spoznali, vidi Excel datume kot naravna števila. Vprašanje, ki se pojavlja pa je, kako iz nekega datuma izluščiti leto, mesec ali dan?

Rešitvi tega problema so v Excel vgrajene tri funkcije YEAR (vrne leto), MONTH (vrne mesec) in DAY (vrne dan). Vsaka izmed funkcij sprejme en sam parameter in to je seveda datum za katerega nas določen element zanima.

Če imamo torej v Excelu v celici D1 zapisan datum (12.3.2010), potem nam funkcije vrnejo sledeče:

=YEAR(D1)   == 2010
=MONTH(D1)  == 3
=DAY(D1)    == 12

Kaj pa kadar želimo iz posameznih elementov sestaviti datum?

Seveda ima Excel tudi za to, dokaj splošno zahtevo, ustrezno funkcijo in to je funkcija DATE. Funkcija sprejme tri parametre in to so seveda leto, mesec in dan. Pozor, prvi parameter funkcije je leto, drugi mesec in tretji dan – torej ravno obratno, kot sicer datum zapišemo mi.

=DATE(2010; 3; 12) == 12.3.2010

PS: Imena funkcij so seveda angleške besede za posamezne elemente: day – dan, month – mesec, year – leto, date – datum!

Kako je predstavljen čas v Excelu?

Zadnjič smo si ogledali, kako Excel vidi datume. Kaj pa čase, kako vidi slednje?

Če malce premislimo (tako kot so to naredili tudi avtorji Excela) lahko hitro pridemo do ugotovitve, da je čas samo neka podenota datuma. Čas delimo na ure, minute in sekunde (no lahko tudi podrobneje a to sedaj ni pomembno), a hkrati čas sestavlja tudi datum. 24 ur skupaj namreč predstavlja 1 dan.

In če smo zadnjič uvideli, da Excel vidi datume kot naravna števila, torej 1 je 1 dan lahko potegnemo preprost sklep, da je tudi 24 ur 1 dan oz 24 ur je v Excelu število 1. Torej je 12 ur ena polovica oz 0,5… In to razmišljanje nas pripelje do edini možne razlage, da je čas v Excelu predstavljen kot realno število.

Kako torej Excel vidi čas?

Človek        Excel
24 ur         1 = 1 dan
12 ur         0,5           (= 12/ 24)
 6 ur         0,25          (=  6/ 24)
 2 uri        0,083333333   (=  2/ 24)
15 minut      0,010416667   (= 15/(24*60))
 2 minuti     0,001388889   (=  2/(24*60))
15 sekund     0,000173611   (= 15/(24*60*60))
 1 sekunda    0,000011574   (=  1/(24*60*60))

Pa še malce “težje”

Koliko je v Excelu 2 uri 15 minut in 32 sekund? Če to najprej pretvorimo v sekunde, dobimo

2h 15m 32s = (2*60*60) + (15*60) + 32 = 8132

In če sekunde pretvorimo v Excelov čas, dobimo:
8132 / (24*60*60) = 0,09412037

Ali je to res?

Preizkus je trivialen. V Excelovo celico vpišite ‘2:15:32’ in celico oblikujte kot število… Dobili ste 0,09412037 🙂

Datumi v Excelu

Glede obravnave datumov in časov je med uporabniki Excela vedo križ. Dejsto je namreč, da Excel datume na obravnava posebej, temveč so to zanj zgolj številke!

Uporabniki pa imajo s tem večinoma težave, saj ljudje datume vidimo (obravnavamo) drugače. Za nas sta datum in čas posebni kategoriji, ki jih ne povezujemo neposredno s številkami. Dobro oba (datum in čas) sta sestavljena izključno iz številk a ljudje ne razmišljamo da je med 13. januarjem 2008 in 27. junijem 2009 preteklo 531 dni – mi rečemo, da je to pribljižno leto in pol.

No Excel pa vsak datum vidi kot številko – navadno številko in nič drugega! In številko 1 vidi kot datum 1.1.1900*

In kako vidimo, da so za Excel vsi datumi zgolj številke?

Preprosto! Postavite se v neko celico in vanjo vpišite neko številko, recimo 75423. Sedaj to celico oblikujte kot datum in v celici se bo pojavil datum 1.7.2016. Lahko pa naredite tudi obratno. V celici vpišite 13.7.2000 in to celico oblikujte ko številko – takoj se pojavi številka 63720.

In kaj nam povedo te številke?

Nam bore malo, Excelu pa preprosto število dni od 1.1.1900 (oz 1.1.1904)!

* Na računalnikih Mac (kdo jih sploh uporablja :)) Excel kot številko 1 vidi datum 1.1.1904. Zaradi te razlike lahko naletite na probleme med Excelom na Macintosh računalnikih in Excelom na »normalnih« računalnikih! A to je že zgodba zase…