As annouced previously, we just release the Free and Professional editions of VBReFormer 6.4.

This new version improve such a lot the decompiler engine and this is one of the most important release I’ve done until now.

The decompiler engine has been improved as it can now perform variable type determination. This means that VBReFormer is now able to guess the type of a variable and argument from its use inside the code.

We also added for/next support, and multi-dimensional array-related statements decompilation.


Original source code:

Private Sub Command1_Click()
    Dim myArr1(0 To 20, 14 To 50, 25 To 45) As String
    MsgBox UBound(myArr1)
    MsgBox LBound(myArr1)
    Dim myArr2() As Long
    ReDim myArr2(0 To 40, 30 To 55)
    MsgBox UBound(myArr2)
    MsgBox LBound(myArr2)
End Sub

Recovered source code:

Private Sub Command1_Click()
    Dim var_2 (0 To 20, 14 To 50, 25 To 45) As String
    var_3 = MsgBox(UBound(var_2, 1), 0)
    var_8 = MsgBox(LBound(var_2, 1), 0)
    Dim var_9() As Long
    ReDim var_9(0 To 40, 30 To 55)
    var_10 = MsgBox(UBound(var_11, 1), 0)
    var_12 = MsgBox(LBound(var_11, 1), 0, , , var_13)
End Sub

Lot of other improvement has been made, here is the full details:

New: Improved support of file I/O operation statements:

  • __vbaGetOwner4
  • __vbaGetOwner3
  • __vbaGet3

New: Improved support of error statements:

  • __vbaOnError
  • __vbaResume
  • __vbaGenerateBoundsError

New: Improved support of array-related statements:

  • __vbaAryLock
  • __vbaRedim
  • __vbaRedimPreserve
  • __vbaAryConstruct2

New: Improved support of FOR / NEXT loop-related statements:

  • __vbaForEachAry
  • __vbaNextEachAry
  • __vbaExitEachAry
  • __vbaForEachCollVar
  • __vbaForEachVar
  • __vbaForEachCollAd
  • __vbaNextEachCollVar
  • __vbaNextEachCollAd
  • __vbaExitEachColl
  • __vbaExitEachVar
  • __vbaCyForInit
  • __vbaVarForInit
  • __vbaVarForNext
  • __vbaRaiseEvent
  • __vbaErase

New: Improved support of internal system statements:

  • __vbaSetSystemError
  • __vbaFreeVar
  • __vbaFreeObj
  • __vbaFreeStr
  • __vbaFreeStrList
  • __vbaFreeObjList
  • __vbaFreeVarList

New: Improved support of string statements:

  • rtcCompareBstr
  • rtcInStrChar

New: Other improved statements:

  • __vbaObjIs
  • __vbaStopExe
  • VarPtr

New: support of type consistency at decompilation time, this means that the decompiler engine can now be determinist about variable type

New: Support of OLE, PropertyPage, and UserDocument elements in GUI recovery & edition

New: Support of COM / OLE property edition


New: New settings windows that allows to:

  • edit colors of source code’s syntax highlighting


  • choose if you want only Visual Basic, assembly, or both (mixed) differently for viewing and saving
  • choose your own prefix for private method and private variable name
  • load (or not) the project in Visual Basic, or the destination folder once you saved it


Fixed issue on Import Table use

Fixed issue on Font properties in property editor and GUI edition

Fixed issue on saving settings

Fixed issue on default language setting (French was setup by default, now replaced by English language).

Fixed issue on VBReFormer setup packages for x64 Windows operating system

Fixed issue at loading some ActiveX libraries (“Run-time error `339`; Component `MSCOMCT2.OCX or one of its dependencies not correctly registered. “)

Fixed issue on resource viewer

Fixed issue on re-opening a VB6 application / library previously edited with VBReFormer Pro

Fixed issue on resource image preview, export, and replacement

Fixed issue on false negative detection of VBReFormer by antivirus or browsers as malicious software

Fixed “Object not found” exception at opening some executable

Fixed “About” dialog