web-dev-qa-db-ja.com

Excel VBAランタイムエラー '32809'-理解しようとしています

職場の同僚が私たちのマクロブックの1つにいくつかの変更を加え、今では自分のPCでのみ、実行しようとすると恐ろしい実行時エラー '32809'を受け取ります。この最新バージョンは、彼がテストしたPCと別の同僚のPCで正常に動作します。以前のバージョンは、すべてのPCで正常に実行され、すべてのPCでExcel 2010が実行されています。

マクロが「Info」という名前のワークシートインデックス1を選択しようとすると、エラーがスローされます。 Select/Activateは必須ではないことを知っていますが、今のところこのWorkbookで作業しているだけで、なぜこのエラーを受け取るのかを自分で考えています。

私が試してみました:

  1. 再起動/電源の入れ直し
  2. ワークブックのコピーを保存する
  3. CCleanerを使用して一時ファイルを消去する
  4. オンラインで調べる
  5. ActiveXコントロールの確認(フォームコントロールを使用)

すべて成功しません。それから、私は即時ウィンドウで少し混乱していて、簡単なことさえ発見しました:

Debug.Print ThisWorkbook.Worksheets(1).Name

実行時エラーがスローされ、そのワークシートが壊れたと思わせます。 _Activateと_Changeを含むいくつかのイベントをワークシートに追加しましたが、それを確認した後でも何も起動しませんでした。

Application.EnableEvents = True

次のように簡単なテストサブを追加しました。

Public Sub Test()

    Dim ws As Worksheet
    Dim sheetNum As Integer

    For Each ws In ThisWorkbook.Worksheets
        ws.Select           ' Selects all Sheets Without Error
        Debug.Print ws.Name ' Prints All Worksheet Names Fine
    Next ws

    Set ws = ThisWorkbook.Worksheets(1)
    ws.Select               ' Selects Sheet 1 Without Error

    ' Prints all but sheetNum = 1, Run-time Error 32809
    For sheetNum = 7 To 1 Step -1
        Debug.Print ThisWorkbook.Worksheets(sheetNum).Name
    Next sheetNum

    ' Run-time Error 32809
    ThisWorkbook.Worksheets(1).Select

End Sub

誰かがこれに似たものに遭遇したか、このエラーが一部のPCでのみ発生する原因を知っていますか?

14
Anthony

私の場合、以下が助けました:

  1. ファイルを.xlsx(マクロなし)として保存-保存中にすべてのマクロが消去されます。
  2. マクロでソースファイルを開き、モジュールを.xlsxファイルにコピーします。
  3. ファイルを.xlsmとして保存-完全な再コンパイルを実行しました。

その後、すべてが正常に動作し始めました。 200以上のシートと50以上のマクロを含むファイルがあり、各モジュールにコメントを投稿しても役に立ちませんでしたが、このソリューションは機能しました。

7
Loky

私もこれにしばらく苦労しています。実際には、12月からWindows Updateを介したMicrosoft Officeの更新が原因で発生しました。この問題により生産性が何時間も失われることは言うまでもなく、かなりの頭痛の種です。

更新プログラムの1つがフォームを壊し、UHsoccerの指示に従ってOfficeキャッシュをクリアする必要があります

さらに、ここに別の回答スレッドがあります: 突然いくつかのVBAマクロエラー、大部分は32809 には、詳細が記載されたMSブログへのリンクがあります。

別の更新により別のエラーが発生し、これらのフォームの1つを作成または変更すると(フォームデータを保存するのと同じくらい簡単な場合)、スプレッドシートの内部が更新され、更新なしで別の人に渡されると、上記のエラー。

解決策(同じスプレッドシートで他のユーザーと作業している場合)悲しいことに、あなたが扱うすべての人にオフィスのアップデートを使用してもらい、その後オフィスのキャッシュをクリアするか、システムの復元により(または手動で削除して)14年12月以前のアップデートに戻します。

私は知っている、ほとんど解決策ではありませんよね?私も幸せではありません。

バックストーリーとして、私はマシンを更新し、更新に追いついたが、取り扱った会社の1つは更新しなかった。クリスマスの直前に髪の毛を抜いて問題を解明しようとしていましたが、復元ポイントがなかったので、ようやく寛大になり、再フォーマットしました。

1か月後、会社のIT部門がワークステーションを更新しました。そして、驚くことなく、彼らもこれに似た問題を抱え始めました(スプレッドシートを受け取ったときはもちろん、同じ問題がありました)。

今、私たちはすべて同じ更新プログラムに取り組んでおり、すべてがうまくいきます。

5
XaivierX

