wake-up-neo.com

Excel VBA-Laufzeitfehler '32809' - Versuch, es zu verstehen

Ein Arbeitskollege hat einige Änderungen an einer unserer Makro-Arbeitsmappen vorgenommen. Jetzt erhalte ich auf meinem PC nur den gefürchteten Laufzeitfehler '32809', wenn ich versuche, ihn auszuführen. Diese neueste Version läuft einwandfrei auf seinem PC und dem PC eines anderen Kollegen, auf dem wir sie getestet haben. Die Vorgängerversion läuft einwandfrei auf allen PCs, auf denen Excel 2010 ausgeführt wird.

Der Fehler wird ausgelöst, wenn das Makro versucht, den Arbeitsblattindex 1 mit dem Namen "Info" auszuwählen. Ich weiß, dass Auswählen/Aktivieren nicht erforderlich ist, aber ich arbeite gerade mit dieser Arbeitsmappe und versuche, herauszufinden, warum ich alleine diese Fehlermeldung erhalten würde.

Ich habe versucht:

  1. Neustart/Power Cycle
  2. Kopie der Arbeitsmappe speichern
  3. Temp-Dateien mit CCleaner bereinigen
  4. Online recherchieren
  5. Überprüfen auf ActiveX-Steuerelemente (verwendet Formularsteuerelemente)

Alles ohne Erfolg. Ich hatte dann ein bisschen Chaos im unmittelbaren Fenster und stellte fest, dass sogar eine einfache:

Debug.Print ThisWorkbook.Worksheets(1).Name

würde den Laufzeitfehler werfen, der mich zu der Annahme brachte, dass das Arbeitsblatt irgendwie zusammengebrochen war. Ich habe dem Arbeitsblatt ein paar Ereignisse hinzugefügt, darunter _Activate und _Change, aber selbst wenn Folgendes bestätigt wird, werden keine Ereignisse ausgelöst:

Application.EnableEvents = True

Ich habe ein einfaches Test Sub wie folgt hinzugefügt:

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

Hat jemand etwas Ähnliches gefunden oder weiß, warum dieser Fehler nur auf einigen PCs auftritt?

14
Tony

In meinem Fall hat folgendes geholfen:

  1. Datei als .xlsx (makrofrei) speichern - alle Makros werden beim Speichern gelöscht;
  2. Quelldatei mit Makros öffnen und Module in die .xlsx-Datei kopieren;
  3. Datei speichern als .xlsm - vollständige Neukompilierung durchgeführt.

Danach hat alles normal funktioniert. Ich hatte Dateien mit mehr als 200 Blättern und mehr als 50 Makros und die Kommentare in jedem Modul brachten nichts, aber diese Lösung funktionierte.

6
Loky

Ich habe auch eine Weile damit zu kämpfen. Es trat tatsächlich aufgrund einiger Microsoft Office-Updates über Windows Update ab Dezember auf. Es hat ziemlich Kopfschmerzen verursacht, von stundenlangen Produktivitätseinbußen aufgrund dieses Problems ganz zu schweigen.

Eines der Updates unterbricht die Formulare und Sie müssen den Office-Cache leeren, wie von UHsoccer angegeben

Zusätzlich noch ein Antwort-Thread hier: Plötzlich mehrere VBA-Makrofehler, meistens 32809 Hat einen Link zum MS-Blog mit Details.

Eine weitere Aktualisierung führt zu einem anderen Fehler. Wenn Sie eines dieser Formulare erstellen oder ändern (auch nur zum Speichern der Formulardaten), werden die internen Daten der Kalkulationstabelle aktualisiert, die bei Weitergabe an eine andere Person ohne Aktualisierungen das Ergebnis verursachen Fehler oben.

Die Lösung (wenn Sie mit anderen in derselben Tabelle arbeiten)? Leider müssen entweder alle Benutzer, mit denen Sie zu tun haben, die Office-Updates verwenden, anschließend den Office-Cache leeren oder über eine Systemwiederherstellung (oder durch manuelles Entfernen) die vorherigen Updates vom Dezember '14 wiederherstellen.

Ich weiß, nicht viel von einer Lösung, richtig? Ich bin auch nicht glücklich.

