Giúp sửa lỗi "Can't find project or library"

Liên hệ QC

nokiano258vn

Thành viên lười biếng
Tham gia
28/8/07
Bài viết
268
Được thích
276
Nghề nghiệp
Bồi thường giải phóng mặt bằng
File kế toán tôi tải ở diễn đàn về, mang sang máy khác thì bị báo lỗi như sau (file đính kèm) và hiện đoạn code sau:
PHP:
Sub DeleteMenu()
'   This sub should be executed when the workbook is closed'
'   Deletes the Menus'
    Dim MenuSheet As Worksheet
    Dim Row As Integer
    Dim Caption As String
    Dim wb As Workbook
    
    For Each wb In Application.Workbooks
        If wb.Name <> ThisWorkbook.Name And Left(wb.Name, 9) = "KeToanABC" Then Exit Sub
    Next
    On Error Resume Next
    Set MenuSheet = ThisWorkbook.Sheets("MenuSheet")
    Row = 2
    Do Until IsEmpty(MenuSheet.Cells(Row, 1))
        If MenuSheet.Cells(Row, 1) = 1 Then
            Caption = MenuSheet.Cells(Row, 2)
            Application.CommandBars(1).Controls(Caption).Delete
        End If
        Row = Row + 1
    Loop
    On Error GoTo 0
End Sub
Máy ở nhà dùng WinXP thì chạy bình thường, nhưng chuyển sang WinVista thì cũng bị lỗi tương tự
 

File đính kèm

  • Untitled-1.psd.jpg
    Untitled-1.psd.jpg
    83.4 KB · Đọc: 80
Xem hình thì hình báo lỗi như trong file có sử dụng khai báo sử dụng hàm thư viện trong DLL của VB -> không thể biên dịch

Tuy nhiên nhìn CODE chưa thấy khai báo nào ...có thể chưa copy hết ra đây chăng? -> bạn thử xem trong phần CODE đầy đủ có thấy khai báo Declare .... nào k -> đấy chính là khai báo sd thư viện hàm đó (ở winXP có mà ở Vista k có)

.
 
Upvote 0
Nguyên nhân ở đây "user32.dll" phải không bác tigertiger, có đoạn code này
Option Explicit
Private Declare Function MessageBox Lib "user32.dll" Alias "MessageBoxW" (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal wType As Long) As Long
 
Upvote 0
Đúng rồi đó bạn, hình như máy khác không cài đủ
 
Upvote 0
Nguyên nhân ở đây "user32.dll" phải không bác tigertiger, có đoạn code này
Option Explicit
Private Declare Function MessageBox Lib "user32.dll" Alias "MessageBoxW" (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal wType As Long) As Long



bạn thử search trong Win XP có file user32.dll đó ở đâu (nằm ở thư mục nào)?

bạn thử search trong Win Vista có file user32.dll đó k ? -> NẾU k có thì copy từ win XP sang là OK

nhưng e rằng nó có -> đừng có copy trùng nhé ---> phải tìm giải pháp khác thôi,
.
 
Upvote 0
Tôi đã quét virut, cài lại win, quét virut nhưng vẫn bị báo lỗi như trên là sao, trong khi máy ở nhà vẫn chạy bình thường
File này là do tôi lấy ở diễn đàn (tác giả là ai tôi cũng không nhớ), tôi đã "đục đẽo" một ít để cho phù hợp với công việc (xin lỗi tác giả) mong các bác xem giúp
Tên: phuong
Pass: 123456
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi đã quét virut, cài lại win, quét virut nhưng vẫn bị báo lỗi như trên là sao, trong khi máy ở nhà vẫn chạy bình thường
File này là do tôi lấy ở diễn đàn (tác giả là ai tôi cũng không nhớ), tôi đã "đục đẽo" một ít để cho phù hợp với công việc (xin lỗi tác giả) mong các bác xem giúp
Tên: phuong
Pass: 123456

tôi mở cũng có thấy gì đâu nhỉ?

lỗi báo thế nào nokano258vn??
???
 
Upvote 0
Đúng là máy tính ở nhà tôi mở cũng không có gì xảy ra (chạy tốt với win XP thôi, win Vista thì không được), nhưng mang đến cơ quan để thử thì lỗi như ở tiêu đề đó và ấn OK thì lại chuyển sang báo lối (đánh dấu) ở những hàm (Trim, Mid, Chr ...) mà tôi cài mới lại win XP cho máy ở cơ quan rồi mới mở mà không được
 
Upvote 0
Bạn hãy vào phần VBE (ALT+F11), vàomenu Tools->References..., bỏ chọn đối tượng MSDBGRID đi. Nếu bạn vẫn muốn giữ đối tượng MSDBGRID thì hãy tìm file OCX và copy nó theo cùng file chương trình, khi mang sang máy khác thì phải đăng ký (regsvr32) file OCX này.

(Trong chương trình của tác giả có sử dụng một số code trên GPE, tác giả nên chú thích rõ nguồn của những code đó trong chương trình. Tôi nhớ rõ một số hàm và thủ tục viết trong đó là của ai nhưng tác giả đã xóa toàn bộ ghi chú đã có trước đó, nội dung vẫn thế chỉ đổi tên hàm.)
 
