Bị lỗi "Error loading DLL" - Nhờ GPE

Thảo luận trong 'Lập Trình với Excel' bắt đầu bởi vba_gpe, 6 Tháng tư 2011.

  1. vba_gpe

    vba_gpe New Member

    Kính gửi GPE
    Mình gặp một vấn đề như sau:
    - Máy tính ở nhà mình viết code bằng Excell 2010.
    - Lên máy công ty, dùng Excell 2007. Mở ban đầu lên được, nhung sau khi save lai một cái (Dù chưa chỉnh gì hết) vẫn bị báo lỗi Error Loading DLL
    - Cái này mình nghĩ là bị lỗi thiếu thư viện.
    Mình search trên diễn đàn mà chưa tìm được cách khắc phục.
    Thân. Mong nhận được sự giúp đở.
     
  2. ndu96081631

    ndu96081631 Well-Known Member

    Hổng có file, biết gì mà giúp hả bạn?
     
  3. vba_gpe

    vba_gpe New Member

    Máy code bình thường thì được.
    Mình đưa ra 1 cái nhé. (Name Manager)
    Đoạn code NameManager mình tìm được trên GPE, khi đưa vào thì cũng vẫn bị báo lỗi tương tư.
    NameManager :
    PHP:
    Function kiemtra(mst) As Boolean
       
    If Len(mst "") > 11 Then
                
                
    Exit Function
       
    End If
       If 
    IsNumeric(mstThen
          msttext 
    Format(mst"0000000000")
       Else
          
    msttext mst
       End 
    If

          
    skt CDbl(Mid(msttext11)) * 31
          skt 
    skt CDbl(Mid(msttext21)) * 29
          skt 
    skt CDbl(Mid(msttext31)) * 23
          skt 
    skt CDbl(Mid(msttext41)) * 19
          skt 
    skt CDbl(Mid(msttext51)) * 17
          skt 
    skt CDbl(Mid(msttext61)) * 13
          skt 
    skt CDbl(Mid(msttext71)) * 7
          skt 
    skt CDbl(Mid(msttext81)) * 5
          skt 
    skt CDbl(Mid(msttext91)) * 3
    ........ Còn dài nên mình đã đính kèm file 
    Mình đã thử 2 cách:
    1. Vào Export Module và Userform của NameManager ra file .bas va file (.frm, .frx). Khi Import vào vẫn bị lỗi.
    Trong khi có một số module vẫn hoạt động bình thường
    2. Xóa cả module bị lỗi, copy code sang file txt -> Save file lại (File lúc này không chứa mấy đoạn code trên) -> Mở file lên (Vẫn chưa bị lỗi) -> Chèn thêm module với code đã chép và Save lại -> Mở lên lần thứ 2 (khi click vào mấy cái module có chứa các hàm) đều bị lỗi.

    Nhờ thầy NDU xem nhé
     

    Các file đính kèm:

    Last edited: 6 Tháng tư 2011
  4. PhanTuHuong

    PhanTuHuong Excel & AutoCad & VBA

    Có thể bạn dùng 1 số hàm hoặc phương thức mới của Excel 2010, Excel 2007 không hiểu được. Thử test lại trên các máy khác xem sao?
     
  5. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Các bạn dùng ActiveX (*.ocx) cần phải hiểu rõ ứng dụng của mình đang dùng ActiveX nào, để khi đưa sang máy khác phải cài các ActiveX đó. Một khi mà báo lỗi không có Object hay DLL gì đó thì tất cả các code trong file đều lỗi hết. Lưu ý, các phiên bản Windows phần lớn cung cấp sẵn ActiveX MSCOMCTL.OCX còn các loại khác gần như là không có. Vì vậy khi dùng ActiveX trong form các bạn cần phải tìm hiểu kỹ trước khi nhúng nó vào:
    + Nó có miễn phí không? Nếu phải mua thì mua thế nào?
    + Phải cài đặt những file gì? Cách thức?

    Có rất nhiều bạn có kiến thức VBA trên GPE nhưng các bạn chỉ nói với mọi người rằng, dùng cái này cái kia...mà không biết rằng cái đó không phải máy nào cũng có. Chỉ có trường hợp máy đó đã cài một pm nào đó và đó đã cài ActiveX đó rồi nên "tự nhiên" nó chạy.
     
  6. vba_gpe

    vba_gpe New Member

    Mình thử trên 2 máy nữa, vẫn bị lỗi tương tự.
    Cũng không save được.

    Nó báo lỗi như sau: "Errors were detected while Saving '... Duong dẫn file....'. Microsoft Office Excel may be able to save the file name by removing or reparing some features. To make the repairs in a new file, Click Cotinute để tiếp, cancel để thoát."
    Khi chọn continute lại tiếp tục bị lỗi:
    "Excel encountered error during save. Howerver, Excel was able to mininally save yourfile to C: \Documents and Seetings\Admin\Application Data\Microsoft\Excel\X43A1.xls"
    Mình thử vào đúng đường dẫn để tìm file X43A1.xls thì thấy trong file có dữ liệu nhưng giống như khi mình copy và pase value vậy. Không có module nào hết, trong sheet cũng chẳng có code luôn.

    Lại thêm một cái nữa: Mình thử, lấy toàn bộ hàm có chứa code bị lỗi, copy sang một module của 1 file addin(.xla) đang sử dụng trên máy tính tại cty. Thì thấy vẫn chạy bình thường. Không báo lỗi nào. Nếu bỏ module đó vào workbook thị lại bị lỗi. Run cùng một macro trên cùng 1 file đang mở. Thì macro trên module của addin (xla) không bị lỗi, mà trên module của chính workbook đó lại báo "error loading DLL".

    Thân. Mong nhận được đóng góp .
     
    Last edited: 6 Tháng tư 2011
  7. ndu96081631

    ndu96081631 Well-Known Member

    Nói cho cùng bạn vẫn nhất định không chịu đưa file lên đây chăng? Thế thì bạn tự mình tìm lỗi vậy! Tôi bó tay
     
  8. nmhung49

    nmhung49 Well-Known Member

    Vậy khi em vào system32 thì vẫn có cái này MSCOMCTL.OCX không lẽ nó không cung cấp đủ hả a Tuân, vậy cần phải làm gì để mình có thể sài cái đó được. Thanks a Tuân và NDu đã quan tâm tại em thấy máy khác dùng được máy mình không dùng được cũng kỳ lạ
    To NDu tại em tưởng phải đăng ký cái regsvr32 mscomct2.ocx mới sài được chứ tại không hiểu nó cho lắm mong anh thông cảm
     
  9. vba_gpe

    vba_gpe New Member

    Hịc
    Bác NDU nói thế nặng em quá. Do file nó dung lượng lớn (>1MB) nên không đưa lên được. Đành thế thì em đua sang mediafire vậy.
    Nếu vậy nhờ bác xem giúp nhé.
    http://www.mediafire.com/?zw05s4w09cvwksb
     
  10. ndu96081631

    ndu96081631 Well-Known Member

    Cái nào thì dùng cho việc đó
    - Đăng ký mscomct2.ocx để dùng thằng DTPicker
    - Muốn dùng SpreadSheet thì chỉ việc chọn SpreadSheet trên Toolbox rồi vẽ lên UserForm
    - Nếu không tìm thấy SpreadSheet Control thì có thể máy chưa cài Microsoft Office Web Components ---> Vào đây tải về mà cài:
    http://www.microsoft.com/downloads/...2C-402E-4F72-97A5-E0FD290D4B76&displaylang=en
     
    Last edited: 6 Tháng tư 2011
  11. ndu96081631

    ndu96081631 Well-Known Member

    Tôi đã mở file của bạn trên Excel 2007 và thấy rằng chỉ Break link, xóa liên kết đến file khác là mọi chuyện ổn ngay
    Ngoài ra thì code lỗi cả rừng... Trong module, mấy cái Public gì gì đó và Option Explicit phải đưa lên đầu code chứ... sao lại cho vào giữa
    Sửa lại 1 tí:
    - Bỏ check em MISSING... trong References
    - Đưa các đoạn khai báo Public và Option Explicit trong module lên đầu code
    - Break link liên kết đến file khác
    ----------------
    Tải file về kiểm tra lại xem
     

    Các file đính kèm:

    Last edited: 6 Tháng tư 2011
  12. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Cái đối tượng SpreadSheet là một ActiveX nằm trong bộ cài Microsoft Office ấy (không phải của MSCOMCTL.OCX). Bạn hãy vào bộ cài Office và add thêm, hình như nó nằm trong thành phần Shar... của bộ cài.
     
  13. ndu96081631

    ndu96081631 Well-Known Member

    Rất có thể người ta dùng file trên Excel 2007 chăng? Tôi nhớ không lầm thì Control này đã bị bỏ mất trong các Version từ 2007 trở đi, muốn xài thì phải cài thêm
    Ai cài Excel 2007 (và không có cài Excel 2003) vui lòng kiểm tra xem
     
  14. vba_gpe

    vba_gpe New Member

    Cảm ơn Thầy NDU. Học hỏi thầy nhiều.
    Thân.
     
  15. vba_gpe

    vba_gpe New Member

    Em xin đóng góp thêm một cách để giải quyết trường hợp : "Error loading DLL"
    Ngoài Cách của anh NDU là vào Preference /Bỏ dấu cheeck Missing: Ref Edit Control, một số file em bỏ được, một số em bỏ nó báo: "Can't perform request operation". Và nó không cho save luôn.

    Em thử vào office 2010 copy file RefEdit.dll trong muc Office14 cua Office 2010. Rồi tạo 1 forder mang tên Office14 trong thư mục cài của office 2007 (C:\Program Files\Microsoft Office).
    Mở lên lại thì thấy không báo lỗi. Vào bỏ Missing nó cũng Ok luôn.

    Không biết giải quyết theo cách dưới có ảnh hưởng gì đến việc chạy các Macro không. Em chưa thử.
    Nếu có ai đã từng làm rồi thì góp ý kiến.
    Thân.
     
  16. ndu96081631

    ndu96081631 Well-Known Member

    Nếu bạn mở file và Disable Macro thì có bỏ được mấy cái MISSING... ấy không?
     
  17. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Vấn đề của bạn cứ loanh quan rồi phá hỏng cả Office mất. Không bao giờ được thay thế file RefEdit.dll trong các phiên bản Office, nó đi cùng và tương thích với phiên bản hiện tại. Hãy nhớ dùng control gì ngoài những control ngầm định của Office (FM20.DLL) thì cần tìm hiểu nó thuộc dll, ocx nào. Muốn máy khác sử dụng thì phải cài các dll và ocx đó vào máy (nếu nó chưa có). Hãy cẩn thận, bản thân nếu các dll và ocx đã có trong máy rồi mà bạn copy đề vào không cẩn thận còn xung đột giữ các phiên bản->Nhiều ứng dụng đang dùng nó lỗi một loạt. Kiểm tra trong Reference, tất cả các dòng có chữ MISSING là do thiếu dll hoặc ocx. Hãy cài những file đó vào máy.

    Làm tất cả những cái trên rồi mà vẫn bị lỗi. Thì hệ thống Windows và Office của bạn đã bị lỗi vì xung đột các dll, ocx (không phải tự nhiên mà bị, do quá trình copy đè lẫn lộn)-->Hãy cài lại máy!
     

Chia sẻ trang này