Legacy modernisering VB6 / VBA migratie COM-vrij eindbeeld

Visual Basic applicatie vervangen door moderne software

VB6, VBA en classic ASP draaien nog dagelijks bij honderden Nederlandse bedrijven. De applicaties dienden trouw, vaak meer dan twintig jaar. Maar de Visual Basic 6 IDE is sinds 2008 officieel uit ondersteuning, de runtime krijgt op Windows 11 nog slechts "best-effort" support en de pool ontwikkelaars die VB6 en COM nog kennen, krimpt elk jaar verder. Wij vervangen uw Visual Basic-applicatie door een onderhoudbare webapplicatie of desktop-app, met behoud van alle bedrijfslogica en data.

Form1.frm → app.tsx
Private Sub cmdSave_Click()
On Error Resume Next
rs.AddNew
rs!Naam = txtNaam.Text
End Sub
async function saveCustomer() {
await api.post('/customer',
{ naam: form.naam })
}

VB6 is officieel uit de tijd: wat betekent dat voor je legacy-applicatie?

Visual Basic 6.0 verscheen in 1998 en was jarenlang de snelste manier om Windows-applicaties met formulieren, databases en COM-componenten te bouwen. Maar het tijdperk is voorbij. Microsoft staakte de mainstream support van de VB6 IDE in 2005, gevolgd door extended support in 2008. Sindsdien wordt alleen de runtime nog meegeleverd met Windows, en zelfs dat met steeds duidelijker disclaimers.

Wat de officiele status feitelijk inhoudt

  • ! VB6 IDE: end-of-life sinds 2008 — geen patches, geen security-fixes, geen MSDN-support meer. Het MSDN-archive is read-only.
  • ! VB6-runtime op Windows 11/12: best-effort — Microsoft levert MSVBVM60.DLL nog mee, maar belooft geen functionele garanties bij feature-updates.
  • ! VBA krijgt minder aandacht — Office blijft VBA ondersteunen, maar Microsoft pusht actief naar Office Scripts (TypeScript) en Power Automate als opvolgers.
  • ! 32-bit-only — VB6-binaries draaien alleen 32-bit; bij volledig 64-bit Windows-omgevingen vereist dat een WoW64-compatibiliteitslaag.

De stille risico-stapel

  • ! Hardware-driver-incompatibiliteit — oude COM-add-ins voor scanners, weegbruggen, kassalades en barcode-printers werken niet meer met moderne USB-stacks of TWAIN-versies.
  • ! Ontwikkelaar-schaarste — medewerkers die VB6, COM en ADODB.Recordset doorgronden, gaan met pensioen. Vervanging via uitzendbureau is bijna onmogelijk.
  • ! Security-patches komen niet meer — bekende kwetsbaarheden in MSCOMCTL.OCX, Crystal Reports-controls of oude ActiveX-componenten worden niet meer gepatcht.
  • ! Auditpressie — ISO 27001, NIS2 en SOC 2-audits scoren ongepatchte runtime-componenten als compliance-risico.

Concreet: zolang uw VB6-applicatie draait, valt er weinig op. Pas zodra Windows een breaking-change uitlevert, een COM-control niet meer registreert, of de laatste medewerker met VB6-kennis vertrekt, ontstaat acute druk. Dan is een rustig migratietraject geen optie meer. Wij helpen u te vervangen voordat dat moment zich aandient. Lees ook onze pagina over legacy software vervangen voor de bredere context van legacy-modernisering.

6 redenen om uw Visual Basic-applicatie nu te vervangen

Geen enkel migratietraject is goedkoop. Maar bij VB6 en VBA tikt de klok. Dit zijn de zes meest voorkomende triggers waarop onze klanten besluiten te vervangen.

Runtime onzeker op Windows 11/12

Functie-updates van Windows kunnen MSVBVM60.DLL, OCX-controls of de IDE breken. U hebt geen contractueel recht meer op een fix. Wat vandaag werkt, kan na de volgende KB-update stuk zijn.

Schaarste aan VB6-kennis

Ontwikkelaars die nog vlot werken in VB6, met COM/OLE en handmatig ADODB-recordset-management, gaan met pensioen. Een opvolger zoeken via een marktconforme vacaturetekst is in 2026 vrijwel onmogelijk geworden.

Security: geen patches meer