Upvote 0
(Trong chương trình của tác giả có sử dụng một số code trên GPE, tác giả nên chú thích rõ nguồn của những code đó trong chương trình.)
Đúng là tôi đã sửa một số nội dung của Workbook như bớt một số sheet và thêm một số nút bấm để chạy code nhưng không biết nguồn của những code trong trương trình là của những tác giả nào (mong các tác giả lượng thứ)
Tôi nhớ rõ một số hàm và thủ tục viết trong đó là của ai nhưng tác giả đã xóa toàn bộ ghi chú đã có trước đó, nội dung vẫn thế chỉ đổi tên hàm
Về việc này tôi cam đoan là chưa xoá một dòng nào trong code (có lẽ người trước tôi đã làm) chỉ thêm hoặc bớt một số hàm dạng như ActiveSheet.Range("C6").FormulaR1C1 = "=INT((R[-2]C-1)/35)+1" (thành thật xin lỗi các tác giả)
Tôi sẽ rút kinh nghiệm về 2 việc này
đăng ký (regsvr32) file OCX này
Mong được các bác chỉ giúp các đăng ký
 
Upvote 0
Mong được các bác chỉ giúp các đăng ký

Bạn làm như sau:

+ Copy những file ocx, dll mà bạn kiểm tra có trong VBE/Tools->references... (ngoại trừ Visual Basic for Applications, Microsoft Forms 2.0 Object Library) vào cùng một thư mục file chương trình của bạn, ví dụ tên là ACC.
+ Tạo một file.bat ví dụ là Setup.bat và soạn thảo nội dung như sau:

RegSvr32 "Ten_file_dll.dll" /s
RegSvr32 "Ten_file_ocx.ocx" /s

lưu lại.

Như vậy trong thư mục ACC có các file:
+ File chương trình
+ File DLL, OCX
+ File Setup.bat
+ Huongdan.txt (file này bạn đưa những thông tin cần thiết cho người dùng như là "Hãy chạy file Setup.bat để cài đặt!")


Những lời tôi góp ý trên không phải là trách bạn gì đâu. Những gì mà cộng đồng GPE tạo ra là miễn phí! Vì thế chúng ta hoàn toàn có thể tận dụng tư liệu để xây dựng cho mình một chương trình hoàn chỉnh. Tuy nhiên để khuyến khích những đóng góp của các tác giả thì mọi người chỉ cần comment trước tên hàm hoặc module là "code của xxx, www.website.com" là được rồi.

Tôi biết bạn không phải là tác giả đầu tiên của chương trình này (bạn đã giới thiệu) nên đúng là khó mà biết được nguồn gốc của một số code! Chúc bạn sớm hoàn thiện được chương trình của mình!
 
Upvote 0
Tôi có 2 vấn đề thắc mắc:
1. File là tôi dowload ở GPE, máy nhà tôi không làm như bác TuanVNUNI hướng dẫn nhưng vẫn chạy được ở win XP
2. RegSvr32 "Ten_file_dll.dll" /s có phải như trong trường hợp này là RegSvr32 "Sent.dll" (tôi dùng notepad)
Còn vấn đề kiểm tra có trong VBE/Tools->references... là không thể vì tác giả đã đặt pass
 
Upvote 0
Tôi có 2 vấn đề thắc mắc:
1. File là tôi dowload ở GPE, máy nhà tôi không làm như bác TuanVNUNI hướng dẫn nhưng vẫn chạy được ở win XP

Vì trên máy của bạn đã có điều khiển (ActiveX Control) đó rồi. Tại sao có là có thể WINXP đã có khi cài đặt hoặc một số phần mềm nào đó đã cài đặt bổ sung vào.

2. RegSvr32 "Ten_file_dll.dll" /s có phải như trong trường hợp này là RegSvr32 "Sent.dll" (tôi dùng notepad)
Còn vấn đề kiểm tra có trong VBE/Tools->references... là không thể vì tác giả đã đặt pass

Vì tôi dùng Object Browser (trong VBE nhấn F2) thấy đối tượng MSDBGrid, đối tượng này nằm trong file DBGRID32.OCX. Bạn hãy vào máy của bạn, vào thư mục C:\Windows\System32 để copy file đó vào trong cùng thư mục chứa file Sent.xls nhập lệnh trong file Setup.bat như sau (có thể dùng Notepad để soạn thảo):

Mã:
RegSvr32 "DBGRID32.OCX" /s

Khi mang chương trình sang một máy mới, phải mang cả thư mục và chạy file Setup.bat đầu tiên (duy nhất một lần đầu).
 
Upvote 0
hehhe, dính líu đến sản phẩm của bác TUANVNUNI là phải làm đủ các thủ tục, kô thôi là báo lỗi ngập đầu. Sản phẩm pro nên mọi người cũng cần phải hiểu nguồn thì mới có thể làm tốt đc phải kô bác TUANVNUNI.
Chúc vui!
 
Upvote 0
Web KT
Back
Top Bottom