Modernize Studio
Language: EN
Email us

Visual Basic 6 applications, migrated to the web

Visual Basic 6 programs still handle orders, production, appointments and accounts in many companies, more than twenty-five years after the last version came out. We migrate them to web applications written in C#, keeping the data and the business rules, with or without the original source code.

Why now

Microsoft stopped supporting the Visual Basic 6 development environment on 08/04/2008. The runtime still ships with Windows and is supported for the lifetime of the Windows versions that include it, Windows 11 among them, but only as a 32-bit component and only for serious regressions and critical security issues. Controls that are not part of Windows, such as MSCOMCTL.OCX, MSFLXGRD.OCX and almost every third-party OCX, have to be installed with the application and are not covered by Microsoft.

In practice the difficulty lies with people and tools. Microsoft does not support the IDE on 64-bit Windows, developers who know VB6 are fewer every year, and each replacement PC means another installation with components registered by hand.

  1. Visual Basic 6 development environmentEnd of Microsoft support
  2. Windows 10End of Microsoft support

What we migrate

The whole program, including what it relies on outside its own code.

  • Forms and controls

    Windows with text boxes, combo boxes, grids, tabs and control arrays, including MSFlexGrid, ListView and TreeView. They become web pages that keep the layout people are used to.

  • Logic in modules and classes

    Calculations, checks and procedures spread across .bas and .cls files and form events. We move them into server-side services covered by tests.

  • Data access

    DAO, RDO and ADO code working against Access, SQL Server, Oracle or other databases, including SQL built by joining strings. The data moves to SQL Server or MySQL, or stays where it is when other systems depend on it.

  • Reports and printing

    Crystal Reports, DataReport and printouts drawn line by line with the Printer object. Each one becomes a PDF document with the same content.

  • COM components and DLLs

    ActiveX DLLs written in-house, third-party components and Windows API calls made through Declare. We identify each one and decide whether it is replaced, rewritten or no longer needed.

  • Files, settings and devices

    Configuration in INI files or the registry, imports from text files, and connections to scales, label printers or serial devices through MSComm. We check which of these still need something installed locally.

What the web version looks like

Illustrative example, fictional data

An appointment book as it might look in a VB6 program on the reception PC, and the same week in the browser.

Drag the handle, or use the arrow keys.

Where each part ends up

In VB6: Forms (.frm) and their events
In the web application: Web pages, with the logic on the server
In VB6: Modules (.bas) and classes (.cls)
In the web application: C# services covered by automated tests
In VB6: OCX controls registered on each PC
In the web application: Standard web components, nothing to install
In VB6: ADO or DAO recordsets
In the web application: Parameterised queries against SQL Server or MySQL
In VB6: Crystal Reports or DataReport
In the web application: PDF documents produced by the server
In VB6: A setup package for every workstation
In the web application: One address, opened in the browser

How the migration works

  1. Assessment within 48 hours

    You send us the installed program and its database, plus the source code (.vbp, .frm, .bas, .cls) if you have it. Within 48 hours we reply with a written report: what the program does today, where the risks are, how the web version would be organised, a fixed price for a pilot module and an estimate for the rest. It is free and commits you to nothing.

  2. Pilot module

    We build one part of the application on a copy of your real data, usually the part people use most. Your staff work with it day to day before you decide on the rest.

  3. Automated old-versus-new tests

    We record what the VB6 program produces for a set of real cases, such as prices, totals and generated documents, and check the new application against those results. Each rule we find gets an automated test that gives the same input to the old program and to the new application and checks that the results match. You receive the test results.

  4. 30-day parallel run

    When the full application is ready, the VB6 program stays in use alongside it for 30 days. Any difference shows up while the old program is still there, and we fix it within the agreed price.

Typical pitfalls, and how we handle them

  1. OCX and ActiveX dependencies

    Many VB6 programs rely on controls that do not ship with Windows, some from vendors that no longer exist, and Microsoft lists files such as GRID32.OCX and THREED32.OCX as unsupported. The assessment lists every dependency, what it does in the program and what replaces it.

  2. Variant, default properties and silent conversions

    VB6 converts quietly between strings, numbers and dates, and a line such as Text1 = rs!Total relies on default properties. A literal translation to C# or VB.NET behaves differently in edge cases, for example with empty fields or dates in another regional format. We rewrite these spots deliberately and cover them with tests.

  3. On Error Resume Next

    Common in VB6 code, it hides failures and lets the program carry on with half-written data. Where we find it, we work out what the original author was trying to avoid and handle that case explicitly. Otherwise the new application would either stop with an error or repeat the same silent mistakes.

  4. 16-bit Integer and rounding

    A VB6 Integer stops at 32,767, which is behind many overflow errors once a table grows. Currency keeps four decimal places, and Round uses banker's rounding. We reproduce the rounding the business expects and note where the old program was getting it wrong.

  5. SQL built by joining strings

    Queries assembled with & from what the user typed are open to SQL injection and break on names with an apostrophe. In the new application every query uses parameters.

  6. Missing or outdated source code

    Sometimes the source code is lost, or the copy on file does not match the program in use. A compiled VB6 program cannot be turned back into reliable source code, so we work from the running program, its database and its screens, and the assessment states which parts carry more uncertainty.

Price and payment

Assessment

Free

in writing, within 48 hours

Pilot module

€1,000–1,500

usually, paid 50% at the start and 50% on approval

The assessment is free. If you decide not to go ahead, you keep the report and owe nothing.

Prices are fixed and agreed in writing before work starts. If the scope changes, we send a new written quote and wait for your approval before doing the extra work.

For a full migration, we aim to come in 40 to 60% below a typical agency quote. We can do this because we are a small studio, with no offices to pay for and no sales team.

Prices exclude VAT.

Try the price estimator

A real migration, checked by tests

Northwind is the sample database Microsoft shipped with Access, not a client of ours. We migrated a public copy to SQLite and PostgreSQL, compared every table and every query with the original through automated tests, and built a working web application on the result. The case study gives the figures and the equivalence report lists every check.

Northwind is an Access database, but we follow the same method for Visual Basic 6: migrate, test against the original, run both side by side.

Equivalence report · Clickable preview and sample assessment (demo)

FAQ

We don't have the source code. Can you still migrate the program?

Often, yes. We work from the program in use, its database and screenshots or recordings of how people use it. The assessment states which parts we can reproduce with confidence and which need input from you.

Why not convert the code automatically to VB.NET or C#?

Conversion tools produce code that compiles, but it keeps the desktop structure, often depends on compatibility libraries and carries the old problems forward. For a web application we rebuild the screens and move the logic, using the VB6 code as the specification of what the program does.

Will our VB6 program stop working on Windows 11?

Not by itself: Microsoft supports the VB6 runtime on Windows 11. What tends to fail is everything around it, such as unregistered OCX files, lost setup packages, old database drivers and the IDE, which Microsoft does not support on 64-bit Windows.

Our program talks to a scale or a label printer. Can a web application do that?

Usually, yes, but it is the one part that may need a small program installed on the PC connected to the device. We check this during the assessment and include it in the price.

Can we migrate one part at a time?

Yes. The pilot module is the first part, and the rest can follow in stages. When possible, the VB6 program and the web application share the same database during the transition.

Which language will the new application be written in?

Usually C# with ASP.NET Core, which any .NET developer can maintain. PHP with MySQL is an option if that is what your IT provider works with.

Contact

By email:

riccardo@modernizestudio.com
Write an email

Send us the program and its database, with test data if you prefer, or a short description of what it does. We reply within one working day.

We work from Italy.

Email us