私の場合、次のマクロの実行中にエラーが発生しました:Sheets( "own sheet one")。Select

シートを別の名前で別のシートにコピーします。 「oso」、元のシートを削除し、新しいシートの名前を「own sheet one」に変更します

Excel 2013

1
Alexander

クライアント用のアプリケーションの開発中にこの問題に悩まされました。私のマシンで作業するとコード/フォームなどは完全に機能しましたが、クライアントのシステムにロードされると、このエラーはアプリケーション内のある時点で発生しました。

このエラーの回避策は、VBAモジュールとフォームを削除することにより、フォームとコードからブックを切り離すことでした。これを行った後、私のクライアントは「裸の」ワークブックとモジュールとフォームをコピーしました。フォームとコードをマクロ対応ワークブックにインポートすると、アプリケーションが再び機能するようになりました。

1
Gordon Inglis

32809は一般的なエラーメッセージのようです。しばらく苦労した後、ワークブックリボンの下にある[マクロを有効にする]セキュリティボタンをクリックしていないことがわかりました。これを実行すると、すべてが正常に機能しました。

1
kevinLooby

これは、Excel 2010を使用してmacro-enabled .xlsmファイルを開いたときに同じエラーが発生するのでうまくいきました。

-エラーダイアログを閉じた後、「save as」タブ区切り.txtファイルを実行します。 OKをクリックします

...アクティブなシートのみ。

...関数は保存されません。

-次に「save as」を再度選択しますが、今回はmacro-enabled .xlsm形式を選択します。 (別のファイルに保存するか、オリジナルを上書きするかは問題ではありませんが、別のファイルとして保存する方が安全です。)

-Excelを閉じます。

-新しく保存された.xlsmファイルを開きます。私の場合、エラーメッセージは消え、マクロは機能しています。

1
James Lin

私の解決策(あなたのために動作しない場合があります)

エラーにフラグを立てているマシンでアプリケーションを開きます。何らかの方法でVBコードを変更します。

Sheets(sheetName).Select「結果なしのコメント」

保存します。これにより、再コンパイルが発生します。閉じて再度開く-すべて修正済み。

これが理にかなって助けてくれることを願っています

付与

0
Grant W

エラー32,809:破損したシートを新しいシートにコピーし、名前を変更するか、破損したシートを削除するとうまくいきます。さらに、破損したシートのシートモジュールに移動し、破損したシートに関連付けられているシートモジュールからコーディングを削除しました。それは私にとっても問題を解決しました。 [シートモジュールには、そのワークシートに固有のイベントによってトリガーされるルーチンを含めることができます。]したがって、私の場合は、ワークシート自体のデータではなく、シートモジュールが破損していると思います。

0
Q.Reply

わかりました、これは奇妙かもしれません。とにかく私の同僚の一人がこのエラーを抱えていたので、VBAの編集を何でもコンパイルしようとしました。ただし、Excelファイルをデスクトップにコピーするだけです。そしてそれは働いた。 Excelファイルは元々ネットワークドライブにありました。これはうまくいきました。これがこの問題に対する私の答えです。

同じ問題があり、これはマイクロソフトの脆弱性の問題であることがわかりました。

これらの更新プログラムのパッチをインストールすると、機能します。これらのパッチはwww.Microsoft.comで見つけることができます。

  1. Office 2010バージョンがSP1の場合、最初にOffice SP2パックをダウンロードしてインストールする必要があります。更新パッチ名はKB2687455です。

  2. 更新パッチKB2965240をインストールします。

    このセキュリティ更新プログラムは、攻撃者が影響を受けるバージョンのOfficeで特別に細工されたMicrosoft Excelブックを開いたりプレビューしたりするようにユーザーを誘導した場合、リモートコード実行を可能にするMicrosoft Officeの脆弱性を解決します。攻撃者がこれらの脆弱性を悪用した場合、現在のユーザーと同じユーザー権限を取得する可能性があります。

  3. 更新パッチKB2553154をインストールします。

    Microsoft Office 2010 32-Bit Editionにセキュリティの脆弱性が存在し、悪意を持って変更されたファイルを開いたときに任意のコードが実行される可能性があります。この更新プログラムはその脆弱性を解決します。

0
user7608321

同様の(ほとんど説明できない)動作に遭遇した

ディレクトリC:\ Users\username\AppData\Local\Tempの下に.exdファイルを削除するための参照が見つかりました。ディレクトリExcel8.0およびVBEのそれぞれにあります。典型的な名前はMSForms.exdです

Googleの「Excel exd」または「KB 2553154」私の観点からは、少なくとも1か月間は完全に受け入れられない状況です。

