Makroslar bilan faylni ochishda Excel dasturi xatosi

Yaqinda men .xlsm fayllarini ochgandan so’ng makroslarni yoqishga urinayotganda yana bir bor Excel dasturi xatolariga duch keldim. Men shunga o’xshash muammolar foydalanuvchilarni ancha vaqtdan beri bezovta qilayotganini esladim, lekin ular ko’pincha Excel 2013 va Excel 2016 da kuzatilgan. Ushbu xatolar guruhining xarakterli xususiyatlari quyidagilardan iborat:

  • Excel makroslar bilan faylni ochganda yopiladi ( barcha makrolarni yoqish xavfsizlik rejimi yoqilgan holda );
  • Kontentni yoqishga harakat qilganingizda (tegishli tugmani bosganingizda) Excel ilovasida xatolik yuz beradi;
  • Faylni makroslar bilan saqlashda Excel ilovasida xatolik yuzaga keladi;

Xo’sh, keyingi voqeadan keyin uni keyinga qoldirmaslik uchun men Internetda ma’lumot qidirishga vaqtni behuda sarflamaslik uchun Excel dasturidagi xatolar uchun kichik markazni keyinchalik o’zgartirishga qaror qildim. va sabablar bulutini tuzish. 
Xlsm faylini ochish jarayonida va makroslar o’chirilgan bo’lsa, asosiy oynaning yuqori qismida (jadval tepasida) bildirishnoma chizig’i ko’rsatiladi: XAVFSIZLIK OGOHLANTIRISH Makrolarni ishga tushirish o’chirilgan , tarkibni yoqish tugmasi bilan (makroslar). Foydalanuvchi uni bosgandan so’ng, Excel xatosi Microsoft Excel ishlamaydi va xarakterli bildirishnoma oynasi bilan shunchaki qulab tushadi (halokatlanadi):

Excel makro xatosi

Ta’kidlanishicha, Excel ilovasida xatolik yuz berishidan oldin hech qanday tizim yangilanishi yoki Office paketi yangilanishi o’rnatilmagan. Ehtimol, Office-ning so’nggi yangilanishlari qandaydir tarzda ishtirok etgandir, lekin men to’g’ridan-to’g’ri aloqani sezmadim va muammoni batafsil o’rganmadim. Shu bilan birga, operatsion tizim versiyasiga bog’liqlik yo’q edi (men shaxsan Windows 10 LTSC va Windows 7 Professional-da nosozliklarni kuzatdim). Ilovaning ishdan chiqishini ( *.hdmp ) tahlil qilganda, siz odatda shunday istisno maʼlumotlarini koʻrasiz (chiqish kesiladi):

. . .

EXCEPTION_RECORD:  (.exr -1)

ExceptionAddress: 00007ff86a1e05ac (VBE7+0x00000000001405ac)

   ExceptionCode: c0000005 (Access violation)

  ExceptionFlags: 00000000

NumberParameters: 2

   Parameter[0]: 0000000000000001

   Parameter[1]: 0000000000000010

Attempt to write to address 0000000000000010

DEFAULT_BUCKET_ID:  NULL_CLASS_PTR_WRITE

PROCESS_NAME:  EXCEL.EXE

ERROR_CODE: (NTSTATUS) 0xc0000005 – <Unable to get error code text>

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 – <Unable to get error code text>

EXCEPTION_CODE_STR:  c0000005

EXCEPTION_PARAMETER1:  0000000000000001

EXCEPTION_PARAMETER2:  0000000000000010

WRITE_ADDRESS:  0000000000000010

. . .

odatda bu kod bilan NTSTATUSc0000005– Kirish buzilishi, kirish taqiqlangan. Va ko’pincha axlatxonada siz shunday iplar to’plamini ko’rishingiz mumkin (chiqish taqdimotni yaxshilash uchun optimallashtirilgan):

. . .

STACK_TEXT:  

000000b9`1acfdd00 000001d3`2fb24e90 : 000001d3`5a0e0ef0 00000000`00000000 : VBE7+0x1405ac