Bekende CVE's in oude ActiveX-controls, Crystal Reports-versies of MSCOMCTL.OCX worden niet meer hersteld. Voor NIS2-, ISO 27001- en BIO-trajecten is een ongepatchte runtime een rode vlag.

Hardware en drivers werken niet meer mee

VB6-applicaties leunen vaak op COM-add-ins voor specifieke hardware: scanners, kassalades, barcode-printers, weegbruggen, RS-232-terminals. Moderne 64-bit Windows met USB-stack-vernieuwingen breekt die TWAIN- of SerialPort-koppelingen. Een fix is niet meer beschikbaar van de oorspronkelijke leverancier.

!
TWAIN-scanners zonder 64-bit driver
!
Oude OCX-controls voor weegbrug- of telmachine-uitlezing

Geen browser, geen mobiel, geen cloud

VB6-applicaties zijn fat-clients met een Windows-installatie per werkplek. Thuiswerkers, monteurs in het veld, magazijnpersoneel met een tablet of klanten die zelf moeten kunnen inloggen, kunnen de applicatie niet bereiken zonder VPN, RDS of Citrix — en dat tikt door in licentiekosten.

!
Geen mobiele werkplek mogelijk
!
Citrix/RDS-licenties als duur lapmiddel

Integraties met moderne SaaS lopen vast

REST/JSON, OAuth 2.0, webhooks, GraphQL, JWT-tokens: het standaard-vocabulaire van moderne SaaS. VB6 spreekt het via tussenlagen of helemaal niet. Wilt u koppelen met een nieuw boekhoudpakket, CRM, e-signing-platform of factuur-portal, dan loopt het traject vast op het feit dat de VB6-kant niet mee kan.

Onze migratie-aanpak: code-archeologie tot parallelrun

VB6-projecten zijn zelden goed gedocumenteerd. De originele bouwer is meestal vertrokken, de business-logic zit verspreid over Form-events, modules en dynamische SQL in stringconcatenatie. Onze aanpak is daarom altijd reverse-first: we begrijpen pas, dan herbouwen we.

1

Code-archeologie

We pakken de VB6-projectfiles (.vbp, .frm, .bas, .cls), inventariseren alle Form-events en module-functies en in kaart brengen welke COM-references actief zijn. We tellen Form_Load- en _Click-handlers, vinden alle GoSub/GoTo-spaghetti en markeren de On Error Resume Next-blokken die stilte over fouten leggen. Alles gaat in een leesbaar inventarisatie-rapport.

2

Business-logic-extractie

Naast de zichtbare formulieren zit de business-waarde in de berekeningen, validaties en workflows. We extraheren die logica, schrijven hem op in pseudocode of TypeScript en valideren tegen de productiedata. Alleen wat aantoonbaar werkt en gebruikt wordt, gaat mee — dood code blijft achter.

3

COM-dependencies inventaris

Welke OCX'en, type libraries en COM/OLE-servers gebruikt uw applicatie? Crystal Reports-versie, MSCOMCTL, ADODB, MSXML, RDO, oude DAO 3.6: we maken een complete dependency-graaf en bepalen per item of we vervangen, vervlakken of een runtime-shim moeten bouwen.

4

Parallelrun en data-migratie

De nieuwe applicatie draait een aantal weken naast de oude. Gebruikers voeren in beide systemen in, of de oude wordt nightly gespiegeld naar de nieuwe. Pas als de discrepantie nul is en gebruikers vertrouwd zijn, gaat de oude applicatie uit. MDB- of ACCDB-files worden gemigreerd naar PostgreSQL of SQL Server met een gevalideerde transformatie.

Voor klanten met een Microsoft Access-front-end op een gedeelde MDB werken we vaak in twee stappen: eerst de back-end vervangen (zie Access-database vervangen), dan de VB6/VBA-front-end. Dat verlaagt het risico en spreidt de investering.

Wat wij vervangen: forms, controls, data-access en rapportages

Een VB6-applicatie bestaat uit een aantal vaste onderdelen. Voor elk onderdeel hebben wij een moderne tegenhanger paraat.

Forms en controls

.frm-bestanden met TextBox, ListBox, DataGrid, MSFlexGrid, DTPicker en al hun custom OCX-uitbreidingen worden vervangen door React- of Blazor-componenten met dezelfde indeling, validaties en keyboard-shortcuts. Snelheid en muiloze bediening blijven, want kassamedewerkers en planners werken vaak alleen via het toetsenbord.