Nur als Hintergrundgeschichte habe ich meine Maschine aktualisiert und mit den Updates auf dem Laufenden gehalten, und eines der Unternehmen, mit denen ich mich beschäftigte, tat dies nicht. Ich zog mir kurz vor Weihnachten die Haare heraus und versuchte, das Problem zu klären. Ohne Wiederherstellungspunkte gab ich schließlich nach und formatierte mich neu.

Jetzt, einen Monat später, aktualisierte die IT-Abteilung des Unternehmens ihre Arbeitsstationen. Und ohne Überraschung hatten sie ähnliche Probleme (ganz zu schweigen davon, als ich ihre Tabellenkalkulation erhielt, hatte ich das gleiche Problem).

Jetzt sind wir alle mit den gleichen Updates beschäftigt, und alles ist so gut, wie es sein kann.

4
XaivierX

In meinem Fall trat der Fehler bei der Ausführung eines Makros in: Sheets ("eigenes Blatt eins") auf. Wählen Sie

kopiere das Blatt in einen anderen mit einem anderen Namen, dh. "oso", löschen Sie das Originalblatt und benennen Sie das neue als "eigenes Blatt eins" um.

Excel 2013

1
Alexander

Dieses Problem ist bei der Entwicklung einer Anwendung für einen Kunden aufgetreten. Beim Arbeiten an meinem Computer funktionierte der Code/die Formulare usw. einwandfrei. Beim Laden in das System des Clients trat dieser Fehler jedoch irgendwann in meiner Anwendung auf.

Mein Workaround für diesen Fehler bestand darin, die Arbeitsmappe von den Formularen und Code zu entfernen, indem die VBA-Module und -Formulare entfernt wurden. Danach kopierte mein Kunde die 'nackte' Arbeitsmappe sowie die Module und Formulare. Durch das Importieren der Formulare und des Codes in die makroaktivierte Arbeitsmappe konnte die Anwendung wieder funktionieren.

1
Gordon Inglis

Es scheint, dass 32809 eine allgemeine Fehlermeldung ist. Nachdem ich einige Zeit gerungen hatte, stellte ich fest, dass ich nicht auf die Sicherheitsschaltfläche "Makros aktivieren" unterhalb der Arbeitsmappe geklickt hatte. Nachdem ich das getan hatte, funktionierte alles gut.

1
kevinLooby

Dies funktionierte für mich mit Excel 2010 und der gleiche Fehler beim Öffnen einer macro-enabled .xlsm-Datei.

- Nachdem Sie den Fehlerdialog geschlossen haben, führen Sie die durch "save as" durch Tabulatoren getrennte .txt-Datei aus. Klicken Sie auf OK für 

... nur aktives Blatt.

... Funktionen werden nicht gespeichert.

-dann wieder "save as", aber diesmal wählen Sie macro-enabled .xlsm-Format. (auf eine andere Datei oder das Original zu überschreiben spielt keine Rolle, aber das Speichern als andere fühlt sich sicherer an.)

-Schließen Sie Excel aus.

-Öffne die neu gespeicherte .xlsm-Datei. In meinen Fällen gingen die Fehlermeldungen weg und die Makros funktionieren.

1
James Lin

Meine Lösung (funktioniert möglicherweise nicht für Sie)

Öffnen Sie die Anwendung auf einem Computer, der den Fehler meldet. Ändern Sie den VB Code auf irgendeine Weise. (Ich habe eine Kommentarzeile ohne Bedeutung in eines der Makros eingefügt.)

Sheets (sheetName) .Wählen Sie einen Kommentar ohne Bedeutung

und speichern Sie es. Dies führt zu einer erneuten Kompilierung. Schließen und wieder öffnen - alles fixiert.

Hoffe das macht Sinn und hilft

Gewähren

0
Grant W

Fehler 32.809: Das beschädigte Blatt in ein neues Blatt kopieren und den Namen ändern oder das beschädigte Blatt löschen, funktioniert für mich. Außerdem ging ich zum SHEET-Modul des beschädigten Arbeitsblatts und entfernte die Codierung aus dem Arbeitsblatt-Modul, das dem beschädigten Arbeitsblatt zugeordnet ist. Das hat auch das Problem für mich geheilt. [Die Tabellenmodule können Routinen haben, die durch Ereignisse ausgelöst werden, die für dieses Arbeitsblatt spezifisch sind.] In meinem Fall glaube ich, dass es ein beschädigtes Tabellenmodul war und keine beschädigten Daten im Arbeitsblatt selbst.

0
Q.Reply

Ok, das könnte komisch sein. Jedenfalls hatte einer meiner Kollegen diesen Fehler und wir haben versucht, die VBA editieren zu kompilieren. Aber die Sache ist, kopieren Sie einfach die Excel-Datei auf den Desktop. Und es hat funktioniert. Die Excel-Datei befand sich ursprünglich in einem Netzlaufwerk. Das hat funktioniert, das ist meine Antwort auf dieses Problem.

Ich habe das gleiche Problem und habe festgestellt, dass dies das Problem von Microsoft-Schwachstellen ist.

Es funktioniert für mich, wenn ich diese Update-Patches installiere ... Diese Patches finden Sie unter www.Microsoft.com.

  1. Wenn Ihre Office 2010-Version SP1 ist, müssen Sie zunächst das Office SP2-Paket herunterladen und installieren. Der Name des Aktualisierungspatches lautet KB2687455.

  2. Installieren Sie das Update-Patch KB2965240.

    Dieses Sicherheitsupdate behebt Sicherheitsanfälligkeiten in Microsoft Office, die Remotecodeausführung ermöglichen können, wenn ein Angreifer einen Benutzer dazu verleitet, eine speziell gestaltete Microsoft Excel-Arbeitsmappe in einer betroffenen Office-Version zu öffnen oder in der Vorschau anzuzeigen. Ein Angreifer, der die Sicherheitsanfälligkeiten erfolgreich ausnutzt, kann die gleichen Benutzerrechte wie der aktuelle Benutzer erlangen.

  3. Installieren Sie das Update-Patch KB2553154.

    In Microsoft Office 2010 32-Bit Edition liegt eine Sicherheitsanfälligkeit vor, durch die beliebiger Code ausgeführt werden kann, wenn eine in böswilliger Absicht erstellte Datei geöffnet wird. Dieses Update behebt diese Sicherheitsanfälligkeit.

0
user7608321

Ich bin auf ein ähnliches (fast unerklärliches) Verhalten gestoßen

Es wurde ein Verweis zum Löschen von .exd-Dateien im Verzeichnis C:\Users\Benutzername\AppData\Local\Temp .__ gefunden. In jedem der Verzeichnisse Excel8.0 und VBE befindet sich eine. Ein typischer Name ist MSForms.exd

Google "Excel Exd" oder "KB 2553154" Aus meiner Sicht ist dies eine völlig inakzeptable Situation, die seit mindestens einem Monat besteht.

0
UHsoccer

Ich habe das VBA-Modul exportiert - die Datei erneut gespeichert, dann das Modul erneut importiert und alles ist gut

0
andy

Ich habe alle ActiveX-Steuerelemente aus der Tabelle entfernt und funktioniert jetzt problemlos und ohne Fehlermeldungen. Das ist meine Lösung. 

0
Tomáš Paul

Ich habe dieses Problem nach dem Hinzufügen einer Combobox mit VBA-Code in einem bestimmten Arbeitsblatt erhalten. Das Testen des Codes usw. war überhaupt kein Problem, bis ich das Arbeitsblatt erneut geöffnet habe. Stackoverflow und Microsoft kommen mit vielen Umgehungsmöglichkeiten, aber Keine echte Lösung ... Ich benutze Excel 2010 (niederländische Version) mit W10 (von W7 aktualisiert). Ich denke, das Problem liegt in Excel 2010 ... In meinem Fall wurde in der Zeile ein Fehler angezeigt, durch den ein Blatt von VBA in einem Modul aufgehoben werden konnte, das in einem Modul lange Zeit nicht geändert wurde.

Ok, so ist es meiner Meinung nach: Es gab ein Sicherheitsproblem in FM20.DLL, für das MS ein Update im ersten Quartal 2015 hatte. Dieses Update installiert eine neue FM20.DLL, jedoch die Sprachpakete (FM20NLD. DLL und FM20ENU.DLL) wurden nicht aktualisiert. Möglicherweise haben Sie diesen Fehler nicht, wenn Sie kein Sprachpaket verwenden. Meiner Meinung nach sollten auch die Sprachkomponenten aktualisiert worden sein (es ist jedoch kein Update verfügbar).

