I suggest you ...

12,075 votes
Sign in
Sign in with: facebook google
Signed in as (Sign out)
You have left! (?) (thinking…)
Eugene shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →

We have read all of the comments on this thread and I’d like to thank you for providing your constructive feedback on this issue. Instead of merely repeating our support and migration guidance that has been laid out on http://msdn.com/vbrun, I’d like to address some of your specific comments here.

To play back the feedback themes we’re hearing:
- VB6 is awesome
- VB6 needs to be brought forward and maintained: in a new release or OSS

VB6 was and still is without a doubt awesome. VB6 made developers incredibly productive building a breadth of applications and as a result we have a wealth of applications and passionate developers to this day in 2014. One way I see our mission in developer tools is to empower developers to solve problems. This includes both today’s problems AND the problems of tomorrow. VB6, as you all have stated repeatedly in this thread, is an excellent tool for solving the problems of its day. We also stand behind our decision starting in 2002 to meet the current demands of our developers and the industry with .NET. For the scenarios VB6 set out to do, we see VB6 being “complete”. We feel good about VB6 being able to continue maintaining their applications for the past 15 years. Current needs ranging from distributed applications and services, to web applications and services, to devices, to new architectures and languages, required fundamental changes to the whole stack. We looked at how we could accommodate these needs through incremental changes to VB6 while maintaining its essence, and that was not possible.

To address the modern needs we would need to go far beyond updating the language. We have to remember that VB6 is not just a language. VB6 is a language, a runtime, a platform library, a tool/IDE, and an ecosystem tightly packaged together in a way that made all of them work well together. We’ve worked with many customers on migration from VB6 to .NET and found that while yes, there are language changes, the dominating factor in migration difficulties isn’t the language differences. Even open sourcing the language/runtime wouldn’t solve the fact that VB6 was thought for a different set of problems, and the fact that its strength came from the end-to-end solution provided by all these five pieces working together. Take a change like 64bit, the complete runtime, tools and ecosystem chain would need to be retooled.

So, moving forward what can we do? Where we have been able to help move forward is in our stance around support and interoperability. The VB6 runtime it is still a component of the Windows operating system and is a component shipped in Windows 8.1. It will be supported at least through 2024. This ensures your apps and components continue to run as you incrementally move forward to .NET. The support policy is here: http://msdn.microsoft.com/en-us/vstudio/ms788708. There are numerous interop strategies that we developed and evolved to enable incremental migration as you upgrade your skills, described here: http://msdn.com/vbrun.

In summary, VB6 was awesome. We agree. We don’t expect or demand anyone to throw away their code or rewrite from any of our technologies unless it makes business sense for them to do so. We have to innovate to enable our customers to innovate. It is not a viable option to create a next version of VB6. We stand by our decision to make VB.NET and the .NET Framework. We think they are awesome too. It is not feasible to open source VB6 tools chain and ecosystem. The VB6 runtime was last shipped in Windows 8.1 and will be supported for the lifetime of Windows 8.1. Support and interop are great tools to move forward incrementally.

I hope you feel we’ve listened to your feedback and that I’ve explained things well enough that you understand our decision.

Paul Yuknewicz
Group Program Manager
Microsoft Visual Studio Cloud Tools


