“Af gammelt jern smedes nye våben”

Af gammelt jern smedes nye våben” siger et meget gammelt dansk ordsprog.

…og i forbindelse med Excel-integrationen i ældre Klassiske Dynamics C5’ere på moderne operativsystemer som Windows 8/8.1 og Windows Server 2012/2012R2 kan der være lidt (men også kun lidt) om snakken.

 

Sagen er at Klassisk Dynamics C5 før version 2008 brugte nogle DLL’er i sin Office integration (ConMSE32.DLL og ConMSW32.DLL – E og W står i øvrigt hhv. for Excel og Word) – og ifm. med Windows 8 og Windows Server 2012 dør klienten med en ulovlig handling når de kaldes…

 

Et nærliggende fix ville være at finde nogle nyere DLL’er, men de findes bare ikke. For i Klassisk Dynamics C5 2008 blev funktionaliteten ændret og DLL’erne udgik – og i Klassisk Dynamics C5 2012 blev det igen erstattet af et XAC framework (som vi så lige kan sige tak til Martin Broholm Andersen fra Broholm IT ApS for 🙂 – det var nemlig en hel fantastisk forbedring af Klassisk C5!)

 

Men hvad hulen gør man så?
Er det en enkeltbruger Klassisk C5 på ny Windows – eller en installation hvor alle brugere benytter ny Windows (Windows 8 eller nyere, eller Windows Server 2012 eller nyere), så KAN man vælge at stjæle de tilsvarende DLL-filer fra en Klassisk C5 3.0 SP3 – for det “sjove” er at det faktisk umiddelbart ser ud til at virke. Men næppe super stabilt?

 

MEN, MEN, men – det er jo ikke den helt rigtige løsning, for moderne Excel og Word har problemer med de gamle DLL’er. Pudsigt nok er det ikke lykkedes os at få Klassisk C5 3.0SP3 DLL’ere til at fungere korrekt på knap så nye Windows-udgaver som fx Windows 7 og Vista eller Windows Server 2005 og 2008. Så kører du også Klassisk C5 på de operativsystemer, er det absolut IKKE vejen frem…

 

Men hvad gør man så?

Er din Klassiske C5 applikation nyere end 4.0 (dvs. 2008, 2010 og 2012), så bør du omskrive din egen kode til at bruge Excel og Word funktionaliteten i den Klassiske C5 version du nu kører på. Der er intet i standardapplikationen der bruger DLL’erne, så det må være noget du selv har glemt at opgradere :-).

Naturligvis er det nye XAC i Klassisk C5 2012 at foretrække – så overvej at opgradere hele Klassisk C5’eren til nyeste Klassisk C5 2012 nu hvor du er i gang…

Som regel er det langt bedre løsninger end at bruge 10 år gamle DLL’er :-).

 

Er din applikation ikke Klassisk C5 2012 og er det for omstændigt at opgradere, så kan du desværre ikke “bare” backporte de nødvendige XAC-elementer i applikationen til den applikation du nu kører i… Det vil nemlig kræve en kerneopgradering til Klassisk C5 2012 (se evt. vores blog-indlæg om det her!), men da XAC-elementerne bruger kernefunktionalitet fra C5 2012 der bliver slået fra når du kører med -Qxxx mindre end -Q440 så vil det IKKE fungere…

 

Men der findes stadig en mulighed for dem på ældre Klassisk Dynamics C5’ere: Martin fra Broholm IT ApS sælger i skrivende stund stadig XAC-elementerne til ældre versioner af Klassisk Dynamics C5 (fra version 2.1 og frem).

Det er ikke helt samme løsning, for XAC bruger som sagt Klassisk Dynamics C5 kernefunktionalitet som netop først kom i Klassisk Dynamics C5 2012. Så Martins oprindelige løsning indeholder en XAC.DLL der indeholder den nødvendige funktionalitet. Og som formentligt også virker på Windows 8+ / Windows Server 2012+ (ellers er det bare at få Martin til at fixe det 🙂 ).

Værd at nævne er også at det ikke er en 100% 1:1 løsning ift. det der er i Klassisk Dynamics C5 2012 – der er mindre forskelle bl.a. i “lifetime management”, hvor Klassisk Dynamics C5 2012 automatisk rydder op efter sig – det gør Martins DLL-version ikke.

Er du interesseret i Martins XAC-løsning til Klassisk Dynamics C5 før version 2012? Så fang ham på LinkedIN og husk at hilse fra Systemconnect :-).


Tilføjet 25.04.2015: Klassisk Dynamics C5 version 2008 og 2010 (og muligvis også tidligere) har problemer med at vise Excel når der afvikles på en 64 bits Windows 8.1. Fejlen er både set med Excel 2007 og 2013 (begge 32 bit) – og viser sig ved at Excel ikke vises. Startes Excel derefter med et andet regneark, vises C5-regnearket dog også.

Henrik Hansen fra Microsoft har dog fundet et fix som jeg lige vil dele her: COMPRINTEXCEL.FNC funktionen rettes således (de to fremhævede linjer er justeret som anført i kommentaren:

[...]
//
SET COMPush(&HCOM, &HCOM)
SET COMPushVariant(&HCOM, 'VT_BOOL', '-1' ) // "TRUE" er ændret til "-1"
SET &HR = COMPut(&HCOM, 'Visible', 0)
#ShowError(&CMD+':'+'COMPut,Visible')
//
SET COMPush(&HCOM, &HCOM)
SET COMPushVariant(&HCOM, 'VT_BOOL', '-1' )  // "TRUE" er ændret til "-1", er muligvis ikke nødvendig, men skader tilsyneladende ikke
SET &HR = COMPut(&HCOM, 'UserControl', 0)
#ShowError(&CMD+':'+'COMPut,UserControl')
[...]

Se evt. indlægget om fejlen på Klassisk Dynamics C5 forum ved at klikke her!