0
UHsoccer

VBAモジュールをエクスポートしました-ファイルを再保存し、モジュールを再度インポートしました。すべて順調です

0
andy

シートからすべてのActiveXコントロールを削除しましたが、エラーメッセージなしでスムーズに動作するようになりました。それが私の解決策です。

0
Tomáš Paul

特定のシートにVBAコードを含むコンボボックスを追加すると、この問題が発生しました。シートを再度開くまで、コードなどのテストはまったく問題ありませんでした。 StackoverflowとMicrosoftには多くの回避策がありますが、実際のソリューションはありません。 Excel 2010(オランダ語版)をW10(W7からアップグレード)で使用します。問題はExcel 2010にあると思います。私の場合、長い間変更されていないモジュールで、VBAによってシートの保護を解除するための行でエラーが発生しました。

わかりました、これは私の意見です:FM20.DLLにセキュリティ上の問題がありました。MSは2015年第1四半期に更新されました。この更新は新しいFM20.DLLをインストールしますが、言語パッケージ(FM20NLD.DLLおよびFM20ENU .DLL)は更新されませんでした。おそらく、言語パックを使用しない場合、このエラーは発生しません。私の意見では、言語部分も同様に更新されるべきでした(しかし、利用可能な更新はありません)

さて、.exd-filesを削除してもしばらくは機能します。これは一時的な回避策です。 MSには実際の解決策はありませんが、コードを再コンパイルすると問題が「解決」します。

それが一部の人々が「コメントを追加して問題を解決した」と言った理由です。はい、コメントを追加すると強制的に再コンパイルされます。

私は同意します、これはまだ回避策ですが、一時的な回避策ではありません。そのため:1.エラーが存在するVBAコードの部分を確認します2.再コンパイルを強制するコメントを追加します。 3.プロジェクトを再度保存します

それで全部です

0
Nightwatch

同様の問題があります。 VBA(ActiveX)コードは20年以上のコンピューターで数年間正常に機能していましたが、新しい同僚が1人参加したときに問題が突然表面化し、Excelバージョンは同じでもコードが彼の新しいラップトップで機能しなくなり、実行が示されました時間エラー '32809'。 ActiveXとマクロのすべてのセキュリティ設定をチェックしましたが、すべて正しいです。私はいくつかの実験をしました。コンピューターで作成されたコードは、同僚の新しいラップトップでは機能しないことがわかりました。ただし、同僚の新しいラップトップでコードを作成すると、コンピューターで動作します。このコードをコンピューターに保存すると、同僚のラップトップで動作しなくなります。

エラーを詳細にチェックすると、問題は、私のコンピューターで作成されたすべてのコード、同僚のExcelがそれらを認識しないことです。デバッグ>>コンパイルは、「DIM ...」が認識されない場合でもコンパイルエラーを表示します。すべてのActiveXコントロール、コンボボックス、ボタン...プロパティ名には、新しいものがランダムに割り当てられました。たとえば、[AddNew]というボタン名があり、同僚の新しいラップトップで開くと、[commandbutton54]として再割り当てされます。既存のワークシート名も認識できません。

すべてのソリューションを調査した後、「*。exd」ファイルの削除が機能しないことがわかりました(ごみ箱を空にしても)。「コメントの追加」が機能しない...

最終的に解決策は次のとおりです。

ステップ1:コード付きのシートのコピーを作成します(コードなしのシートは不要です)。

ステップ2:元のシートを削除し、

ステップ3:コピーしたシートの名前を元の名前に変更し、

動き始めます。すべてのActiveXコントロールがプロパティに元の名前を戻すことがわかりました。ちょっと時間がかかりました。同じ問題に直面している人々を助けることを願っています。注:ファイルを* .txtに保存したり、xlsxに名前を変更したりする必要はありません...

0
Kevin

解決策を見つけました。次のOfficeアップデートをダウンロードするだけです。 https://support.Microsoft.com/en-us/kb/2920754

32ビットまたは64ビットを選択してインストールします。

私のために働いた、それがあなたのために働くことを願っています。

よろしく

0
Albert

私は次のことをして、魅力のように働きました:

  1. Office 2013をインストールします(2010では試していませんが、うまくいくと思います)。
  2. Office 2013 SP1をインストールします。
  3. Windows Updatesを実行し、OfficeおよびWindowsのすべての更新プログラムをインストールします。
  4. コンピューターを再起動します。
  5. できた.

これは2つの異なるコンピューターで機能しました。これがあなたの作品でもうまくいくことを願っています!

0
Ricardo