Eroare de execuție Excel VBA „32809” – Încercarea de a înțelege acest lucru (Programare, Excel, Excel 2010, Vba)

Anthony a intrebat.

Un coleg de la serviciu a făcut unele modificări la unul dintre registrele noastre de lucru macro și acum, numai pe PC-ul meu, primesc temuta eroare de execuție „32809” atunci când încerc să o execut. Această ultimă versiune rulează fără probleme pe PC-ul său și pe PC-ul unui alt coleg pe care l-am testat. Versiunea precedentă funcționează fără probleme pe toate PC-urile noastre, care rulează toate Excel 2010.

Eroarea este generată atunci când macroul încearcă să selecteze indexul foii de lucru 1, numit „Info”. Știu că nu este necesară selectarea/activarea, dar deocamdată lucrez doar cu acest registru de lucru și încerc să înțeleg de ce numai eu aș primi această eroare.

Am încercat:

  1. Reboot/Power Cycle
  2. Salvarea unei copii a caietului de lucru
  3. Curățarea fișierelor temporare cu CCleaner
  4. Cercetări online
  5. Verificarea controalelor ActiveX (utilizează controale de formular)

Toate fără succes. Apoi am făcut un pic de mizerie în fereastra imediată și am descoperit că până și un simplu:

Debug.Print ThisWorkbook.Worksheets(1).Name

ar arunca eroarea de execuție, ceea ce m-a făcut să cred că, cumva, acea foaie de lucru s-a stricat. Am adăugat câteva evenimente la foaia de lucru, inclusiv _Activate și _Change, dar niciunul nu s-a declanșat, chiar și după ce am confirmat acest lucru:

Application.EnableEvents = True

Am adăugat un simplu Test Sub după cum urmează:

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

A întâlnit cineva ceva asemănător sau știe ce determină această eroare să apară doar pe anumite PC-uri?

Comentarii

  • Acest lucru se datorează faptului că foaia de calcul este coruptă. Încercați acest lucru. Creați o foaie nouă și copiați fiecare lucru din aceasta în foaia nouă și apoi ștergeți foaia respectivă. Va funcționa. tocmai am testat și am încercat. –  > Por Siddharth Rout.
  • Bună Siddharth – mulțumesc pentru răspuns. Aceasta este soluția pe termen scurt cu care am optat, dar, din păcate, încercarea de a șterge foaia existentă face ca Excel să se blocheze, așa că am redenumit-o pur și simplu. Întrebarea rămâne totuși: de ce este coruptă doar atunci când este deschisă pe PC-ul meu? –  > Por Anthony.
  • Îmi pare rău, nu am un răspuns la această întrebare. De fapt, am testat-o cu ACEST FIȘIER și am reușit să reproduc problema. Chiar și după ce am redenumit subs, problema a rămas acolo. Ștergerea și recreerea acestuia a rezolvat problema. –  > Por Siddharth Rout.
  • În plus față de @SiddharthRout, soloution. În cele din urmă, dacă asta nu rezolvă problema, puteți, de asemenea, să exportați modulele și să le eliminați / Save / Close / Open, Re-Import, Save. În cele din urmă, aș reinstala Excel, de asemenea, ca un ultim efort, numai dacă toate celelalte soluții au eșuat și încă se întâmplă numai pe mașina dvs. –  > Por Peege.
18 răspunsuri
Loky

În cazul meu următoarele au ajutat:

  1. Salvați fișierul ca .xlsx (fără macro) – toate macrourile ar fi șterse în timpul salvării;
  2. Deschideți fișierul sursă cu macro-uri și copiați modulele în .xlsx fișier;
  3. Salvați fișierul ca .xlsm – se efectuează o recompilare completă.

După aceea, totul a început să funcționeze normal. Aveam un fișier cu peste 200 de foi și peste 50 de macro-uri și postarea de comentarii în fiecare modul nu a ajutat, dar această soluție a funcționat.

Comentarii

  • O soluție excelentă. A funcționat pentru mine! –  > Por Karl Hoaglund.
  • acest lucru a funcționat bine pentru mine, o notă totuși. Nu închideți fișierul xlsx înainte de a salva din nou ca xlsm, acest lucru va păstra tot codul vba fără a fi nevoie să îl copiați și să îl lipiți. –  > Por Gregor y.
XaivierX