Ok, das Löschen der .exd-Dateien funktioniert für einen Moment. Dies ist eine vorübergehende Abhilfe. MS hat keine echte Lösung, aber das Kompilieren des Codes "löst" das Problem.

Deshalb sagten einige Leute: "Fügen Sie einen Kommentar hinzu und das Problem ist gelöst". Ja, das Hinzufügen eines Kommentars erzwingt eine Neukompilierung.

Ich stimme zu, dies ist immer noch eine Umgehungsmöglichkeit, aber keine vorübergehende Umgehung . Also: 1. prüfen, in welchem ​​Teil des VBA-Codes der Fehler vorhanden ist 2. fügen Sie einen Kommentar hinzu, durch den eine Neukompilierung erzwungen wird . 3. Speichern Sie das Projekt erneut

das ist alles

0
Nightwatch

Ich habe ein ähnliches Problem. Der VBA-Code (ActiveX-Code) funktionierte seit einigen Jahren gut auf mehr als 20 Computern. Das Problem tauchte plötzlich auf, als sich ein neuer Kollege anschloss. Der Code funktionierte auf seinem neuen Laptop nicht, obwohl die Excel-Version identisch war -time Error '32809' . Ich habe alle Sicherheitseinstellungen von ActiveX und Macro überprüft, alles korrekt . Ich habe einige Experimente durchgeführt. Ich habe festgestellt, dass der auf meinem Computer erstellte Code auf dem neuen Laptop meines Kollegen nicht funktioniert. Wenn ich jedoch Code in den neuen Laptop meines Kollegen lege, funktioniert er auf meinem Computer. Sobald ich diesen Code auf meinem Computer gespeichert habe, funktioniert er nicht mehr auf dem Laptop meines Kollegen.

Wenn Sie den Fehler im Detail überprüfen, besteht das Problem darin, dass der gesamte Code, der in meinem Computer geschrieben ist, das Excel meines Kollegen nicht erkennt. Debug >> Compile zeigt Kompilierungsfehler an, selbst "DIM ..." wird nicht erkannt. Alle ActiveX-Steuerelemente, Comboboxs, Buttons ... der Eigenschaftsname wurde zufällig mit einem neuen versehen. Ich habe zum Beispiel einen Schaltflächennamen als [AddNew]. Sobald er im neuen Laptop meines Kollegen geöffnet ist, wird er als [Befehlstaste54] neu zugewiesen. Es kann sogar den vorhandenen Arbeitsblattnamen nicht erkennen.

Nachdem ich alle Lösungen recherchiert hatte, stellte ich fest, dass die Löschdatei "* .exd" nicht funktioniert (sogar den Papierkorb leeren ".)." Kommentare hinzufügen "funktioniert nicht ...

Am Ende lautet die Lösung:

Schritt 1: Kopieren Sie die Blätter mit den Codes (Blätter ohne Code sind nicht erforderlich).

Schritt 2: Löschen Sie die Originalblätter. 

Schritt 3: Umbenennen des kopierten Blattes in seinen ursprünglichen Namen 

Es fängt an zu arbeiten. Ich fand, dass alle ActiveX-Steuerelemente ihren ursprünglichen Namen in ihrer Eigenschaft zurückgeben. Es dauerte nur eine Minute. Hoffe, es hilft denen, die das gleiche Problem haben . Hinweis: Sie müssen die Datei nicht in * .txt speichern oder in xlsx umbenennen ...

0
Kevin

Ich habe die Lösung gefunden. Laden Sie einfach das folgende Office-Update herunter: https://support.Microsoft.com/en-us/kb/2920754

Wählen Sie zwischen 32-Bit und 64-Bit und installieren Sie.

Hat für mich gearbeitet, hoffe es funktioniert für Sie. 

Grüße

0
Albert

Ich habe folgendes gemacht und arbeitete wie ein Zauber:

  1. Installieren Sie Office 2013 (ich habe es nicht mit 2010 versucht, aber ich denke, es würde auch funktionieren).
  2. Installieren Sie Office 2013 SP1.
  3. Führen Sie Windows-Updates aus und installieren Sie alle Office- und Windows-Updates.
  4. Computer neu starten.
  5. Erledigt.

Das funktionierte für mich auf zwei verschiedenen Computern. Ich hoffe, das wird auch bei Ihnen funktionieren!

0
Ricardo