VBA-modules en COM-add-ins

VBA-macro's in Excel of Word, COM-add-ins voor Office en zelfgeschreven .DLL'en in VB6 of VC++ — we extraheren de logica, herschrijven hem in TypeScript of C# en zetten hem op een server. Office-integratie kan via Office Scripts, Microsoft Graph of een eigen API.

DAO/ADO data-access

ADODB.Recordset, DAO 3.6 op MDB-files of directe ODBC-connecties met inline SQL: we vervangen de hele data-laag door een API met parametrized queries, prepared statements en een ORM zoals Prisma of Entity Framework. SQL-injectie via stringconcatenatie verdwijnt en transactiebeheer wordt expliciet.

Crystal Reports en rapportages

Crystal Reports 8/9/10/11-rapporten, Active Reports, of zelfgeschreven Print-routines op een Form — we converteren de output naar moderne PDF-rendering (puppeteer, wkhtmltopdf, Microsoft Reporting Services), interactieve dashboards (Metabase, Power BI Embedded) of gewoon een nette HTML-printview. Layout-pixels blijven identiek waar dat nodig is voor compliance of klantdocumenten.

Hardware-integraties

Barcode-scanners, kassalades, weegbruggen, RFID-readers, label-printers (Zebra, Honeywell), TWAIN-scanners, RS-232-terminals: we koppelen ze opnieuw via WebUSB, WebSerial, een lokale device-agent of een MQTT-broker op een Raspberry Pi-gateway. Zo werkt uw industrial-app verder zonder afhankelijk te blijven van 32-bit OCX'en.

Typische VB6-applicaties die wij vervangen

Drie use-cases die wij vaak tegenkomen, met de keuzes die wij in zo'n traject maken.

Industrial-app op de werkvloer

VB6-applicatie op een industrie-PC in een productiehal, gekoppeld aan een SCADA-systeem, weegbrug en MES-database. Vervangen door een Electron-app of Progressive Web App met een lokale device-agent (Node.js of Rust) die seriele poorten en MQTT-topics afhandelt. Front-end op browser, back-end op een lokale Linux-server, replicatie naar Azure of AWS voor managementrapportage.

Kassa- en orderingang-systeem

VB6 op een Windows-kassa met OCX voor kassalade, bonprinter en pinterminal. Vervangen door een browser-app op Chrome OS Flex of Windows IoT, met WebUSB voor de pinterminal-koppeling, een ESC/POS-bonprinter via een lokale agent, en een centrale REST-API voor voorraad en betalingen. Offline-first met Service Workers, zodat de kassa blijft werken bij internetstoring.

Productie-planning en orderbeheer

VB6-front-end op een gedeelde Access-MDB, gebruikt door planners en werkvoorbereiding. We vervangen de back-end eerst door PostgreSQL of SQL Server (zie ERP-systeem op maat), daarna de front-end door een React-applicatie met realtime updates via WebSockets. Plannen, orderingang, capaciteitsoverzicht en exports naar Excel of het ERP blijven herkenbaar voor de gebruikers.

Backoffice voor financiele administratie

VBA-macro's in een groot Excel-bestand met formules, koppelingen naar SQL Server en geautomatiseerde rapportages naar accountant en directie. We hercoderen de logica naar een webapp met explicit datatypering, audit trails en autorisatie per rol. Voor het Excel-gevoel houden we toetsenbordbediening en spreadsheet-grids met copy-paste-ondersteuning. Lees ook over custom software laten maken voor de bredere context.

Visual Basic 6 versus moderne webapplicatie

Aspect Visual Basic 6 / VBA Moderne webapplicatie
Microsoft-ondersteuning IDE end-of-life sinds 2008, runtime best-effort op Win 11/12 Actief onderhouden frameworks (React, .NET, Node)
Werkplek Windows-only, fat-client per PC, 32-bit Browser, mobiel, tablet, laptop, kiosk
Data-laag DAO/ADO met inline SQL, vatbaar voor injectie API met parametrized queries en ORM
Foutafhandeling On Error Resume Next maakt fouten onzichtbaar Try/catch met centrale logging en alerting
Deployment Setup.exe per werkplek, COM-registratie nodig Browser-load of CI/CD-deploy, geen client-installatie
Auditeerbaarheid Geen ingebouwde audit log, vaak handmatig Audit trail per record, NIS2/ISO 27001-ready
Talent Schaars, gemiddeld leeftijd > 50 jaar Volop beschikbaar in Nederland

