Jarda Jirava

Vývojář a architekt řešení postavených na technologii .net framework. Zabývám se jak vývojem webových aplikací za pomoci asp.net, tak také desktopových aplikací winform. Při návrhu řešení a samotném vývoji pak využívám dlouholetých zkušeností se zpracováním obchodní logiky a pravidel aplikací získaných z vývoje komerčních aplikací pro finanční a bankovní instituce.

Microsoft MVP

Microsoft MVP - Client App dev

Poslední příspěvky

office

28
VII

Chyba Excelu 2007 Beta 2, ano nebo ne?

Jen co jsem si nainstaloval novou verzi Excelu 2007 Beta 2 ozvala se mi kamarádka s přáním, zda bych se jí nemohl podívat na jeden sešit, že by potřebovala změnit některé výpočtové hodnoty, ale nemůže je najít.

Po projití několika listů jsem taktéž nic nenašel a tak jsem začal hledat, kde se dají zobrazit skryté listy. Prostředí nového Excelu s ribbony je pěkné, ale v prvních chvílích, alespoň pro mě, nepřehledné. Spousta pěkně vyvedených obrázků, mezi nimiž jsem si nevybral takový, který by splňoval a prováděl mnou požadovanou operaci. Takže jsem klikl na oblast, kde se nacházejí ouška listů a ... taktéž nic. Ač v nabídce byla možnost Unhide ... byla neaktivní. Odněkud se přeci ty čísla musí brát, tak kde jsou, to mi v tu chvíli letělo hlavou.

Takže ještě jeden pokus, nacvičená klávesová zkratka ještě z dob, kdy jsem v Excelu programoval, Alt+F11 a otevřelo se přede mnou okno Visual Basicu for application. Prostým pohledem na seznam listů jsem zjistil, že v sešitu je skutečně o mnoho více listů, než Excel zobrazuje. Tudíž jsem neváhal a dle intuice, ach jo, to už je doba co jsem VBA nepoužíval, jsem napsal ThisWorkbook.Sheets(1).Visible = True a metodu spustil. K mému překvapení se list ukázal a skutečně na něm byly hodnoty, které bylo potřeba změnit.

Nejdříve jsme tedy zkusili u kamarádky zobrazit listy přes prostředí Excelu, ale i tam byla funkce pro zobrazení listů neaktivní. A tak nezbývalo než použít osvědčený postup přes VBA, který jsem jí přeposlal a co se nestalo, obdržela chybu. Po malé konzultaci jsem zjistil, že property Visible je enumerátor a správně by jí měla být přiřazena hodnota xlVisible. I po tom však docházelo ke stejné chybě a to konkrétně k Method 'Visible' of object '_Worksheet' failed.. To už začalo být podivné.

Nebudu zde popisovat co vše poté následovalo. Avšak zjistili jsme, že Excel je zamčený, resp. jeho některé listy jsou chráněny heslem a pomocí VBA nejdou zobrazit. Alespoň tedy ne ve verzi Excel 2003. Jelikož u mě šli tyto listu zobrazit, nechal jsem je zobrazené, sešit uložil a poslal jej zpět.

Jedná se o bezpečnostní chybu Excelu?

Nezkoumal jsem zatím detailněji na fórech zda se může jednat o bezpečnostní chybu, nebo jsem jenom něco nepřehlédl a sešit, respektive jeho jednotlivé listy, by šli zobrazit i v aktuální verzi Excelu 2003 - o čemž mírně pochybuji. V každém případě je to pro mě celkem zajímavé zjištění. Jestli máte podobnou zkušenost budu rád, pokud se ozvete. Sám zkusím ještě zapátrat abych ověřil, že se nejedná o bezpečnostní chybu, ale jen se mi povedlo něco malého přehlédnout. Případné potvrzení a odstranění této chyby, by pak jistě pomohlo nejen mě, ale i ostatním uživatelům, kteří s novými Office 2007 budou pracovat.

Publikováno pod: office
6
XII

Outlook Add-in

Typická situace ve firmě. Máte systém, který je poměrně úspěšný a prodejný, na něj máte napojeny i interní procesy. Vše funguje skvěle, všichni jsou spokojení a nic Vás netrápí. Naprosto ideální situace, teď si říkáte utopie, no skoro. Ten systém se jmenuje InFis a již jsem se tu o něm několikráte zmiňoval.

