Kết quả 1 đến 8 của 8

Chủ đề: Cách khai báo biến TARGET của thủ tục nằm trong *.DLL(

  1. #1
    hungcnx1989 Guest

    Cách khai báo biến TARGET của thủ tục nằm trong *.DLL(

    Xin được giúp đỡ
    + Thủ tục trong “Worksheet”
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Application.Run "'CHUONGTRINH.XLS'!Tinh_Toan", Target
    End Sub
    + Thủ tục trong module của file CHUONGTRINH.XLS
    Sub Tinh_Toan(ByVal Target As Excel.Range)
    Hangcp = Target.EntireRow.Count
    Cot = Target.Column
    .......................
    End Sub
    + Bây giờ tôi muốn đưa thủ tục “Tinh_Toan (ByVal Target As Excel.Range)”
    này vào trong trong file *.dll (viết bằng VB) để khi gọi ra nó hiểu được các biến Hangcp, Cot.
    Xin hỏi cách khai báo biến Target của thủ tục nằm trong *DLL (VB)?
    Xin cám ơn.

  2. #2
    test01 Guest

    Xin hỏi cách khai báo biến Target của thủ tục nằm trong *DLL (VB)?
    - Chạy VB6, chọn File/ New Project, chọn ActiveX DLL, nhấn OK
    - Nhấn Project/ References, chọn Microsoft Excel 12.0 Object Library
    (số 12.0 sẽ tuỳ thuộc bạn cài phiên bản Office nào)
    - Nhấn OK để đóng hộp thoại.
    - Viết code cho Class Modules
    Bạn muốn khai báo biến Target dạng Range thì chỉ cần:

    Mã:
    Sub Tinh_Toan(ByVal Target As Range)
        Hangcp = Target.EntireRow.Count
        Cot = Target.Column
        '.......................
    End Sub
    .....
    Biên dịch ra file *.dll
    ......

  3. #3
    phatthu Guest
    Cám ơn bạn đã chỉ dẫn rất rõ ràng.

  4. #4
    kulu193 Guest
    Xin chào.
    Tôi đã làm và khai báo được Range và tạo ra 1 file *.DLL (không có lỗi gì) nhưng không biết khi gọi thủ tục từ DLL này ra thì nó báo lỗi “Class doesn’t support automation”.
    tức hai biến HangcpCot không nhận biết được.
    Xin được giúp đỡ.

  5. #5
    khamnamkhoa Guest
    Bạn tham khảo bài này nhé!

  6. #6
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Hiện tại mình bị vướng trong khâu lấy dữ liệu từ bên trong thủ tục (tức lấy thông số từ biến truyền vào là TARGET) chứ khâu dịch DLL, Đăng ký và gọi thủ tục từ DLL thì ổn.(Các thủ tục khác gọi từ DLL với tham biến Interger, mảng ... thì hoạt động tốt).

  7. #7
    nguenthikimchi Guest
    Mình thấy có vấn đề gì đâu nhỉ!
    Bạn làm theo các bước sau:
    B1: Tạo file *.dll
    - Chạy VB6, chọn File/ New Project, chọn ActiveX DLL, nhấn OK
    - Nhấn Project/ References, chọn Microsoft Excel 12.0 Object Library
    (số 12.0 sẽ tuỳ thuộc bạn cài phiên bản Office nào...)
    - Nhấn OK để đóng hộp thoại.
    - Viết code cho Class Modules (Name là clsClass1 chẳng hạn)

    Mã:
    Sub Tinh_Toan(ByVal Target As Range)
        hangcp = Target.EntireRow.Count
        cot = Target.Column
        MsgBox "Cot = " & cot & "  HangCP = " & hangcp
    End Sub
    - Nhấn Project/ Project1 Properties, đặt tên cho Project Name (là GoiDLL chẳng hạn)
    - Nhấn File/ Make GoiDLL.dll
    B2: sử dụng các hàm, thủ tục trong file dll
    - Chạy MS Excel, vào VBA, insert Module
    - Nhấn tiếp Tools/ References, nhấn nút Browse để chọn file *.dll mà mình vừa tạo ra--->OK để đóng hộp thoại.
    Trong Modules code bạn thử thêm đoạn code sau:

    Mã:
    Option Explicit
    Public Sub thu()
    Dim objThu As goiDLL.clsClass1
    Set objThu = New clsClass1
    Call objThu.Tinh_Toan(Range("A1:B10"))
    '.....
    Set objThu = Nothing
    End Sub
    Vậy thôi!

  8. #8
    noithat889 Guest
    Cám ơn bạn nvson, vd của bạn rất dễ hiểu.
    Bạn có thể vd thêm cách lấy dữ liệu ngược lại, từ GoiDLL lấy dữ liệu ở ô nào đó trên Excel không?

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •