Windows Update 2019-08 Cumulative Update has broken VBA code use case

Anonymous
2019-08-14T10:33:56+00:00

An issue with VBA code has started to be seen by some of my users and also by me this morning. I have tracked it down to have been caused by the latest 2019-08 Cumulative Update (e.g. KB4511553) and it is affecting all combinations of Windows and Office that I have seen so far- from Windows Server 2008 to Windows 10 & Office 2003(!) to Office 2016. 

The test code below demonstrates the problem. The method "Test" executes with no errors before the 2019-08 cumulative update is installed (or after it is uninstalled). However, after the update, the scenario of passing an empty ParamArray parameter to another method as a Variant parameter causes an error to be thrown on the declaration line of the second method. (Error 5: Invalid procedure call or argument).

Sub Test()

    Test1 "A", "B"   'Works OK with and without Windows Update

    Test1            'Fails after Windows Update

End Sub

Sub Test1(ParamArray P() As Variant)

    Test2 P

End Sub

Sub Test2(ByVal P As Variant)    'Error occurs on this line

End Sub

This is causing errors in my Microsoft Access application, but I have also tried this code in Word 2016 and the same issue occurs there too.

Can somebody validate this, please? I'm not really sure what the correct way of reporting this problem is.

Thanks

Chris

Microsoft 365 and Office | Access | For home | Windows

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments

43 answers

Sort by: Most helpful
  1. Anonymous
    2019-08-19T13:53:02+00:00

    For Windows 7, have you applied KB 4517297 yet?

    https://support.microsoft.com/en-us/help/4517297/windows-7-update-kb4517297

    I find that the catalog URL in the above article points to the wrong KB, so try this

    http://www.catalog.update.microsoft.com/Search.aspx?q=KB4517297

    Scot

    Was this answer helpful?

    1 person found this answer helpful.
    0 comments No comments
  2. Anonymous
    2019-08-16T20:16:12+00:00

    I'm grinning from ear to ear. I'm also doing what I can to help set the example for my colleagues.

    Was this answer helpful?

    1 person found this answer helpful.
    0 comments No comments
  3. Anonymous
    2019-08-15T14:45:27+00:00

    Hi Chris,

    The most effective way to engage us is by creating a support case. Start from this webpage

    https://support.microsoft.com/en-us

    and click the "Contact Us" link.  There are multiple options, depending on the product and how you want to communicate with us.

    In this particular case, I agree that it's not obvious which product or path to choose.  To some, it would appear to be an Office product issue, when it turns out to have been a change to a Windows component (oleaut32.dll), but you wouldn't have known that unless we told you.

    When you are the developer of the software in question, and your software is having an issue with Microsoft components, it's almost always best to choose the developer tools you used when asking for a support case. But if you used Visual Basic 6, you won't find that as an option, since we no longer support VB6 development. I know, it's frustrating. If you created an app with VB6 and feel certain that a Microsoft change has caused your app to break (as was the case when our update to oleaut32 broke several VB6 apps and VBA scripts), choose Visual Studio as the product, and it will end up with the correct team. We can help work it out from there.

    If it was a VBA script in an Office product (Excel, Word, etc.), then choose Office as the supported product, and choose subtopics related to scripting. 

    In both cases this time, the resolution will actually come from Windows product engineering, since the shared oleaut32 is used across many other products, and it just happens to have caused problems with apps using SafeArrays and Variants, which are most commonly used in VB6 and VBA (but also used in some C++ apps). This particular regression was related to trying to copy an empty safearray to a variant.  But you probably wouldn't know that just because your code called a function with an empty ParamArray, or tried to assign Array() to a variable.

    Whenever possible, choose the product in use that requires the most technical specialty, and you'll get more advanced support.

    Scot

    Was this answer helpful?

    1 person found this answer helpful.
    0 comments No comments
  4. Anonymous
    2019-08-14T14:35:20+00:00

    Hi Tom, 

    Thanks for replying. I have tested on 1907 11901.20176 and this did exhibit the error, as it has on all versions I have tried of Microsoft Office. I have created a blank database from scratch with the test code.

    Have you tried executing the code after installing the 2019-08 Windows Cumulative Update? This is KB4511553 for my version of Windows (1809), but KB4512501 on 1803, or KB4512508 on 1903. (Also KB4512476 for the Monthly Rollup for Windows Server 2008 SP2)

    Thanks

    Chris

    Was this answer helpful?

    0 comments No comments
  5. Tom van Stiphout 40,216 Reputation points MVP Volunteer Moderator
    2019-08-14T14:15:03+00:00

    I don't have that exact version, but your code works fine in:

    1907 11901.20176

    1907 11901.20218

    1909 12001.20000

    Perhaps you can upgrade or downgrade?

    Did you decompile?

    Was this answer helpful?

    0 comments No comments