システムwiki

Windows Update 2019-08の累積的な更新により、VBAコードの使用例が破損しました

ChrisJo 受付中 最終更新日:2020-09-30 09:15

VBAコードの問題が一部のユーザーと今朝の私にも見られ始めました.最新の2019-08累積更新プログラム(KB4511553など)が原因であることが判明し、WindowsとOfficeのすべての組み合わせに影響しています
これまでに見てきたこと-Windows Server 2008からWindows 10およびOffice 2003(!)からOffice 2016まで.

以下のテストコードは問題を示しています.「テスト」メソッドは、2019-08累積アップデートがインストールされる前(またはアンインストールされた後)にエラーなしで実行されます.ただし、更新後、空のParamArrayパラメーターを別のパラメーターに渡すシナリオ
メソッドをVariantパラメータとして使用すると、2番目のメソッドの宣言行でエラーがスローされます.(エラー5:無効なプロシージャコールまたは引数).

サブテスト()

Test1 "A"、 "B" 'Windows Updateがあってもなくても問題なく動作します

テスト1 'Windows Update後に失敗する

End Sub

Sub Test1(ParamArray P()As Variant)

テスト2 P

End Sub

サブテスト2(ByVal P As Variant) 'この行でエラーが発生しました

End Sub

これにより、Microsoft AccessApplicationでエラーが発生しますが、Word 2016でもこのコードを試しましたが、同じ問題がそこでも発生します.

誰かがこれを検証できますか?この問題を報告する正しい方法が何であるか本当にわかりません.

クリス

返信リスト(回答:41)

1 #
TomvanS

私はその正確なversionはありませんが、あなたのコードはうまく機能します:

1907 11901.20176

1907 11901.20218

1909 12001.20000

おそらくあなたはアップグレードまたはダウングレードすることができますか?

あなたは偏っていましたか?

応答1# ->にスキップ
2 #
ChrisJo

こんにちはトム、

返信してくれてありがとう.私は1907年11月11901.20176でテストしました、そして、これは私がMicrosoft Officeを試したすべてのversionにあるのでエラーを示しました.テストコードを使用して、空白のデータベースをスクラッチから作成しました.

2019-08 Windows累積更新プログラムをインストールした後にコードを実行しましたか?これは私のversionのWindows(1809)、Butkb4512501、または1903年のKB4512508のKB4511553です.(Windows Server 2008 SP2の月刊ロールアップの場合はALSOKB4512476)

クリス

3 #
Rohn007

クリス:

Elizabeth Lee連絡先に返信しないでください、それらは機械生成スパム

です.

アップデートが適用された後はどのversionとBuild番号がありますか?

どのversionオフィスがありますか/どのversionwindows がありますか textify-ダイアログボックスから「無意識の」テキストをキャプチャするためのツール

https://rammichael.com/textify.

このような機能を提供していないダイアログボックスからテキストをコピーしたいと思ったことがありますか?
この問題を解決するためにテキストを作成しました.+ミドルクリックデフォルトでクリックし、テキストの選択可能なビューを取得します.

2018 11 26-5あなたが使用しているMicrosoft Officeの正確なversionを見つける方法

正確なversionのMicrosoft Officeを見つける

これはOffice 2003から2019年をカバーする良い記事です.

4 #
ScotBre 10

私はMicrosoftのシニアエスカレーションエンジニアです.この問題のためにオープンした複数のサポートケースに既に取り組んでいます.昨日リリースされたアップデートには、特定のセキュリティ攻撃を緩和するoleaut32.dllの変更が含まれていました.
残念ながら、この緩和策により、空のParamArrayを渡していたこれらすべてのVBAおよびVB6アプリが、内部関数呼び出しからE_INVALIDARGを返し始めました.これは、あなたが見ているエラーまで泡立ちました.

私たちはこれを非常に真剣に受け止め、これを解決する安全で迅速な方法の可能性について議論しています.これはセキュリティアップデートが原因で発生したため、行った変更を元に戻すのにいくつかの障害がある可能性があります.