M-am luptat și eu cu asta de ceva timp. De fapt, a apărut din cauza unor actualizări Microsoft Office prin Windows Update începând cu luna decembrie. A provocat destul de multe dureri de cap, ca să nu mai vorbim de orele de productivitate pierdute din cauza acestei probleme.

Una dintre actualizări sparge formularele și trebuie să ștergeți memoria cache Office, așa cum a declarat UHsoccer

În plus, un alt fir de răspuns aici: Brusc, mai multe erori de macro VBA, în principal 32809are un link către blogul MS cu detalii.

O altă actualizare cauzează o altă eroare în cazul în care, dacă creați sau modificați unul dintre aceste formulare (chiar și la fel de simplu ca și salvarea datelor formularului), acesta va actualiza elementele interne ale foii de calcul, care, atunci când este dat unei alte persoane fără actualizări, va provoca eroarea de mai sus.

Soluția (dacă lucrați cu alte persoane pe aceeași foaie de calcul)? Din păcate, fie îi puneți pe toți cei cu care aveți de-a face să folosească actualizările office, apoi îi puneți să șteargă memoria cache office, fie reveniți la actualizările de dinainte de decembrie ’14 prin intermediul unei restaurări de sistem (sau prin eliminarea manuală a acestora).

Știu, nu este o soluție prea bună, nu-i așa? Nici eu nu sunt mulțumit.

Ca o poveste, eu mi-am actualizat mașina, ținând pasul cu actualizările, iar una dintre companiile cu care am avut de-a face nu a făcut acest lucru. Îmi smulgeam părul din cap chiar înainte de Crăciun încercând să îmi dau seama de problemă și, fără puncte de restaurare, am cedat în cele din urmă și am reformatat.

Acum, o lună mai târziu, departamentul IT al companiei și-a actualizat stațiile de lucru. Și, fără surpriză, au început să aibă și ei probleme similare cu aceasta (ca să nu mai spun că atunci când am primit foile lor de calcul, am avut aceeași problemă).

Acum, toți suntem la curent cu aceleași actualizări și totul este cât se poate de bine.

Comentarii

  • Am instalat actualizarea de securitate Microsoft aici și totul a fost în regulă pentru Excel 2010. –  > Por DrMarbuse.
UHsoccer

Am întâlnit un comportament similar (aproape inexplicabil)

Am găsit o referință la ștergerea fișierelor .exd în directorul C:UsersusersusernameAppDataLocalTempLocalizat câte unul în fiecare dintre directorii Excel8.0 și VBE. Numele tipic este MSForms.exd

Căutați pe Google „Excel exd” sau „KB 2553154” Din punctul meu de vedere, este o situație complet inacceptabilă, care există de cel puțin o lună de zile.

Gordon Inglis

Am suferit această problemă în timp ce dezvoltam o aplicație pentru un client. Lucrând pe mașina mea, codul/formularele etc. au funcționat perfect, dar când au fost încărcate pe sistemul clientului, această eroare a apărut la un moment dat în aplicația mea.

Soluția pe care am găsit-o pentru această eroare a fost să separ cartea de lucru de formulare și cod, eliminând modulele VBA și formularele. După ce am făcut acest lucru, clientul meu a copiat registrul de lucru „gol” și modulele și formularele. Importul formularelor și al codului în registrul de lucru cu macro a permis ca aplicația să funcționeze din nou.

James Lin

Acest lucru a funcționat pentru mine folosind excel 2010 și obținând aceeași eroare atunci când deschid un macro-enabled .xlsm fișier.

-după ce ați respins dialogul de eroare, faceți „save as” delimitat de tabulare .txt fișier. faceți clic pe OK pentru

numai foaia activă.

…funcțiile nu sunt salvate.

-atunci „save as” din nou, dar de data aceasta selectați macro-enabled .xlsm formatul. (în alt fișier sau suprascrierea originalului nu contează, dar salvarea ca altul pare mai sigură).

-închideți Excel.

-deschideți fișierul nou salvat .xlsm nou creat. În cazurile mele, mesajele de eroare au dispărut și macrourile funcționează.

Comentarii

  • În mod ciudat, această metodă a funcționat pentru mine. Am urmat pașii descriși de James pe mașina care întrerupea codul și după aceea a început să funcționeze. Atenție! Pierdeți semnătura digitală a proiectului, așa că trebuie să activați toate macrourile sau va trebui să vă confruntați cu avertismentul de securitate de fiecare dată când deschideți registrul de lucru. Dacă nu doriți să mergeți pe această cale, actualizarea office rezolvă și ea problema. Folosiți windows update pentru a instala fiecare actualizare office pe care o găsiți -.  > Por kuklei.