000000b9`1acfdd08 000001d3`24c1fe20 : 00000000`00000000 000001d3`2fda9640 : 0x000001d3`2fb24e90

000000b9`1acfdd10 000001d3`6cf35760 : 000001d3`2fda9640 000001d3`045c9b30 : 0x000001d3`24c1fe20

000000b9`1acfdd18 000001d3`5a0e0ef0 : 000001d3`045c9b30 000001d3`2fcbb2b0 : 0x000001d3`6cf35760

000000b9`1acfdd20 00000000`00000000 : 000001d3`2fcbb2b0 000001d3`2fcbb318 : 0x000001d3`5a0e0ef0

. . .

Bundan aniq bo’lgan yagona narsa shundaki, Excel jarayonning manzil maydoniga yuklangan vbe7.dllkutubxonasi (VBA ish vaqti muhiti) funktsiyalarining chuqurligida ishdan chiqadi . Bu ko’pincha Excel kontekstida makroslar deb ataladigan VBA skript protsessoridagi muammolarni ko’rsatadi.HOLILMAGAN: MS Office to’plamidan ilovalarni disk raskadrovka qilishda siz qo’ng’iroqlar to’plamida funksiya nomlarini ko’rmaysiz, chunki asosiy bajariladigan fayllar (Excel/Word/Outlook) va ko’plab kutubxonalar uchun disk raskadrovka belgilari mavjud emas. Qiziq, biron bir yechim bormi?

VBA

Xo’sh, VBA nima va u nima uchun ishlatiladi?

VBA (Visual Basic for Application) – bu Visual Basic tiliga asoslangan makro dasturlash tili.

Excel, Word, PowerPoint va Access kabi MS Office-ga kiritilgan ilovalarda VBA ko’plab muntazam vazifalarni avtomatlashtirish uchun ishlatiladi (masalan, bir xil turdagi takroriy harakatlar), foydalanuvchi bilan muloqot qilish uchun shakllarni yaratishga imkon beradi va taklif qiladi. boshqa ko’plab boy funksiyalar. VBA-dan foydalanib, siz VBA kodidan foydalangan holda ob’ektga yo’naltirilgan kod/ma’lumotlar modeli yordamida elektron jadvalni boshqarishingiz mumkin, jadvalga kiritilgan ma’lumotlar qayta ishlanishi va yakuniy (natijadagi) jadvallar va diagrammalarda (grafiklarda) taqdim etilishi mumkin. Jadval kodning interfeysi bo’lib, u bilan ishlash, uni o’zgartirish va hisob-kitoblarni boshqarishni osonlashtiradi. VBA chiqishida yuqorida tavsiflangan ilovalar tuzilmalarida foydalaniladigan loyiha (Excel elektron jadvallari, PowerPoint taqdimotlari, Access ma’lumotlar bazalari) asosiy formatli fayl ichiga joylashtirilgan maxsus ikkilik bajariladigan faylga kompilyatsiya qilinadi. Excelga nisbatan bu fayl vbaProject.bin , u /xlkatalogidagi *.xslm fayli ichida joylashgan bo’lib , u kompilyatsiya qilingan (bajarishga tayyor) shaklda makroni o’z ichiga olgan ikkilik bajariladigan loyiha faylidir.Muvaffaqiyatsizlikning eng katta sababi Excel ish kitobidagi VBA kod blokining buzilganligidir. Buning kelib chiqishi haqida faqat taxmin qilish mumkin, .xlsm fayli tuzilishida, hujjat bilan ishlash jarayonida, kod blokini ishlamay qolishi mumkin bo’lgan ba’zi o’zgarishlar sodir bo’lishi mumkin.

Yechim 1: Yangi varaqni joylashtiring