それでも、現時点ではこの問題に全力を注いでおり、安全に更新できるようになったらアップデートを提供するのでご安心ください.

それまでの間、コードを自由に変更できる場合は、ParamArrayにパラメーターを渡すことで、たとえそれが不要であっても、問題を回避できます.

スコット

応答4# ->にスキップ
8 #
Rohn007

私は尋ねるのを忘れました、その更新のためのKB番号は何ですか?

応答8# ->にスキップ
9 #
ScotBre 2

これはそれらを更新するためのKB記事のより完全なリストです.この短いURLで「ダッシュボード」にアクセスできます. リンク:WindowsReleaseHealth.

すべてのKB記事が既知の問題で更新されるようになりました:

4512517 4512507 TH1(1507/RTM)のみ のみ のみ
OS KB番号
RS1-Windows 101607およびWindows Server 2016
RS2-Windows 10version1703
RS3-Windows 10version1709 4512516
RS4-Windows 10version1803またはWindows Serverversion1803 4512501
RS5-Windows 10 4511553
19H1(1903)-Windows 10、version1903 4512508
4512497
毎月のロールアップWin 8.1とWin Server 2012 R2 4512488
秒.Win8.1とWin Server 2012 R24512489
毎月のロールアップWin Server 2012とWindows Embedded 8規格 4512518
秒.Win Server 2012とWindows Embedded 8規格4512482
毎月のロールアップWin 7 SP1とWin Server 2008 R2 SP1 4512506
秒.7 SP1とWin Server 2008 R2 SP1 4512486
毎月のロールアップWin Server 2008 SP2 4512476
秒.Win Server 2008 SP24512491

応答9# ->にスキップ
10 #
TomvanS

4512508もここに述べられています:

リンク:ステータスwindows 10.

抜粋:

詳細 発信元更新 状態 履歴
Visual Basic 6(VB6)、VBA、およびVBScriptを使用したApplicationがエラーで応答を停止することができます
インストール後 kb4512508 、Visual Basic 6(VB6)、Visual Basic for Applications for Applications(VBA)を使用してマクロを使用して行われたApplication、およびVisual Basic Scripting Edition(VBScript)を使用してスクリプトまたはApplicationが応答を停止して受信することがあります.
「無効なプロシージャコールエラー」.
影響を受けるプラットフォーム:
  • クライアント:Windows 10、version1903;Windows 10、version1809;Windows 10Enterprise LTSC 2019.Windows 10、version1803;Windows 10、version1709;Windows 10、version1703;Windows 10Enterprise LTSC 2016.Windows 10、version1607;Windows 10Enterprise LTSC
    2015;Windows 8.1;Windows 7SP1
  • サーバー:Windows Server、version1903; Windows Server、version1809; Windows Server 2019.Windows Server、version1803; Windows Server、version1709; Windows Server 2016.Windows Server 2012 R2.Windows Server 2012.Windows Server 2008 R2 SP1.Windows Server.
    2008 SP2
次のステップ:マイクロソフトは現在この問題を調査しており、利用可能なときにアップデートを提供します.
トップに戻る
OSBuild18362.295
2019年8月13日
kb4512508


最終更新日:
2019年8月14日
03:34 PM PT
応答9# ->にスキップ
12 #
Rohn007

スコット:

気になったのですが、これはOfficeの更新の問題ではなく、OSの更新の問題でした.VBAはOfficeコンポーネントです.しかし、もう少し調査を行って、自分で答えを見つけました(そのため、ここで共有します).oleaut32.dllは、によってインストールされる共有システムファイルです.
Applicationではなくオペレーティングシステム(Officeなど).

応答4# ->にスキップ
11 #
ChrisJo

ハイスコット、

アップデートありがとうございました.

あなたの提案に従って、空のパラメレイの代わりに「空」を渡して、内部関数内でそれを検出することによって問題を回避しています.