kevinLooby

Se pare că 32809 este un mesaj de eroare general. După ce m-am luptat pentru ceva timp, am descoperit că nu am făcut clic pe butonul de securitate „Enable Macros” de sub panglica de lucru. Odată ce am făcut acest lucru, totul a funcționat bine.

Alexander

În cazul meu, eroarea a apărut executând o macro în:Sheets(„own sheet one”).Select

am copiat foaia în alta cu alt nume, de ex. „oso”, apoi am șters foaia originală și am redenumit-o pe cea nouă în „foaie proprie unu”

Excel 2013

Grant W

Soluția mea ( s-ar putea să nu funcționeze pentru dvs.)

Deschideți aplicația pe o mașină care semnalează eroarea. Modificați codul VB într-un fel sau altul. ( am adăugat o linie de comentariu de cod fără consecințe într-una din macro-uri)

Sheets(sheetName).Select ‘comentariu fără consecințe

și salvați-l. Acest lucru determină o recompilare. Închideți și redeschideți – totul s-a rezolvat.

Sper că acest lucru are sens și vă ajută

Grant

Luigi Mackenzie C. Brito

Ok, acest lucru ar putea fi ciudat. Oricum, unul dintre colegii mei a avut această eroare și am încercat editarea VBA compila orice. Dar chestia este că trebuie doar să copiați fișierul Excel pe desktop. Și a funcționat. Fișierul Excel a fost inițial într-o unitate de rețea. Acest lucru a funcționat, acesta este răspunsul meu la această problemă.

Tomas Paul

Am eliminat toate controalele ActiveX din foaie și acum funcționează fără probleme, fără niciun mesaj de eroare. Aceasta este soluția mea.

Comentarii

  • Aveam un buton ActiveX pe foaie care cauza probleme. Încercarea de a-l șterge a blocat Excel. În schimb, am șters formula de sub el =EMBED(etc...) și am folosit „Cut” pentru buton, în loc de delete. Nu s-a mai blocat, macrourile au început să funcționeze din nou și, după ce am închis și redeschis, am reușit să recreez butonul. Ceva trebuie să fi fost corupt… –  > Por pgr.
Ricardo

Am făcut următoarele și a funcționat ca prin minune:

  1. Instalați Office 2013 (nu am încercat cu 2010, dar cred că ar funcționa și cu 2010).
  2. Instalați Office 2013 SP1.
  3. Rulați Windows Updates și instalați toate actualizările Office și Windows.
  4. Reporniți calculatorul.
  5. S-a făcut.

Acest lucru a funcționat pentru mine în două calculatoare diferite. Sper că va funcționa și în al tău!

andy

Am exportat modulul VBA – am salvat din nou fișierul, apoi am importat din nou modulul și totul este în regulă.

Albert

Am găsit soluția.Trebuie doar să descărcați următoarea actualizare Office:https://support.microsoft.com/en-us/kb/2920754

Alegeți între 32 de biți sau 64 de biți și instalați.

A funcționat pentru mine, sper că și pentru tine.

Salutări

utilizator7608321

Am aceeași problemă și eu și am aflat că aceasta este problema vulnerabilităților Microsoft.

Funcționează pentru mine când instalez aceste patch-uri de actualizare. puteți găsi aceste patch-uri pe www.microsoft.com .

  1. Dacă versiunea dvs. de Office 2010 este SP1, trebuie să descărcați și să instalați mai întâi pachetul Office SP2. Numele patch-ului de actualizare este KB2687455.

  2. Instalați patch-ul de actualizare KB2965240.

    Această actualizare de securitate rezolvă vulnerabilitățile din Microsoft Office care ar putea permite executarea de cod de la distanță dacă un atacator convinge un utilizator să deschidă sau să previzualizeze un registru de lucru Microsoft Excel special creat într-o versiune afectată de Office. Un atacator care a exploatat cu succes vulnerabilitățile ar putea obține aceleași drepturi de utilizator ca și utilizatorul curent.

  3. Instalați patch-ul de actualizare KB2553154.

    Există o vulnerabilitate de securitate în Microsoft Office 2010 32-Bit Edition care ar putea permite rularea de cod arbitrar atunci când este deschis un fișier modificat în mod malițios. Această actualizare rezolvă această vulnerabilitate.

Nightwatch