Jaký mám ale důvod zmiňovat InFis, jak se to slučuje s doplňkem pro Outlook. Ta situace, kterou jsem popisoval výše je báječná a skutečně to tak funguje, jenže do té chvíle, než poznáte všechny výhody InFisu. Najednou zjišťujete, že jej můžete využít ještě více, jenže nastává problém, přichází Vám i od partnerů a klientů několik emailů, které chcete zařadit mezi úkoly, případně si chcete naplánovat schůzku a dalších několik věcí zařídit rovnou z otevřeného emailu. Jenže co teď, jste v Outlooku a přepínat se na prohlížeč a vyplňovat, kopírovat, hledat?

Možná ještě než budu pokračovat v dalším psaní, musím zmínit, že Exchange skutečně nepoužíváme a ani nevidíme důvod, proč ji používat, neboť vlastní systém splňuje naše požadavky a pro několik oblastí, či spíše modulů neexistuje v Exchange podpora.

Použijeme Web služby a .NET Framework 2.0

InFis je intranetová/internetová aplikace, která skýtá široký potenciál pro využití právě webových služeb. Proto jsem vytvořil na straně serveru jednoduché rozhraní, ke kterému je možné se připojit a využívat tak několik služeb, které InFis poskytuje. Poté začal vývoj samotného doplňku. Stažení VSTO, doinstalování podpory pro programování Office aplikací v .NET Frameworku.

Vznik a strasti při vývoji Add-inu

Založit nový projekt typu Outlook add-in v novém VS.NET 2005 je jednoduché. Pak už jenom stačilo doplnit kód do metod ThisApplication_Startup a ThisApplication_Shutdown. Tady jsem prvně zatápal, najít správnou obsluhu události pro odchycení vytváření nového Inspectoru. Nakonec se vše podařilo a já přidal CommandBar na to správné místo, tedy do správného okna.

Aplikace se spustila a vše se zdálo být krásné. V okně zprávy se zobrazilo tlačítko, po jehož kliknutí vyskočil mě známý dialog a došlo k uložení informací přes web service. Tudíž správná chvíle, publikovat pro kolegy tento doplňek. Při svých toulkách po poznávání programování pro Office, jsem narazil taktéž na odkaz Creating an Outlook Business Contact Assistant Add-in with Visual Studio Tools for Office, který mi pomohl v doplnění Custom actions do setup projectu.

Instalace Add-inu

Přichází asi nejstrastiplnější cesta, kterou jsem zatím podstoupil. Vytvoření instalačního balíčku proběhlo v pořádku a přišlo první nasazení. Instalace .NET Frameworku 2.0 a následná instalace mého balíčku. A překvapený údiv nad tím, že tlačítko, které se mělo zobrazit se nezobrazuje. Nastalo pátrání, následný dotaz do diskuze a stále bez výsledku. Jelikož to příliš nehořelo, nechal jsem to chvíli uležet, než jsem začal bádat a zkoušet dále. Pak jsem si uvědomil, že by mohl být problém s PIAs. Došlo tedy k jejich instalaci a stále nic. Tak ještě doinstalovat podporu pro programování pomocí .NETu. Nepomohlo, já už fakt nevím, sklonil jsem hlavu a pomalu odcházel na své místo. Když si kolega všiml, že v odkazu na doplňek v nástrojích Outlooku je cesta, kterou na svém počítači nemá.

Asi tušíte, co to se mnou udělalo, údiv, překvapení, mírný vztek. Jak je tohle možný, vždyť došlo k úspěšné instalaci, všechno by přeci mělo být instalováno, tak co tam jenom chybí. Začal jsem tedy prohledávat internet a hledal jsem AddInLoader.dll a zjistil, že ten se nachází v instalaci VSTOR. Download, install, funguje. Doplňek se v pořádku nahrál a je funkční. Je vyhráno, ale proč se tohle nezahrne do instalačního balíčku? A zmínka o tom téměř nikde. To téměř zmiňuji proto, že jsem nakonec, poté co jsem věděl co hledat našel odpověď (ta poslední).

Rekapitulace

Pokud se rozhodnete nasadit Add-in pro Office 2003 napsaný za pomoci .NET Frameworku 2.0 a VSTO, zkontrolujte si, že na klientovi je:

  • správně nastavena CAS policy pro adresář se soubory s doplňkem a manifestem na Execution a samotné dll má nastaveno FullTrust oprávnění
  • provedena registrace doplňku v registrech jejíž popis najdete v odkazu výše
  • přítomen AddInLoader.dll, který se nachází v instalaci VSTOR
Publikováno pod: office