将来の参考のために、私は実際にマイクロソフトのようなものを報告することになっていますか?特定のWindows Updateに問題を報告する方法がわかりませんでした.私はTwitterに@ microsofthelpsに尋ねました、そして彼らは私をUservoiceに向けました-これはしませんでした
そのように表示されるように見えるように見えます.だから私はこのフォーラムを見つけてここに投稿されました.

クリス

応答11# ->にスキップ
14 #
ScotBre 1

こんにちは、クリス

サポートケースを作成することは、私たちと関わる最も効果的な方法です.このウェブページから開始
このリンク:ja-jp

[お問い合わせ]リンクをクリックします.製品やお客様とのコミュニケーション方法に応じて、複数のオプションがあります.

この特定のケースでは、選択する製品またはパスが明確でないことに同意します.一部の人にとっては、Windowsコンポーネント(oleaut32.dll)への変更であることが判明した場合、Office製品の問題のように見えますが、あなたはそれを知らなかったでしょう.
お申し出がない限り

あなたが問題のソフトウェアの開発者であり、ソフトウェアがMicrosoftコンポーネントに問題を抱えている場合、ほとんどの場合、サポートケースを依頼するときに使用した開発者ツールを選択するのが最善です.ただし、Visual Basic 6を使用した場合、
VB6開発をサポートしなくなったため、オプションとしてそれを見つけてください.わかった、イライラする.VB6を使用してアプリを作成し、Microsoftの変更によりアプリが破損したと確信している場合(oleaut32への更新によりいくつかのVB6が壊れた場合と同様)
アプリとVBAスクリプト)、製品としてVisual Studioを選択すると、正しいチームが作成されます.そこから解決するお手伝いをします.

Office製品(Excel、Wordなど)のVBAスクリプトである場合は、サポートされる製品としてOfficeを選択し、スクリプトに関連するサブトピックを選択します.

今回はどちらの場合も、共有oleaut32が他の多くの製品で使用されているため、解決策は実際にはWindows製品エンジニアリングから取得され、SafeArraysとVariantsを使用するアプリで問題が発生しただけです.
VB6とVBAで一般的に使用されます(一部のC ++アプリでも使用されます).この特定のリグレッションは、空のsafearrayをバリアントにコピーしようとすることに関連していました.しかし、コードが空のParamArrayで関数を呼び出したからといって、
またはArray()を変数に割り当てようとしました.

可能な限り、最も専門的な専門知識を必要とする使用中の製品を選択すると、より高度なサポートが受けられます.

スコット

応答14# ->にスキップ
40 #
William
あなたの提案を続けた後、私を返してください.私の症例#は1485083846でしたが、誰も見えませんでした
私または私の問題のどちらかを理解するために.FIXはほとんどのversionでロールアウトされているので、なぜMS10 Build 1903のために修正がロールアウトされていないのですか?これは私にとって悪夢でした&私は私のソフトウェアを使って私の仕事をするために最新のアップデートをオフにしなければなりませんでした
私は脆弱になります.
応答40# ->にスキップ
41 #
ScotBre

Williamnesbitt1、

どのようにしてマイクロソフトにサポートに連絡しましたか?あなたの「case#」と言われたその数は、カスタマーサポートサービスで使用する形式ではありません.あなたが実際にマイクロソフトサポートの人々と話すならば、私は彼らが知っていなかっただろうと非常に驚いています
月以上前に修正したバグの.Windows 101903の修正は確かにリリースされました.私はこれがあなたのために悪夢だったことを聞くのは悲しいです.私はあなたが到達したのはどのタイプの "MSサポート"のタイプとそのケース#が来るかを知ることが非常に興味があります.

ここから始めましたか? https://support.microsoft.com/ja-jp.

scot

応答4# ->にスキップ
29 #
AnitaEv

SCOT、これは挿入、ファイル、またはテキストを挿入して作業を停止しますか?

私はセーフモードで私の言葉を始めましたが、これはまだ問題です.

