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

Liên hệ QC

vba_gpe

Thành viên thường trực
Tham gia
15/12/10
Bài viết
296
Được thích
44
Nghề nghiệp
Thất nghiệp
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 đở.
 
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 đở.
Hổng có file, biết gì mà giúp hả bạn?
 
Upvote 0
Hổng có file, biết gì mà giúp hả bạn?
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(mst) Then
      msttext = Format(mst, "0000000000")
   Else
      msttext = mst
   End If

      skt = CDbl(Mid(msttext, 1, 1)) * 31
      skt = skt + CDbl(Mid(msttext, 2, 1)) * 29
      skt = skt + CDbl(Mid(msttext, 3, 1)) * 23
      skt = skt + CDbl(Mid(msttext, 4, 1)) * 19
      skt = skt + CDbl(Mid(msttext, 5, 1)) * 17
      skt = skt + CDbl(Mid(msttext, 6, 1)) * 13
      skt = skt + CDbl(Mid(msttext, 7, 1)) * 7
      skt = skt + CDbl(Mid(msttext, 8, 1)) * 5
      skt = skt + CDbl(Mid(msttext, 9, 1)) * 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é
 

File đính kèm

  • Name_Manager.txt
    10.7 KB · Đọc: 15
  • Userform.rar
    4.9 KB · Đọc: 38
  • Mudule_Name.rar
    3 KB · Đọc: 20
Lần chỉnh sửa cuối:
Upvote 0
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?
 
Upvote 0
Em tại 1 file của anh Ndu có sử dụng chức năng Spreadsheet mà mở lên bị báo lỗi "could not load an Object..." em đã tìm bài viết này http://www.giaiphapexcel.com/forum/...o-chuyển-text-dạng-ngày-thành-ngày-trong-vba&
mà làm vẫn bị báo lỗi mặc dù mở được chức năng Calendar ; DTPicker dù đã kí thành công mong anh Ndu chỉ giúp. Thanks
View attachment 60926View attachment 60927

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.
 
Upvote 0
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?

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 .
 
Lần chỉnh sửa cuối:
Upvote 0
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.

Thân. Mong nhận được đóng góp .
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
 
Upvote 0
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.

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
 
Upvote 0
Upvote 0
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
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
 
Lần chỉnh sửa cuối:
Upvote 0
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
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
 

File đính kèm

  • Copy of DUTOAN-a.rar
    639.7 KB · Đọc: 118
Lần chỉnh sửa cuối:
Upvote 0
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

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.
 
Upvote 0
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.
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
 
Upvote 0
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.
 
Upvote 0
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.
Nếu bạn mở file và Disable Macro thì có bỏ được mấy cái MISSING... ấy không?
 
Upvote 0
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.

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!
 
Upvote 0
Web KT
Back
Top Bottom