Sign in
Sign in with: facebook google
Signed in as (Sign out)
  • VB6 reloaded commented  ·   ·  Flag as inappropriate

    Everyone expects the name “Visual Basic 6.0 phoenix” (or Visual Basic 6.0 ... and something) for the new version. Secondly, the product must run all previous VB6 projects … and the syntax must be the same … and so on.

  • Sanders commented  ·   ·  Flag as inappropriate

    I looked at several ideas on top 10. The "Debug Lambda expressions" and "Add "?." operator to C#" is (as many others) artificially inflated, at 8020 votes has only 53 comments (this can also be said of some other top 10 ideas). This idea (Bring back Classic Visual Basic, an improved version of VB6) has: ~700 FaceBook likes, ~150 Tweets, and ~800 comments. I think this is the only real sustained idea from this site.

  • Eugênio Pacelli Salgado Canaan commented  ·   ·  Flag as inappropriate

    Desabilite a transparência no Win7 e o VB vai voar...
    Aero function is the cause. Disable this and VB fly...


    On Error Resume Next
    For i = 0 To Printers.Count - 1
    Frm_Printer.List1.AddItem Printers(i).DeviceName
    Next i
    Frm_Printer.Text1 = ""
    Frm_Printer.Show vbModal
    If Frm_Printer.Text1 = "" Then
    Msg_Box "Impressora não selecionada. Desistindo..."
    Exit Sub
    End If

    Printer_Anterior = Printer.DeviceName
    Dim Printer Destino As Printer
    For Each Printer Destino In Printers
    If Printer Destino.DeviceName = Frm_Printer.Text1 Then
    Set Printer = Printer Destino
    Exit For
    End If

    Rich1.SelPrint Printer.hdc

    For Each Printer Destino In Printers
    If Printer Destino.DeviceName = Printer_Anterior Then
    Set Printer = Printer Destino
    Exit For
    End If


  • SuperDre commented  ·   ·  Flag as inappropriate

    @mim tinsay: this is not the apropriate place to ask that question, I suggest you use the excellent site: www.vbforums.com for that.. And it all depends on what kind of file (plaintext, html, word, whatever) you are trying to print.

  • harry commented  ·   ·  Flag as inappropriate

    I think they just got carried away with Java craze of the time, and must not have been basic developers on their own. Plus they had the j# code base sitting there not allowed to use because of lawsuit. I can see they say fine we will do it better! The idea of multidevice portable source is attractive but I don't think anyone has found just the right balance yet. Also they failed to realize that a healthy ecosystem has different niches, and that there new baby didn't account for existing needs without a shoehorn. Asking people who were (are) extremely productive to relearn thier ABCs at your whim while offering no benefit... Well e know how that goes

  • Anonymous commented  ·   ·  Flag as inappropriate

    @Jonathan West: "Too much pride at stake."

    Too much pride at stake if one listens to its customers? What do you lose if you do not listen to your customers? Maybe it is not pride but simply arrogance.

  • mim tinsay commented  ·   ·  Flag as inappropriate

    hey guys i need your help! how can i print a file using a printer object? i already assigned pr as printer object. and changed its colormode and other stuff but now im stuck. whats the code for printing a file? btw, im using vb6. please help. i've been up for 29 hours already. i need to finish this now!!!!! :( please kind people... please help me... :(

  • SuperDre commented  ·   ·  Flag as inappropriate

    @anomyous: just uncheck 'align controls to grid' in the options, then you have your grid AND pixel perfect adjustment.. I have my grid set to 30/30.. And I don't understand what 'Size to Widest' is different as from just selecting the controls and then select the one you which everything to resize to (with the various resize/move buttons in the toolbar).
    (BUT with Windows 7 (and vista and I guess 8)) resizing/moving a lot of standard VB6 controls really can be slow, so slow, you can even get a cup of coffee).

    But that's the beauty of VB6, everybody uses it completely different.

  • Admin of my Castle commented  ·   ·  Flag as inappropriate

    Today BASIC is in a severe shortage. Visual Studio team will waste a few more years on the useless VB.NET and after that a smarter Visual Studio team will bring back Visual Basic 6.0.

    I do not understand how the Visual Studio team can be so blind! Like they intentionally sabotage Microsoft ! For now, Visual Studio team spends money on VB.NET without any results and any feedback from us.

  • Anonymous commented  ·   ·  Flag as inappropriate


    Bzzzzt, wrong. Ctrl.Arrow moves control to the next grid line. WAY too far for fine tuning.

    Also, Access has things like Size to Widest, Sze to Tallest etc.

    If you don't like datbound controls, don't use them. But millions of others besides you find this useful

  • Eugênio Pacelli Salgado Canaan commented  ·   ·  Flag as inappropriate

    SuperDre, Milan Oparnica, Jonathan West

    Obrigado pela diversão, alegraram minha tarde chuvosa. KKKKKKKK
    Gentlemans, thanks for the fun KKKKKK

    Realy, pride... Pride is the real thing.
    Nothing else, nothing more.

  • SuperDre commented  ·   ·  Flag as inappropriate

    "Access has superior form editing. For example I can hit Ctrl-Arrow to nudge the controls 1 pixel at a time"
    uhh, didn't know that wasn't possible in VB6, I've been doing that for years..

    And I'm not particular fond of databound controls, there is always something slow and tacky with them.. Hated them in VB6 and still do in VB.NET.. I'd rather code some extra than needing to rely on databound controls..

  • MIlan Oparnica commented  ·   ·  Flag as inappropriate

    Pride could be the only reason for ignoring this thread and overall appeal of VB6 community.

    We know, and Visual Studio team knows that improving VB6 is not such a tremendous task after all, but nothing can be as dumb as an over-payed engineer obsessed by pride.

    "Sorry seams to be the hardest word."

  • Jonathan West commented  ·   ·  Flag as inappropriate

    The mistake Microsoft made was not to realise that a new platform does not require the wholesale replacement of languages which compiled to the old platform.

    Just imagine how difficult and expensive it would have been to rewrite Windows itself had Microsoft made the new .NET-compatible version of C++ as incompatible with old code as they did with the VB6 to VB.NET transition.

    High-level languages exist in part for the specific purpose of insulating the programmer from changes in platform. This basic fact of computer science was forgotten by Microsoft, perhaps in part because *they* didn't have much code of their own written in VB6.

    But you might notice that they avoided compounding their error with regard to VBA. At one point Microsoft seriously contemplated dropping VBA from Office and replacing it with some sort of embedded .NET-based language. At the time I spoke to a person who has heavily involved in the project, and I told him that it was an excellent decision if he wanted to be forever tagged as the person responsible for throwing away a third of Microsoft's revenue.

    He didn't get it until I explained in detail what would happen. There's a *lot* of VBA code in use, in a large number of very big companies. Complex Excel workbooks in financial institutions, Access workgroup databases, Access front ends to larger databases, Word templates with VBA code for automation. I pointed out that I, as a single developer had tens of thousands of users dependent on VBA code running the Word, Excel and PowerPoint templates I had created for a number of companies. Multiply that by all the people coding VBA in different companies and their users.

    I explained that if VBA goes, then no company will be able to move to a new version of Office that lacks VBA until all their VBA code has been replaced with something that will work on the replacement platform. For most companies, the existing version of Office is "good enough" and they will stick with it rather than spend a lot of money rewriting their code to get back to where they started but with a new version of Office.

    And if they don't spend their money on a new version of Office, Microsoft isn't going to make money on a new version of Office. I told him that the person responsible for the decision to drop VBA will be the person blamed for the resulting loss of revenue. I heard the gulp down the telephone line as the the implications of this finally sank in.

    VBA is still here. Microsoft made a mistake not making people's existing VB6 code compatible with the new languages, and it has cost them. But they drew back from the even bigger mistake of doing the same with VBA.

    The VBA editor hasn't been updated since, so Microsoft's commitment to VBA can hardly be regarded as unstinting, but the platform is still there and has been included in the new 64-bit versions of Office 2010 and Office 2013.

    So it wouldn't be all that hard to bring out a standalone version that could offer an upgrade path for VB6 code. I doubt that they will do it though. Too much pride at stake.

  • Anonymous commented  ·   ·  Flag as inappropriate

    Re multi-threading. I do it all the time in VB6

    It's true you can't have a multi-threaded VB6 EXE. However you can build a multi-threaded *solution*.

    Create another ActiveX EXE server and connect it through callbacks. This gives you another asynchronous thread.

    I have many production apps running to this day using this technique

  • Anonymous commented  ·   ·  Flag as inappropriate

    I've been a VBer since day 1. I learned basic in school on the Commodore PET. Been in IT for 25 years and developed for major financial/insurance firms in Toronto.

    Here's what MSFT should do - merge VB6 and Office/VBA (especially Access) to produce an ultimate development platform, as an alternative to .NET

    -Office products already contain VBA anyway so it wouldn't be a big stretch to do this.

    -VB6 doesn't support Unicode for internationalization but Access does. So replace VB forms with Access forms and controls

    -Access has superior form editing. For example I can hit Ctrl-Arrow to nudge the controls 1 pixel at a time

    -You'd have data-bound controls natively without cumbersome database coding

    -Access has a beautiful and powerful report engine to replace Crystal which I never liked anyway

    -But allow compiling to standalone EXEs rather than the Access runtime engine

    This would be the ultimate, VB6 back in action and improved with the features and functionality already present in Access

Feedback and Knowledge Base