ありがとう

応答29# ->にスキップ
30 #
ScotBre

アニタ

それは、この回帰のありそうな結果のように聞こえません.特に、この問題は、空の配列をバリアントにコピーしようとすることに関連しています.パッチがないと、無効なプロシージャコールまたは引数に関連するエラーが表示される場合があります.

発生した問題をこの問題に関連付けることができない場合は、おそらく別の問題に直面しています.

5 #
ScotBre

どういたしまして.「お城」の歴史的な振る舞いが伝わらなかったことをお詫びします.それを変えようとしています.

応答5# ->にスキップ
6 #
Rohn007

ええと、私は堀の中の誰かと話をする機会があるので、ここにフードチェーンを渡すためのもう少しのアイデアがあります:

たとえば、フィードバックシステム(フィードバックハブおよびUSERVOICEサイト)では、確認応答をより説明的にすることをお勧めします.「私たちはそれを持っています」は何も役に立つものを伝えません.

USERVOICEサイト:設計基準をいくつか実行します.それらのサイトは全く野生の西です.たとえば、作成できる投票数の制限を取り除くことから始めます.

フィードバックハブには、USERVOICEフィードバックが表示されますか?彼らはすべき.私は決してテストされたことがない.

OneNoteWindows 10/UWP:リボンとクリッピの中でシングル最悪の設計決定MSが行われました.地球上では、OneNote 2016/DesktopをUWPversionで強制的に交換することで誰かがサインオンすることができます.その人だけが信じられないほど失礼だった.そして、UWPは依然として依然として
欠けています非常に多くのキー機能がMSを述べることができるのは、(DIS) "改善"です.「いつの日か」を復元することを約束しながら機能を奪うことはできません.OneDriveにノートのみを保存するように強制することは、プライバシーの理由から受け入れられません.

実際に実装されているフィードバックハブ追跡/報告フィードバックのセクションを作成します.フィードバックがブラックホールであると感じていますが、提案はありませんが、何も出ていません.

フィードバックの分類は難しすぎる.どのカテゴリを使うのかを常に思い出します.私はそれが好きではありませんが、私はそれをよりよくする方法を知らない...

応答6# ->にスキップ
7 #
ScotBre

あなたの提案やリクエストに対応できるチームとは直接関係はありませんが、私は少なくとも「堀」の中にいるので、実際にできる人を見つけるためにできることをしますそこで何かします.このフォーラムのスレッドをスパムしないように
元の投稿に直接関係のない問題については、Microsoftの「ドットコム」アドレスまでご連絡ください.

この返信を読んだ人に、私がそれを悪用しないことを尊重してくれることを願っています.

13 #
Wobrito

ソリューションリンク:

www.vbforums.com...

15 #
Sebasti

これは、空の配列をサブ/関数に渡すときにも発生します.

この場合、「ByVal」で渡された場合にのみ発生します.

パラメータ「ByRef」を渡す場合、問題は発生しません.

クラス1:

明示的なオプション

パブリックタイプMyType

Prop1 As Integer

終了タイプ

サブテスト()

次のエラー時に再開

Dim Arr()As Object

TestByRef Arr 'Windows Updateの前後に機能します

TestByVal Arr 'Windows Update後に失敗する

Dim Arr2()As MyType

TestByRef Arr2 'Windows Updateの前後に機能します

TestByVal Arr2 'Windows Update後に失敗する

Dim Arr3()As Class1

TestByRef Arr3 'Windows Updateの前後に機能します

TestByVal Arr3 'Windows Update後に失敗する

Dim Arr4()As Variant

TestByRef Arr4 'Windows Updateの前後に機能します

TestByVal Arr4 'Windows Updateの前後に機能します

Dim Arr5()As Integer

TestByRef Arr5 'Windows Updateの前後に機能します

TestByVal Arr5 'Windows Updateの前後に機能します

End Sub

Sub TestByRef(ByRef P As Variant)

End Sub

