Excel-DNA är ett open-source-bibliotek som gör det möjligt att skapa högpresterande tillägg (Add-ins) till Excel med hjälp av moderna språk som VB.NET och C#. Medan VBA har tjänat oss väl i decennier, öppnar Excel-DNA dörren till hela .NET-universumet direkt inifrån dina kalkylblad.
Full tillgång till .NET: Du kan använda moderna bibliotek för databaser, kryptering, maskininlärning och nätverkskommunikation som inte finns tillgängliga i VBA.
Enkel distribution: Istället för att skicka kalkylblad med dolda makron kan du kompilera ditt projekt till en enda .xll-fil. Användaren behöver bara öppna filen för att funktionerna ska dyka upp.
Versionshantering: Eftersom koden skrivs i Visual Studio kan du använda professionella verktyg som Git för att hålla koll på ändringar – något som är nästintill omöjligt med VBA-kod som ligger gömd i en .xlsm-fil.
Säkerhet: Kompilerad kod är svårare att manipulera eller stjäla än öppna VBA-skript.
Svaret är ja, men med en viktig distinktion:
Beräkningar (UDF): Om du skriver egna funktioner som gör tunga matematiska beräkningar (t.ex. Monte Carlo-simuleringar) är .NET-kod ofta 3–10 gånger snabbare än VBA. Dessutom har Excel-DNA stöd för flertrådade beräkningar, vilket gör att Excel kan använda alla processorns kärnor samtidigt för att räkna ut dina formler.
Cell-interaktion: Om ditt program bara läser och skriver enstaka värden till celler via COM-gränssnittet kommer du inte märka någon större skillnad. Hemligheten med Excel-DNA är dock att det ger tillgång till Excels C API, vilket är det snabbaste sättet som finns att prata med Excel "under huven".
Absolut. Detta är en av Excel-DNA:s största styrkor.
I VBA stannar hela Excel ofta upp (fryser) medan ett nätverksanrop görs. Med Excel-DNA och VB.NET kan du använda asynkrona funktioner (Async/Await).
Exempel: Du skriver en funktion =HÄMTA_AKTIEKURS("MSFT").
Cellen visar först #VÄNTAR... medan programmet hämtar data i bakgrunden.
Du kan fortsätta skriva i Excel under tiden.
När datan landat uppdateras cellen automatiskt med det rätta värdet.
Installation: Användaren måste ha .NET Framework (eller .NET 6+) installerat på sin dator (vilket de flesta Windows-datorer redan har).
Inlärningskurva: Det kräver mer kunskap att sätta upp ett projekt i Visual Studio än att bara trycka Alt+F11 i Excel.
Macro Recorder: Du kan inte "spela in" dina handlingar till Excel-DNA-kod på samma sätt som du kan med VBA.
Många undrar varför man inte bara använder Microsofts egna VSTO (Visual Studio Tools for Office).
UDF-stöd: VSTO har inget inbyggt stöd för att skriva egna kalkylbladsfunktioner (UDF). Excel-DNA gör detta extremt enkelt.
Snabbhet: Excel-DNA använder det snabbare C-gränssnittet, medan VSTO är begränsat till det långsammare COM-gränssnittet.
Sammanfattningsvis: Om du vill förvandla Excel från ett enkelt kalkylblad till ett kraftfullt arbetsverktyg som pratar med externa system och hanterar stora datamängder, då är Excel-DNA vägen att gå.
Behöver du hjälp med att sätta upp ditt första projekt eller vill du se ett exempel på en asynkron API-funktion i VB.NET?