Veelgestelde vragen over VB6- en VBA-vervanging

Op Windows 11 draait MSVBVM60.DLL nog en starten de meeste VB6-applicaties zonder problemen. Maar Microsoft kwalificeert de runtime-support als "best-effort" — geen contractuele garantie, geen security-fixes voor de IDE-componenten, en bij feature-updates van Windows kunnen specifieke OCX-controls breken. Voor Windows 12 is op het moment van schrijven niets toegezegd. Voor productiekritische applicaties is dat te dun.

We inventariseren eerst welke versie u draait (Crystal 8.5, 9, 10, 11, XI of nieuwer) en welke datasources hij raakt. Daarna kiezen we per rapport: omzetten naar een PDF-rendering met puppeteer of wkhtmltopdf, naar een interactief dashboard in Metabase of Power BI, of naar een server-side rapportage via Microsoft Reporting Services. Layout-getrouw waar dat moet voor klantdocumenten of compliance, eenvoudiger waar dat kan.

Ja. Business-logic-extractie is de kern van onze aanpak. We lezen de VB6-code regel voor regel uit, schrijven de logica op in pseudocode of TypeScript en valideren de uitkomsten tegen de productiedata. MDB- of ACCDB-databases of SQL Server-tabellen worden gemigreerd met een gevalideerde transformatie en steekproefcontroles. Tijdens de parallelrun lopen oud en nieuw naast elkaar tot de uitkomsten identiek zijn.

Dat is eerder regel dan uitzondering. Onze code-archeologie-fase is daar precies voor bedoeld: we openen de .vbp-, .frm-, .bas- en .cls-bestanden, brengen alle Form-events en module-functies in kaart, traceren COM-references en bouwen op basis daarvan een leesbare functionele documentatie. Daarna interviewen we de eindgebruikers om vast te stellen wat in de praktijk daadwerkelijk gebruikt wordt en welke randgevallen zij kennen.

Ja. VBA-macro's in Excel of Word vervangen we doorgaans door een webapplicatie of een Office Script (TypeScript) wanneer de werkstroom in Office moet blijven. Voor VBA in Microsoft Access kijken we eerst of we de Access-back-end kunnen ontkoppelen (zie onze pagina Access-database vervangen). Daarna vervangen we de Access-front-end door een browsergerichte applicatie met dezelfde formulieren en rapporten.

Voor moderne hardware kiezen we WebUSB of WebSerial in een Chrome- of Edge-browser. Voor oudere randapparatuur installeren we een lokale device-agent (Node.js, .NET of Rust) die op de Windows- of Linux-werkplek draait en de browser via een lokale WebSocket of REST-endpoint bedient. Voor industriele omgevingen leggen we vaak een MQTT-broker op een Raspberry Pi of industriele gateway tussen, zodat de browser-app stateloos blijft.

Ja. We werken altijd met een parallelrun. Uw bestaande VB6-applicatie blijft live tot de nieuwe applicatie volledig is geverifieerd. We synchroniseren data nightly of realtime, gebruikers oefenen op de nieuwe omgeving en pas bij groen licht zetten we de oude applicatie uit. Geen big-bang go-live waarin alles tegelijk fout kan gaan.

Standaard React of Next.js voor de front-end, Node.js of .NET voor de back-end, PostgreSQL of SQL Server voor de database, en Azure of AWS in een Nederlands of EU-datacenter voor de hosting. We zijn agnostisch waar het kan: als uw beheerafdeling al .NET- of Java-stacks beheert, sluiten we daarop aan. Het uitgangspunt is dat de nieuwe applicatie tien jaar onderhoudbaar moet zijn met talent dat in 2026 en daarna in Nederland te krijgen is.

Klaar om uw Visual Basic-applicatie te vervangen?

Laat Appfront uw VB6-, VBA- of classic-ASP-applicatie ontleden en herbouwen tot een onderhoudbare moderne applicatie. We starten met een legacy-scan, waarna u precies weet wat de risico's zijn en wat de aanpak kost. Geen big-bang, wel een rustige parallelrun met behoud van uw bedrijfslogica en data.

Edit Content