Sub TestByVal(ByVal P As Variant) 'この行でエラーが発生しました

End Sub

応答15# ->にスキップ
16 #
ScotBre

はい、あなたの観察はアップデートで導入された変更と完全に一致しています.コードで空の配列の内容をバリアントにコピーする必要がない場合、無効なフラグは付けられません.ByRefは、コピーである必要はありません
できましたが、ByValはできました.

応答16# ->にスキップ
17 #
ScotBre

これまでの公式アップデート:
「この問題に対処するために早期にリリースする「オプション」のCアップデートの一部として、今後数日のうちにこの問題の修正をリリースします.顧客は更新プログラムを入手できます.WindowsUpdate for Businessの顧客
Microsoft UpdateカタログまたはWindows Server Update Services(WSUS)経由でアップデートを適用する必要があります.」

翻訳:一部のプラットフォームでテストした修正があり、他のプラットフォームでのテストを待機しています.リリーススケジュールは、お使いのWindowsのversionとアップデートの入手方法によって異なります.場合によっては、リリースが
今日の午後でも.他のケースでは、おそらくもう一週間かそこら.またはその中間.

現時点ではこれですべてです.

応答17# ->にスキップ
18 #
Rohn007

この記事で匿名の「atta-boy」が表示されます(私はサイトとは関係ありません)

2019 08 16-Windowsの更新によりOffice VBAが失敗します

https://Office-watch.com/2019/Windows-update-causes-Office-vba-to-fail/

応答18# ->にスキップ
19 #
ScotBre 1

耳から耳までニヤリと笑っています.また、同僚のために模範を示すためにできることは何でもします.

応答20# ->にスキップ
21 #
EranMay

こんにちは、

私もこの問題を抱えています.

Win7を使用してもエラーが発生する場合は、Win10で最後の更新で修正されたようです.

エラン

応答21# ->にスキップ
22 #
ScotBre 1

windows 7には、まだKB 4517297を適用しましたか?

https://support.microsoft.com/ja-jp/help/4517297/windows-7-update-kb4517297.

上記の記事のカタログURLが間違ったKBを指しているので、この

を試してください.

https://www.catalog.update.microsoft.com/search.aspx?q=kb4517297.

scot

応答22# ->にスキップ
23 #
EranMay

私はupdate4517297を適用しましたが、それでもエラーが発生しました.

コード内のプロシージャ/関数への最初の参照がエラーの原因であるようです

「コンパイルエラー:

メソッドまたはデータメンバーが見つかりません."

応答23# ->にスキップ
24 #
ScotBre

申し訳ありませんが、エラン、これはこの問題に関連するエラーではないため、修正によって解決されるものではありません.私たちの回帰は、空の配列をバリアントにコピーしようとすることに非常に明確に関連していました.時々これはエラーとして表示されます
「無効なプロシージャ呼び出しまたは呼び出し引数」のようなメッセージ.

「メソッドまたはデータメンバーが見つかりません」と表示された場合は、コードを調べて、その原因を診断する必要があります.

スコット

応答24# ->にスキップ
25 #
EranMay

こんにちは、

コードに何も変更を加えておらず、数年間機能したため、Windows/Officeの最後の更新に関連している可能性があります.

また、最後の更新がない他のユーザーにとっては、すべてが正常に機能します.

そして、それはWin7でのみ起こりました.

応答25# ->にスキップ
26 #
ScotBre

OK.新しいスレッドを開始して、Windows 7でのみ発生している新しい問題の詳細を説明し、別のエラーメッセージを表示することをお勧めします.これは、回帰に関連するこのスレッドを混乱させないようにするのに役立ちます
配列が空のときに無効な引数エラーを返す.

別のリグレッションがある場合は、別のスレッドでそれを議論するのが最善です.それで、他の人がここで議論されているものについて混乱しないようにします.

応答17# ->にスキップ
27 #
turagit

こんにちはスコット私はこの問題を経験しています

