< návrat zpět

MS Excel


Téma: Vytvorenie DLL z XLAM rss

Zaslal/a icon 30.1.2016 14:10

Ahoj,

potreboval by som z jedného Add-in (XLAM) vytvoriť COM add-in. Má niekto tip na rýchly a bezbolestný postup?

Zaslat odpověď >

icon #029755
eLCHa
Povedzte Kefalín, čo vy si predstavujete pod takým pojmom "rýchly a bezbolestný postup"?citovat
icon #029761
avatar
niečo, čo zvládnem bez znalosti programovania v C# apod. Moja predstava bola nejaký konvertor kódu :). Ale som asi naivný, tak jednoduché to nebude. Vydal som sa zatiaľ cestou znejasnenia (obfuskácie) kódu vo VBA. Ale i to je pomerne prácne, pokiaľ sa deje manuálne, a človek pri tom musí byť pozorný, aby kód ponechal i po zneprehľadnení funčný..citovat
icon #029762
eLCHa
Aha - takže ti jde o to, aby ten kód nikdo neokopíroval, nechápal nebo tak něco? Tak, to je asi ztráta času... Také jsem nad tím kdysi uvažoval - našel jsem nějaký kód, kde autor použil šílené názvy procedur a proměnných. Hned mně napadlo - stačí párkrát použít CTRL+H na celý projekt - popřípadě krátká procedurka...

Když nechceš C#.NET, můžeš zkusit VB.NET - ten je VBA bližší.
Nebo starý VB6 - tam to určitě taky nějak půjde.

Ale asi se na to - víš co, viď? ;)citovat
icon #029765
avatar
Ja by som sa na to, Karlíku, nevykašľal. Ale bohužiaľ, v túto chvíľu mi chýbajú potrebné znalosti :(.
Ide mi skutočne o to, aby kód k tomuto konkrétnemu projektu zostal pokiaľ možno utajený, a bohužiaľ vieme, že zaheslovanie poskytuje pomerne slabú ochranu.citovat
#029779
avatar
Hodně v kostce:

Např. můžeš vytvořit class library a tu registrovat pro COM interop. To se může hodit pro zachování xlam a "ukrytí" pouze části kódu jako jsou connectionstringy a hesla.
Tady je postup jak na to:
http://stackoverflow.com/questions/3217014/how-to-securely-store-connection-string-details-in-vba

Problém je s registrováním ve VBE nebo spíše z odreferencováním. S distribucí pomocí xlam nemám zkušenosti.

Další varianta se zachováním xlam je pomocí nástrojů třetích stran např. Secure ++ VBA pro aplikaci Microsoft Office Excel. Slibují ochranu jako u VB6 knihovny. Nemám vyzkoušené a licenci jsem nezkoumal - jen mi to vypadlo z googlu.

S přepisem do dotnetu to bude složitější. O konvertoru, který by spolehlivě převedl xlam/vba do COM-Addin jsem neslyšel. Tzn., manuální přepis do C# nebo VB.NET a použít VSTO. U COM-addin se z pohledu dotnetu bude jednat o unmanaged. Přečti si něco o PIA. Pro tebe tzn., že budeš muset, kromě jiného, řídit i svoz odpadků a uvolňování paměti.

Něco jako:
GC.Collect();
GC.WaitForPendingFinalizers();

excelApp.Quit();
Marshal.FinalReleaseComObject(excelApp);

K tomu všemu budeš potřebovat Visual studio + Office Developer Tools. Bude tě zajímat VSTO Add-in for Excel, pomocí kterého můžeš vytvořit COM doplněk. S Microsoft.Office.Interop.Excel přeprogramovat obsah xlam. Můžeš k tomu využít i API dotNetu. Doporučují si vše řádně nastudovat včetně licencování.citovat
icon #029781
eLCHa
@DAAL
Děkuji, že tady přispíváte. Máte totiž jiný pohled na věc než my - čistě programátorský. Škoda, že nejste registrovaný. Občas vaše příspěvky hledám a bylo by to snadnější ;)

O konvertoru, který by spolehlivě převedl xlam/vba do COM-Addin jsem neslyšel

Zajímala by mne jedna věc. Pokud by existoval - použil byste ho? Já jsem totiž k takovým automatickým kreátorům a transformátorům hrozně skeptický - přijde mi, že hledat chyby v něčem takovém je horší, než když to píšu ručně a tu chybu odladím po napsání úseku kódu. Je to stejné, jako záznamník maker - nedám na něj dopustit - ale když vidím kód v něm vytvořený... Navíc, tady se bavíme o doplňku xlam - takže to zase nebudou kilometry kódu.

@AL
Nerad to přiznávám, ale tady jsme prostě zaspali dobu. Visual studio je zadarmo - tedy některé verze, tzn nějaké pokusy můžeš udělat sám. Ano, zabere to čas, ale co nám zbývá. Ale jsem si jistý, že to za to stojí. Jen ten čas...
Já už za sebou nějaké pokus mám (několik let zpátky) - a za sebe doporučuji C# - u .NET je to sice jedno, rychlost je stejná, ale když si na něj zvykneš...
Nicméně, pokud chceš dělat "kód pokiaľ možno utajený", asi není jiná cesta.citovat
icon #029782
avatar
Chlapci, budem musieť najprv študovať, takže to, čo navrhuje Aleš, dokážem použiť asi až časom, kto vie, či vôbec. Každopádne, zatiaľ Vám obom ďakujem.citovat
#029783
avatar
Jen pozor i to co je napsáno v .NET jde dekompilovat a získat kód.citovat
#029785
avatar
@CMUCH1
Koukněte na Security.Cryptography.dll. Za další, jak dekompilujete knihovnu, když se k ní nedostanete?

@AL
Na komunitní blog připravuji seriály na téma vývoje pro Excel, které by Vám mohli pomoci. Pak Vám můžu poslat odkaz přes linkedin.

@eLCHa
Nepoužil, máte pravdu. Další důvod vidím v tom, že konvertor by zcela určitě nepřeměnil procedurální, strukturované a někdy i sekvenční programování (GoTo) na objekově orientovaný přístup. Ikdyž s Microsoft.Office.Interop.Excel toho docílíte taky dost těžko (interfaces apod.). Chci tím říct, že přepis takového doplňku xlam by měl obnášet kompletní revizi. Prostě s téměř každým frameworkem/jazykem se programuje jinak. Taky díky.citovat
icon #029801
avatar
Aleš, za ten prípadný odkaz Ti budem vďačný, ďakujem.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