Am avut această problemă după ce am adăugat un combobox cu cod VBA într-o anumită foaie. testarea codului etc. nu a fost nicio problemă, până când am deschis din nou foaia. stackoverflow și Microsoft vine cu multe variante de lucru, dar nicio soluție reală. folosesc excel 2010 (versiunea olandeză) cu W10 (actualizat de la W7). Cred că problema este în Excel 2010. în cazul meu, am primit o eroare pe linia de deprotejare a unei foi prin VBA, într-un modul care nu a fost modificat de mult timp.

Ok, iată cum stă treaba după părerea mea: A existat o problemă de securitate în FM20.DLL, pentru care MS a avut un update în Q1 2015. Această actualizare a instalat un nou FM20.DLL, însă pachetele de limbaj (FM20NLD.DLL și FM20ENU.DLL) nu au fost actualizate. Posibil ca, dacă nu folosiți un pachet de limbă, să nu aveți această eroare. După părerea mea, ar fi trebuit să fie actualizate și părțile de limbă (dar nu există nicio actualizare disponibilă)

Ok, ștergerea fișierelor .exd funcționează pentru un moment. Aceasta este o soluție temporară. MS nu are o soluție reală, dar recompilarea codului „rezolvă” problema.

De aceea, unii au spus: „Adaugă un comentariu și problema este rezolvată”. Da, adăugarea unui comentariu forțează o recompilare.

Sunt de acord, aceasta este totuși o soluție de rezolvare, dar nu una temporară. deci: 1. verificați în ce parte a codului VBA există eroarea2. adăugați un comentariu prin care se forțează o recompilare.3. salvați din nou proiectul

Asta e tot.

Kevin

Am o problemă similară. Codul VBA (ActiveX) a funcționat bine pe mai mult de 20 de calculatoare timp de câțiva ani, problema a apărut brusc atunci când un nou coleg s-a alăturat, codul nu funcționează pe noul său laptop, deși versiunea Excel este aceeași, a afișat Eroare de execuție „32809”.Am verificat toate setările de securitate ale ActiveX și Macro, toate sunt corecte.Am făcut câteva experimente. Am constatat că codul creat în computerul meu nu funcționează pe noul laptop al colegului meu.Totuși, dacă creez codul în noul laptop al colegului meu, acesta funcționează în computerul meu. Odată ce am salvat acest cod în calculatorul meu, nu va mai putea funcționa în laptopul colegului meu.

Verificând eroarea în detaliu, problema este că toate codurile scrise în computerul meu, Excel-ul colegului meu nu le recunoaște. Debug>>Compile va afișa o eroare de compilare, chiar și „DIM …” nu este recunoscut. toate controalele ActiveX , Combobox-uri, butoane… numele proprietății a fost atribuit aleatoriu unul nou. De exemplu, am un nume de buton ca [AddNew], odată deschis în noul laptop al colegului meu, acesta este reatribuit ca [commandbutton54] . Nici măcar nu poate recunoaște numele foii de lucru existente.

După ce am cercetat toate soluțiile , am constatat că Ștergerea fișierului „*.exd” nu funcționează(Chiar și golirea coșului de reciclare”.). ‘Add comments’ nu funcționează…

În cele din urmă soluția este:

Pasul1: Faceți o copie a foilor cu coduri(foile fără cod nu sunt necesare),

Pasul 2: Ștergeți foile originale,

Pasul 3: Redenumiți foile copiate cu numele lor original,

Începe să funcționeze. Am constatat că toate controalele ActiveX își recuperează numele original în proprietățile lor. A durat doar un minut. Sper că îi ajută pe cei care se confruntă cu aceeași problemă.Notă: Nu este nevoie să salvați fișierul în *.txt sau să îl redenumiți în xlsx…

Q.Reply

Eroare 32,809: Copierea foii corupte într-o foaie nouă și schimbarea numelui sau ștergerea foii corupte funcționează pentru mine. În plus, am mers la modulul SHEET al foii corupte și am eliminat codificarea din modulul foii asociat cu foaia coruptă. Și acest lucru a rezolvat problema pentru mine. [ Modulele de foaie pot avea rutine care sunt declanșate de evenimente specifice acelei foi de calcul]. Așadar, în cazul meu, cred că era vorba de un Modul de foaie corupt, nu de date corupte pe foaia de lucru în sine.

Rory

Ștergerea tuturor instanțelor de *.exd a rezolvat problema pentru mine.