windows 10version1903を使用しています.

上記のパッチは以前のBuildのためのものです

修正が解除される可能性がある場合に更新が更新されますか?これは大きな気晴らしです

応答27# ->にスキップ
28 #
ScotBre

はい、1903年/19H1の修正は、27日の火曜日にリリースされる予定ですが、公式の予測は「8月下旬」です.

ご不便をおかけして申し訳ありません.

応答28# ->にスキップ
31 #
umasnas

ハイスコット

このアップデートが既に存在するかどうか知っていますか?

応答31# ->にスキップ
32 #
ScotBre

昨日予定されていたリリースはまだリリースされていません.Buildまたはパッケージ化に関するいくつかの障害.遅延についてはお詫び申し上げます.あと数日か.Buildとリリースのプロセスに直接関係していないので、私はこれまでのことを伝えているだけです
言いました.

応答32# ->にスキップ
33 #
umasnas

この更新が大幅に遅れないことを願っています

応答33# ->にスキップ
34 #
NigelO

この問題はまだ解決されましたか?私は9月中にさまざまなwindows とオフィスの更新を見ましたが、私が実行しているHEFTY VBA Ladenワークブックはまだ問題を抱えています.

Win10の早いBuildを持つVMを持っているので、ワークブックとは関係なく、その

でうまく機能します.

誰かが修正を指してください.

応答34# ->にスキップ
35 #
ScotBre

このスレッドで説明されていたバグが修正され、サポートされているすべてのWindowsBuildに、それを修正するアップデートが適用されました.すべてのWindowsアップデートに最新である場合、現在発生している問題は、私たちが抱えている問題とは異なります.
話し合いました.永続的な問題がこのスレッドのバグと混同されないように、おそらく新しいスレッドを開始して、まだ直面している問題について話し合う必要があります.

スコット

応答35# ->にスキップ
36 #
NigelO

こんにちはスコッチ-私は同意しません-KB4511553のリリース後に私を襲った問題

私はこれを証明することができます

私のWin10Build電流ですか?自動windows のアパートがオンになっていますが、Build情報は1903年18362.356です-より多くの最新versionがありますか?

今朝オフィスのアップデートを適用しましたが、違いはありませんでした

私はPCと半ばまかりしていますが、私は本当にこれに苦労しています-あらゆる助けが高くなるでしょう

応答36# ->にスキップ
37 #
NigelO
編集-私は最新のBuildを手動で適用しました-18362.388-変更なし-それでもVBAは失敗します
応答37# ->にスキップ
38 #
ScotBre

Nigelo、

OK、より具体的にしましょう.多くのVBA、VB6、および種類のアプリに影響を与えるバグは、実際にはOleaut32.dllで導入されたバグです.空のSafeArrayをバリアントにコピーすることは非常に具体的でした.バグが表示されるエラーリターンを導入しました
実際に許可されていても、アレイが空になることを期待していないため、パラメータが無効であること.プロシージャーがパラレイを予定している場合は、プロシージャーを呼び出すときにエラーとして表示されることがありますが、呼び出し機能は去ることがあります.
その空.空の配列を変数に割り当てると、同様のエラーとして表示される可能性もあります.

これはあなたが持っている問題に似ていますか?そうでなければ、あなたは別の問題に直面しています、そして私達はそれを議論するために新しいスレッドを始めるべきです.

応答38# ->にスキップ
39 #
NigelO

こんにちはScotBren

わからない-ワークブックのVBAを作成しなかった-VBAプログラマーを使用した.

KB4511553が適用された直後(つまり、数分以内)にワークブックが機能しなくなったため、ワークブックの失敗はoleaut32.dllの問題が原因であると想定しています.

しかし、私はあなたが正しいかもしれないと今思っています-Win10Build1709を備えたVMでは、Office 2007ではワークブックを実行できますが、Office 365では実行できません-他の何かである可能性があります、しかしあなたは認めざるを得ません、それは非常に不気味な偶然です!