Berilgan harakatlar ketma-ketligiga rioya qiling:

  1. [Muammoli] .xlsm faylini oching (makrosli fayl).
  2. Biz tugmanibosmaymizВключить содержимое .
  3. Excel ish kitobiga yangi varaq qo’shing: Sheet1/Sheet2/Sheet3 yorliqlarida sichqonchaning o’ng tugmasi → Insert → Sheet.
  4. Elektron jadvalni saqlang. Excelni yoping.
  5. Muammoli faylni yana oching va makroslarni yoqing.

Yechim 2: Loyihani qayta kompilyatsiya qiling

Quyidagi amallarni bajaring:

  1. Yangi Excel ish kitobini ishga tushiring va oching (muammoli faylingiz emas).
  2. Fayl menyusini oching – Variantlar -ni tanlang – keyin Ishonch markazini oching va Ishonch markazi sozlamalariga o’ting .
  3. Ibratli sozlamalar bo’limida Barcha bildirishnomalar makrolarini o’chirish katagiga belgi qo’ying .
  4. Ishonchli joylar bo’limida «Barcha ishonchli joylarni o’chirish» katagiga belgi qo’ying .
  5. Ishonchli hujjatlar bo’limida Ishonchli hujjatlarni o’chirish katagiga belgi qo’ying .
  6. Hamma joyda bosing OK. Excelni yoping.
  7. [Muammoli] .xlsm faylini oching (makrosli fayl).
  8. Biz tugmanibosmaymizВключить содержимое .
  9. Alt+ tugmalar birikmasi yordamida Visual Basic muharririni ochadi F11. Yoki vaqtinchalik echimdan foydalanishingiz mumkin: sozlamalarda Tuzuvchi menyusini yoqing , so’ngra lentaning yuqori qismida paydo bo’lgan Tuzuvchi menyusida Visual Basic-nitanlang .
  10. Ochilgan Visual Basic muharriri (VBA muharriri) oynasida loyihani qayta saqlang: buning uchun asboblar panelidagi Saqlash tugmasini bosing (floppi disk tasviri yoki Ctrl+ kombinatsiyasi S).
  11. Nosozliklarni tuzatish menyusidan tanlang – VBA loyihasini kompilyatsiya qilish menyu bandini tanlang :vba loyihasini qayta kompilyatsiya qilish
  12. Loyihani Saqlash tugmasi bilan yana saqlang .
  13. Visual Basic muharririni yoping.
  14. Biz Excel faylini Fayl menyusi – Saqlash opsiyasi orqali saqlaymiz (yoki yuqori chap burchakdagi floppi disk belgisini yoki Ctrl+ tugmalar birikmasini bosish orqali S).
  15. Oldingi bosqichlarda qilingan barcha xavfsizlik sozlamalarini qaytaramiz (2-5-bosqichlar).
  16. xlsm faylini yoping.
  17. Yuqoridagi holat qatorida [muammo] faylini qayta oching – tugma yordamida makroslarni yoqing Включить содержимое.

Yechim 3: modul qo‘shing

Qo’shimcha yechim – qayta kompilyatsiya qilmasdan makrosga o’zgartirishlar kiritish.

  1. [Muammoli] .xlsm faylini oching (makrosli fayl).
  2. Biz tugmanibosmaymizВключить содержимое .
  3. AltVisual Basic muharririni ochadi ( + tugmalar birikmasi yordamida F11).
  4. Menyuni oching Asboblar → element Variantlar. Ochilgan oynada «Umumiy » yorlig’iga o’ting va «Talab bo’yicha kompilyatsiya qilish» katagiga belgi qo’ying :talabga binoan kompilyatsiya qilishTugmasini bosib Options oynasini yoping OK.
  5. Loyiha oynasining chap ramkasida pastga tushing, Modullar bo’limini toping , undagi o’ng tugmani bosing → Qo’shish → Modul :vba insert moduli
  6. Keyinchalik, Visual Basic muharriri oynasini yoping, asosiy xslm hujjatini saqlang va Excelni yoping.
  7. Yuqoridagi holat qatorida [muammo] faylini qayta oching – tugma yordamida makroslarni yoqing Включить содержимое.

Leave a Reply