Chia sẻ Add_ins dùng để mã hóa code VBA (nhằm tạo sự khó đọc cho những kẻ tò mò) (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

giaiphap

==(^o^)==
Tham gia
12/3/07
Bài viết
5,809
Được thích
6,367
Donate (Momo)
Donate
Giới tính
Nam
Các bạn đã từng thấy các đoạn code của bác Hữu Thắng hay chưa? nếu chưa thì có thể tham khảo ở hình dưới.
Hinh.jpg
Vô tình lên mạng mình tìm thấy một tiện ích có chức năng tương tự như trên, nhưng nó còn một hạn chế là sau khi chuyển thì một số nút lệnh trên sheet sẽ gãy liên kết (ta phải làm lại công việc tạo lại các liên kết macro), và một lỗi nửa là các hàm API nó cũng chưa chuyển đúng (Mình đã chỉnh sửa lại bằng cách loại trừ các hàm API, trong file mình có ghi chú nếu trong code của bạn có các hàm AIP thì bạn phải khai báo trước khi cho nó chuyển đổi), bạn nào sử dụng và nghiên cứu tiếp để hoàn thiện add-ins. Trước hết bạn hãy mở tiện ích lên (nhớ giải nén thư mục tải về có 2 file, 1 file tiện ích và một file text) sau đó mở tiếp file excel có chắc macro bạn muốn mã hóa lên và chọn lệnh Encrypt VBA Project, sau đó chọn yes, chọn đường dẫn và gõ tên file cần lưu sau khi mã hóa. Đợi nó thực hiện chút xong nháy OK. Bây giờ bạn nhấn Alt+F11 để xem kết quả (Nhớ là phải xem lại có nút lệnh nào trên sheet sử dụng đến code VBA bạn phải sửa lại hết, do nó chỉ chuyển code còn Liên kết đến code cho các nút lệnh trên sheet không được cập nhật)
 

File đính kèm

Lần chỉnh sửa cuối:
Các bạn đã từng thấy các đoạn code của bác Hữu Thắng hay chưa? nếu chưa thì có thể tham khảo ở hình dưới.
View attachment 162845
Vô tình lên mạng mình tìm thấy một tiện ích có chức năng tương tự như trên, nhưng nó còn một hạn chế là sau khi chuyển thì một số nút lệnh trên sheet sẽ gãy liên kết (ta phải làm lại công việc tạo lại các liên kết macro), và một lỗi nửa là các hàm API nó cũng chưa chuyển đúng (Mình đã chỉnh sửa lại bằng cách loại trừ các hàm API, trong file mình có ghi chú nếu trong code của bạn có các hàm AIP thì bạn phải khai báo trước khi cho nó chuyển đổi), bạn nào sử dụng và nghiên cứu tiếp để hoàn thiện add-ins. Trước hết bạn hãy mở tiện ích lên (nhớ giải nén thư mục tải về có 2 file, 1 file tiện ích và một file text) sau đó mở tiếp file excel có chắc macro bạn muốn mã hóa lên và chọn lệnh Encrypt VBA Project, sau đó chọn yes, chọn đường dẫn và gõ tên file cần lưu sau khi mã hóa. Đợi nó thực hiện chút xong nháy OK. Bây giờ bạn nhấn Alt+F11 để xem kết quả (Nhớ là phải xem lại có nút lệnh nào trên sheet sử dụng đến code VBA bạn phải sửa lại hết, do nó chỉ chuyển code còn Liên kết đến code cho các nút lệnh trên sheet không được cập nhật)
Nó lỗi code Bạn khả năng MÌnh thao tac sai cái gì đó...Từ từ ta nghiên cứu
 

File đính kèm

  • Capture.jpg
    Capture.jpg
    24.7 KB · Đọc: 558
Code trong hình đó không phải của tôi nhé bạn --=0
 
kể ra ngâm cứu hồi thấy cũng hay hay ...nhưng còn nhiều hạn chế lắm ...một số dòng code nó không hiểu và báo lỗi ...nói chung chua hoàn thiên lắm ...( Theo chủ quan của mình còn ai đó thì No biết)

Trên Anh google keo anh kiếm hồi nó ra đống ... vấn đề là ưa mớ nào thôi ....--=0
Mã:
Public Function yqzqarbrcrdrerfrgrhr(irjrkrlrmrnrorprqrrr As Variant) As Variant
Dim srtrurvrwrxryrzrasbs As Variant, olplqlrlsltlulvlwlxl As Long, csdsesfsgshsisjsksls As Long
ReDim srtrurvrwrxryrzrasbs(UBound(irjrkrlrmrnrorprqrrr, 2), UBound(irjrkrlrmrnrorprqrrr, 1))
For olplqlrlsltlulvlwlxl = 0 To UBound(irjrkrlrmrnrorprqrrr, 2)
For csdsesfsgshsisjsksls = 0 To UBound(irjrkrlrmrnrorprqrrr, 1)
srtrurvrwrxryrzrasbs(olplqlrlsltlulvlwlxl, csdsesfsgshsisjsksls) = irjrkrlrmrnrorprqrrr(csdsesfsgshsisjsksls, olplqlrlsltlulvlwlxl)
Next csdsesfsgshsisjsksls
Next olplqlrlsltlulvlwlxl
yqzqarbrcrdrerfrgrhr = srtrurvrwrxryrzrasbs
End Function
 
kể ra ngâm cứu hồi thấy cũng hay hay ...nhưng còn nhiều hạn chế lắm ...một số dòng code nó không hiểu và báo lỗi ...nói chung chua hoàn thiên lắm ...( theo chủ quan của mình còn ai đó thì no biết)

trên anh google keo anh kiếm hồi nó ra đống ... Vấn đề là ưa mớ nào thôi ....--=0
Mã:
Public function yqzqarbrcrdrerfrgrhr(irjrkrlrmrnrorprqrrr as variant) as variant
dim srtrurvrwrxryrzrasbs as variant, olplqlrlsltlulvlwlxl as long, csdsesfsgshsisjsksls as long
redim srtrurvrwrxryrzrasbs(ubound(irjrkrlrmrnrorprqrrr, 2), ubound(irjrkrlrmrnrorprqrrr, 1))
for olplqlrlsltlulvlwlxl = 0 to ubound(irjrkrlrmrnrorprqrrr, 2)
for csdsesfsgshsisjsksls = 0 to ubound(irjrkrlrmrnrorprqrrr, 1)
srtrurvrwrxryrzrasbs(olplqlrlsltlulvlwlxl, csdsesfsgshsisjsksls) = irjrkrlrmrnrorprqrrr(csdsesfsgshsisjsksls, olplqlrlsltlulvlwlxl)
next csdsesfsgshsisjsksls
next olplqlrlsltlulvlwlxl
yqzqarbrcrdrerfrgrhr = srtrurvrwrxryrzrasbs
end function
Chính xác là quá hạn chế
giống như đoạn code của kiều mạnh
Chỉ cần vài thao tác thì có thể nghiên cứu được code họ viết những gì.
Mã:
public function ldt1(ldt2 as variant) as variant
dim ldt3 as variant, ldt4 as long, ldt5 as long
redim ldt3(ubound(ldt2, 2), ubound(ldt2, 1))
for ldt4 = 0 to ubound(ldt2, 2)
for ldt5 = 0 to ubound(ldt2, 1)
ldt3(ldt4, ldt5) = ldt2(ldt5, ldt4)
next ldt5
next ldt4
ldt1 = ldt3
end function
 
Lần chỉnh sửa cuối:
Chính xác là quá hạn chế
giống như đoạn code của kiều mạnh
Chỉ cần vài thao tác thì có thể nghiên cứu được code họ viết những gì.
Mã:
public function ldt1(ldt2 as variant) as variant
dim ldt3 as variant, ldt4 as long, ldt5 as long
redim ldt3(ubound(ldt2, 2), ubound(ldt2, 1))
for ldt4 = 0 to ubound(ldt2, 2)
for ldt5 = 0 to ubound(ldt2, 1)
ldt3(ldt4, ldt5) = ldt2(ldt5, ldt4)
next ldt5
next ldt4
ldt1 = ldt3
end function
Em mới thử làm vài cái nó cũng ra giống như Anh... xem ra cái này cũng không Vui lắm ...
làm thủ công cũng được mà...có điều rất công phu và mắt phải sáng để dòm ....hahahahaha
code Mã hóa
Mã:
Public Function ldt1(ldt2 As Variant) As Variant
    Dim ldt3 As Variant, ldt4 As Long, ldt5 As Long
    ReDim ldt3(UBound(ldt2, 2), UBound(ldt2, 1))
    For ldt4 = 0 To UBound(ldt2, 2)
        For ldt5 = 0 To UBound(ldt2, 1)
            ldt3(ldt4, ldt5) = ldt2(ldt5, ldt4)
        Next ldt5
    Next ldt4
    ldt1 = ldt3
End Function
Tương tự như code dưới
Mã:
Public Function l_i_i_i_l_l_1_l_1_1_1_1(l_i_i_i_l_l_1_1_l_1_1_1 As Variant) As Variant
Dim l_i_i_i_l_l_1_1_1_l_1_1 As Variant, l_i_i_i_l_l_1_1_1_1_l_1 As Long, l_i_i_i_l_l_1_1_1_1_1_l As Long
ReDim l_i_i_i_l_l_1_1_1_l_1_1(UBound(l_i_i_i_l_l_1_1_l_1_1_1, 2), UBound(l_i_i_i_l_l_1_1_l_1_1_1, 1))
For l_i_i_i_l_l_1_1_1_1_l_1 = 0 To UBound(l_i_i_i_l_l_1_1_l_1_1_1, 2)
For l_i_i_i_l_l_1_1_1_1_1_l = 0 To UBound(l_i_i_i_l_l_1_1_l_1_1_1, 1)
l_i_i_i_l_l_1_1_1_l_1_1(l_i_i_i_l_l_1_1_1_1_l_1, l_i_i_i_l_l_1_1_1_1_1_l) = l_i_i_i_l_l_1_1_l_1_1_1(l_i_i_i_l_l_1_1_1_1_1_l, l_i_i_i_l_l_1_1_1_1_l_1)
Next l_i_i_i_l_l_1_1_1_1_1_l
Next l_i_i_i_l_l_1_1_1_1_l_1
l_i_i_i_l_l_1_l_1_1_1_1 = l_i_i_i_l_l_1_1_1_l_1_1
End Function
 
Lần chỉnh sửa cuối:
Thì tôi cũng đã từng làm cái việc dịch ngược mã code lại (nó không khó nhưng lại mất thời gian), những ví dụ ở trên chỉ là một hàm thôi, còn nếu trong file có cả chục Module, cả chục cái Form chưa kể có Class Module và Sheet nửa. Tôi góp vui thêm đoạn code của bác KieuManh ở #6 nhìn sẽ rối hơn nửa đây:
Mã:
Private Const l_i_i_i_l_l_1_l_1_1_1_1 = 1: Const l_i_i_i_l_l_1_1_1_1 = 2:   Const l_i_i_i_l_l_1_1_l_1_1_1 = 0
Public Function l_i_i_i_l_l_1_1_1_l_1_1(l_i_i_i_l_l_1_1_1_1_l_1 As Variant) As Variant
Dim l_i_i_i_l_l_1_1_1_1_1_l As Variant, l_i_i_i_l_1_l_l_1_1_1_1 As Long, l_i_i_i_l_1_l_1_l_1_1_1 As Long: ReDim l_i_i_i_l_l_1_1_1_1_1_l(UBound(l_i_i_i_l_l_1_1_1_1_l_1, l_i_i_i_l_l_1_1_1_1), UBound(l_i_i_i_l_l_1_1_1_1_l_1, l_i_i_i_l_l_1_l_1_1_1_1))
For l_i_i_i_l_1_l_l_1_1_1_1 = l_i_i_i_l_l_1_1_l_1_1_1 To UBound(l_i_i_i_l_l_1_1_1_1_l_1, l_i_i_i_l_l_1_1_1_1): For l_i_i_i_l_1_l_1_l_1_1_1 = l_i_i_i_l_l_1_1_l_1_1_1 To UBound(l_i_i_i_l_l_1_1_1_1_l_1, l_i_i_i_l_l_1_l_1_1_1_1)
l_i_i_i_l_l_1_1_1_1_1_l(l_i_i_i_l_1_l_l_1_1_1_1, l_i_i_i_l_1_l_1_l_1_1_1) = l_i_i_i_l_l_1_1_1_1_l_1(l_i_i_i_l_1_l_1_l_1_1_1, l_i_i_i_l_1_l_l_1_1_1_1)
Next l_i_i_i_l_1_l_1_l_1_1_1: Next l_i_i_i_l_1_l_l_1_1_1_1: l_i_i_i_l_l_1_1_1_l_1_1 = l_i_i_i_l_l_1_1_1_1_1_l
End Function
 
Thì tôi cũng đã từng làm cái việc dịch ngược mã code lại (nó không khó nhưng lại mất thời gian), những ví dụ ở trên chỉ là một hàm thôi, còn nếu trong file có cả chục Module, cả chục cái Form chưa kể có Class Module và Sheet nửa. Tôi góp vui thêm đoạn code của bác KieuManh ở #6 nhìn sẽ rối hơn nửa đây:
Mã:
Private Const l_i_i_i_l_l_1_l_1_1_1_1 = 1: Const l_i_i_i_l_l_1_1_1_1 = 2:   Const l_i_i_i_l_l_1_1_l_1_1_1 = 0
Public Function l_i_i_i_l_l_1_1_1_l_1_1(l_i_i_i_l_l_1_1_1_1_l_1 As Variant) As Variant
Dim l_i_i_i_l_l_1_1_1_1_1_l As Variant, l_i_i_i_l_1_l_l_1_1_1_1 As Long, l_i_i_i_l_1_l_1_l_1_1_1 As Long: ReDim l_i_i_i_l_l_1_1_1_1_1_l(UBound(l_i_i_i_l_l_1_1_1_1_l_1, l_i_i_i_l_l_1_1_1_1), UBound(l_i_i_i_l_l_1_1_1_1_l_1, l_i_i_i_l_l_1_l_1_1_1_1))
For l_i_i_i_l_1_l_l_1_1_1_1 = l_i_i_i_l_l_1_1_l_1_1_1 To UBound(l_i_i_i_l_l_1_1_1_1_l_1, l_i_i_i_l_l_1_1_1_1): For l_i_i_i_l_1_l_1_l_1_1_1 = l_i_i_i_l_l_1_1_l_1_1_1 To UBound(l_i_i_i_l_l_1_1_1_1_l_1, l_i_i_i_l_l_1_l_1_1_1_1)
l_i_i_i_l_l_1_1_1_1_1_l(l_i_i_i_l_1_l_l_1_1_1_1, l_i_i_i_l_1_l_1_l_1_1_1) = l_i_i_i_l_l_1_1_1_1_l_1(l_i_i_i_l_1_l_1_l_1_1_1, l_i_i_i_l_1_l_l_1_1_1_1)
Next l_i_i_i_l_1_l_1_l_1_1_1: Next l_i_i_i_l_1_l_l_1_1_1_1: l_i_i_i_l_l_1_1_1_l_1_1 = l_i_i_i_l_l_1_1_1_1_1_l
End Function
Trò này giống con bé nhà mình đang tập nói ba Mạnh ơi ba mạnh à
Mã:
Private Const l_i_i_i_l_l_1_l_1_1_1_1 = 1: Const l_i_i_i_l_l_1_1_1_1 = 2:   Const l_i_i_i_l_l_1_1_l_1_1_1 = 0
Public Function giaiphapoi(giaiphapoiHahahaha As Variant) As Variant
Dim giaiphapoihehehehe As Variant, l_i_i_i_l_1_l_l_1_1_1_1 As Long, l_i_i_i_l_1_l_1_l_1_1_1 As Long: ReDim giaiphapoihehehehe(UBound(giaiphapoiHahahaha, l_i_i_i_l_l_1_1_1_1), UBound(giaiphapoiHahahaha, l_i_i_i_l_l_1_l_1_1_1_1))
For l_i_i_i_l_1_l_l_1_1_1_1 = l_i_i_i_l_l_1_1_l_1_1_1 To UBound(giaiphapoiHahahaha, l_i_i_i_l_l_1_1_1_1): For l_i_i_i_l_1_l_1_l_1_1_1 = l_i_i_i_l_l_1_1_l_1_1_1 To UBound(giaiphapoiHahahaha, l_i_i_i_l_l_1_l_1_1_1_1)
giaiphapoihehehehe(l_i_i_i_l_1_l_l_1_1_1_1, l_i_i_i_l_1_l_1_l_1_1_1) = giaiphapoiHahahaha(l_i_i_i_l_1_l_1_l_1_1_1, l_i_i_i_l_1_l_l_1_1_1_1)
Next l_i_i_i_l_1_l_1_l_1_1_1: Next l_i_i_i_l_1_l_l_1_1_1_1: giaiphapoi = giaiphapoihehehehe
End Function
 
Vậy bạn làm việc đó bằng cách nào mà không mất thời gian vậy? --=0 --=0 --=0

Thợ làm ống khóa cũng là nghệ sĩ --=0--=0
Thợ làm chìa khóa cũng phải là nghệ sĩ --=0--=0
Mình cũng viết sẵn code để Replace mấy kí tự đó rồi , nhưng cũng chỉ để cất vào tủ , nói chung không ưa mấy trò này , ai thích chơi thì cứ việc , mình không quan tâm .
 
Thợ làm ống khóa cũng là nghệ sĩ --=0--=0
Thợ làm chìa khóa cũng phải là nghệ sĩ --=0--=0
Mình cũng viết sẵn code để Replace mấy kí tự đó rồi , nhưng cũng chỉ để cất vào tủ , nói chung không ưa mấy trò này , ai thích chơi thì cứ việc , mình không quan tâm .
Bạn nói đúng, tôi thì không phải là nghệ sĩ (do bản thân đâu biết cách làm ra giống vậy đâu mà là nghệ sĩ, vì vậy khi thấy nó chỉ biết làm theo cách thủ công thôi), đây chỉ là tiện ích mình sưu tầm được (đã đề cập ở #1) và phát hiện có một số lỗi, định chia sẽ để mọi người biết và hiểu được khi nào gặp code giống vậy thì biết nó được tạo ra bằng cách nào. Còn nếu muốn tạo vậy để sử dụng cho bản thân thì tôi chẳng thèm đưa lên đây làm gì (để tự phục vụ cho bản thân để khỏi bị ném gạch cho nó khỏe), tôi cam đoan với bạn là sẽ chẳng bao giờ dùng tới vì tôi thấy cách này chẳng ích lợi gì mà còn làm cho dung lượng file phình to ra, file chạy ì ạch, một lý do nửa mà tôi chẳng bao giờ sử dụng nó là cái tôi biết thì rất nhiều người biết (Ít nhất là nhiều thành viên trong diễn đàn đã giúp tôi trong thời gian vừa qua trong đó có thể kể tên hpkhuong, kieumanh, thầy ndu, doveandrose...), mà khi họ biết thì cái tôi làm được họ cũng làm được, mà làm được rồi xem code của tôi để làm gì. Nếu muốn không cho xem code luôn thì chắc sẽ sử dụng đến DLL (theo như kieumanh đã chia sẽ), đang nghiên cứu và sẽ có kết quả trong thời gian ngắn. Dù sao cũng cảm ơn bác rất nhiều, có thể bác không quan tâm còn tôi thì cái gì thấy lạ thì lại quan tâm --=0 --=0 --=0
 
Bạn nói đúng, tôi thì không phải là nghệ sĩ (do bản thân đâu biết cách làm ra giống vậy đâu mà là nghệ sĩ, vì vậy khi thấy nó chỉ biết làm theo cách thủ công thôi), đây chỉ là tiện ích mình sưu tầm được (đã đề cập ở #1) và phát hiện có một số lỗi, định chia sẽ để mọi người biết và hiểu được khi nào gặp code giống vậy thì biết nó được tạo ra bằng cách nào. Còn nếu muốn tạo vậy để sử dụng cho bản thân thì tôi chẳng thèm đưa lên đây làm gì (để tự phục vụ cho bản thân để khỏi bị ném gạch cho nó khỏe), tôi cam đoan với bạn là sẽ chẳng bao giờ dùng tới vì tôi thấy cách này chẳng ích lợi gì mà còn làm cho dung lượng file phình to ra, file chạy ì ạch, một lý do nửa mà tôi chẳng bao giờ sử dụng nó là cái tôi biết thì rất nhiều người biết (Ít nhất là nhiều thành viên trong diễn đàn đã giúp tôi trong thời gian vừa qua trong đó có thể kể tên hpkhuong, kieumanh, thầy ndu, doveandrose...), mà khi họ biết thì cái tôi làm được họ cũng làm được, mà làm được rồi xem code của tôi để làm gì. Nếu muốn không cho xem code luôn thì chắc sẽ sử dụng đến DLL (theo như kieumanh đã chia sẽ), đang nghiên cứu và sẽ có kết quả trong thời gian ngắn. Dù sao cũng cảm ơn bác rất nhiều, có thể bác không quan tâm còn tôi thì cái gì thấy lạ thì lại quan tâm --=0 --=0 --=0
Thôi cái này thấy là lạ quậy chơi vậy biết rồi thôi ... chư bảo mật giống gì nữa ... mình mới test 1 mớ thấy tốc độ code hơi chậm thì phải....
Bạn nghiên cứu qua VB6 đi viết cho khỏe .... nếu khá nữa qua VB.net nó hổ trợ cá nhân hóa Office tuyệt đối đó ...(Viết Add-ins thì tuyêt vời...)
Chúc Mọi người chơi vui vẻ nha ...--=0
 
Mạnh mới tải bản mới nhất về coi nó mã hóa nè
Mã:
Sub OO1OlOlOO1l()
Dim OOlOlOlOO1l As Object
Dim OllOlOlOO1l As Integer
OllOlOlOO1l = 0
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.DisplayAlerts = False
.EnableEvents = False
End With
For Each OOlOlOlOO1l In Sheets
If OOlOlOlOO1l.Visible = True Then
OllOlOlOO1l = OllOlOlOO1l + 1
End If
Next OOlOlOlOO1l
If Xloader.Range("I30").Value = False And OllOlOlOO1l > 3 Then Exit Sub
If OllOlOlOO1l > 3 Or Xloader.Range("I30").Value = "NOTE" Then
Xloader.Range("I32").Value = OllOlOlOO1l
Xloader.Range("I33").Value = "OPEN PROCEDURE"
If Xloader.Range("I31").Value = "" Then Xloader.Range("I30").Value = "NOTE"
If OO1OlOlOl0l = True Then Call OllOlOlOl1l
End If
End Sub
thay vì chữ lằng nhằng thì nó chuyển qua 011000 thôi chứ có khác gì mấy đâu

Chủ yếu quây để học tập và nghiên cứu thôi...qua đó xem có khai phá thêm cái gì mới ko đó mà...
 
Thôi cái này thấy là lạ quậy chơi vậy biết rồi thôi ... chư bảo mật giống gì nữa ... mình mới test 1 mớ thấy tốc độ code hơi chậm thì phải....
Bạn nghiên cứu qua VB6 đi viết cho khỏe .... nếu khá nữa qua VB.net nó hổ trợ cá nhân hóa Office tuyệt đối đó ...(Viết Add-ins thì tuyêt vời...)
Chúc Mọi người chơi vui vẻ nha ...--=0
Sẳn tiện bác kieumanh cho hỏi vấn đề này, hiện tại tôi đang viết lại cái tiện ích VnTools-Excel(lần trước bác thấy và góp ý) bằng VB6 nhưng không biết nó có chạy được trên Win 64Bit hay không vậy? Hiện tại thì nó chạy rất tốt trên Win 32Bit (do chưa hoàn chỉnh, cần bổ sung thêm một số chức năng nên chưa cài Win 64bit để test).
 
Sẳn tiện bác kieumanh cho hỏi vấn đề này, hiện tại tôi đang viết lại cái tiện ích VnTools-Excel(lần trước bác thấy và góp ý) bằng VB6 nhưng không biết nó có chạy được trên Win 64Bit hay không vậy? Hiện tại thì nó chạy rất tốt trên Win 32Bit (do chưa hoàn chỉnh, cần bổ sung thêm một số chức năng nên chưa cài Win 4bit để test).
Mình ko xài win64 nên không biết nữa ... nhưng cách đây mấy hôm mình có cho một người bạn files QLBH viết code trong *.dll trên máy mình win10_x32 + Office 2010_x32 xong Copy qua máy Win10_x64 + Office2016_x32 thấy chạy tốt đó...
Hình như khi viết trên máy Office 32 thì sẻ chạy trên máy Office x32 thì phải ....nếu vây bạn xài thêm cái máy ảo hay đua qua máy OfficeX64 xong Make lại *dll xem....Mình nghi nghi vậy chứ mình Mò học ko thôi ....có gì trật bỏ qua
 
Mình ko xài win64 nên không biết nữa ... nhưng cách đây mấy hôm mình có cho một người bạn files QLBH viết code trong *.dll trên máy mình win10_x32 + Office 2010_x32 xong Copy qua máy Win10_x64 + Office2016_x32 thấy chạy tốt đó...
Hình như khi viết trên máy Office 32 thì sẻ chạy trên máy Office x32 thì phải ....nếu vây bạn xài thêm cái máy ảo hay đua qua máy OfficeX64 xong Make lại *dll xem....Mình nghi nghi vậy chứ mình Mò học ko thôi ....có gì trật bỏ qua
Mình cài VB6 trên Win 10 32bit nhưng khi xuất file DLL thì nó báo lỗi ngay trước khi xuất, nhưng nếu mình tạo file DLL ở Win XP thì bình thường, sau đó mình tạo file setup để đăng ký file DLL với Windows thì vẫn cài đặt bình thường và sử dụng bình thường trên Win 10 32Bit.
 
Bác giaiphap rảnh thì viết hướng dẫn tạo bộ cài như cái vntool của bác đi, tui hâm mộ cái bộ setup đó quá ^^ (mà share code luôn để ae tiếp tục phát triển thêm thì thật tuyệt vời nếu bác làm ko vì mục đích thương mại )
 
Mình cài VB6 trên Win 10 32bit nhưng khi xuất file DLL thì nó báo lỗi ngay trước khi xuất, nhưng nếu mình tạo file DLL ở Win XP thì bình thường, sau đó mình tạo file setup để đăng ký file DLL với Windows thì vẫn cài đặt bình thường và sử dụng bình thường trên Win 10 32Bit.
Bạn kéo UAC xuống ... nếu ko kéo thì Chạy VB6 Run As nó mới hết lỗi...Winxp đâu có UAC mà lỗi chứ
Có phải lỗi theo hinh sau

Mai mốt mình Viết lại code mã hóa viết trên VB6 làm thành Add-ins úp lên cho Bạn coi ....đơn giản thôi mà
Mình đang suy nghĩ tại sao nó viết được như vậy mà mã nguồn lại để cho mình học ta...Xin cảm ơn hắn nhiều nhiều +-+-+-++-+-+-+--=----=--...
 

File đính kèm

  • Loi Khi UAC Keo Len Muc Cao.jpg
    Loi Khi UAC Keo Len Muc Cao.jpg
    23.2 KB · Đọc: 215
Lần chỉnh sửa cuối:
Bác giaiphap rảnh thì viết hướng dẫn tạo bộ cài như cái vntool của bác đi, tui hâm mộ cái bộ setup đó quá ^^ (mà share code luôn để ae tiếp tục phát triển thêm thì thật tuyệt vời nếu bác làm ko vì mục đích thương mại )
Cái file setup đó là tui tham khảo từ trên mạng và cũng chưa hiểu rõ được nhiều lệnh trong đó nên bảo hướng dẫn thì thua thật, còn bạn muốn chia sẻ code thì mình đã chia sẽ rồi, cụ thể có rất nhiều bác xem code và chê khen đủ thứ rồi còn gì? đa số các code của tôi trên diễn đàn có đầy, nếu bạn cần thì để lại email tôi sẻ chia sẻ riêng cho bạn.
 
Cái file setup đó là tui tham khảo từ trên mạng và cũng chưa hiểu rõ được nhiều lệnh trong đó nên bảo hướng dẫn thì thua thật, còn bạn muốn chia sẻ code thì mình đã chia sẽ rồi, cụ thể có rất nhiều bác xem code và chê khen đủ thứ rồi còn gì? đa số các code của tôi trên diễn đàn có đầy, nếu bạn cần thì để lại email tôi sẻ chia sẻ riêng cho bạn.
Mình cũng ko cần cao siêu gì cả cứ làm đc bộ setup như bạn là ok rồi, mình mới nghiên cứu về VBA do nhu cầu công việc, email của mình là btnamncseif@gmail.com mong bạn share code vntool và cái hướng dẫn nho nhỏ để mình có thể làm đc cái bộ setup (nếu share luôn thư viện code mà bạn siêu tập được thì ok quá ^^). Thx in advanced!
 
Cái file setup đó là tui tham khảo từ trên mạng và cũng chưa hiểu rõ được nhiều lệnh trong đó nên bảo hướng dẫn thì thua thật, còn bạn muốn chia sẻ code thì mình đã chia sẽ rồi, cụ thể có rất nhiều bác xem code và chê khen đủ thứ rồi còn gì? đa số các code của tôi trên diễn đàn có đầy, nếu bạn cần thì để lại email tôi sẻ chia sẻ riêng cho bạn.
Sau 2 ngày Nghiên cứu Code Add-Ins mã hóa Bạn úp ....Mạnh mới chỉnh sửa và viết lại thành 1 File setup = VB6 Bạn tải về Test thử nha ....Viết Add-ins trên VB6 quá đơn giản mà ....Bảo mật code OK

1/ không phải dùng 1 phần mền của hãng khác Make nó lại thành file Setup ...mà mình làm trên VB6 từ A ...Z

2/ Không phải cài Vào Program nên không phải lo Rác hệ thống khi ko thích xài nữa vào Add-ins xóa nó đi là xong

3/ Mọi cái tự động hết chỉ 1 cái chuột và chọn Yes ( Nếu UAC ON)

4/ Bạn test thử và cho ý kiến chi tiết nha....

5/ Pass VBA Add-Ins là: 123

6/ Bạn nào Rảnh Mạnh nhờ Check dùm...

Xin cảm ơn
 

File đính kèm

Lần chỉnh sửa cuối:
Bị lỗi này kìa bác Kiều Mạnh
 

File đính kèm

  • Capture.jpg
    Capture.jpg
    23.1 KB · Đọc: 226
Sau 2 ngày Nghiên cứu Code Add-Ins mã hóa Bạn úp ....Mạnh mới chỉnh sửa và viết lại thành 1 File setup = VB6 Bạn tải về Test thử nha ....Viết Add-ins trên VB6 quá đơn giản mà ....Bảo mật code OK

1/ không phải dùng 1 phần mền của hãng khác Make nó lại thành file Setup ...mà mình làm trên VB6 từ A ...Z

2/ Không phải cài Vào Program nên không phải lo Rác hệ thống khi ko thích xài nữa vào Add-ins xóa nó đi là xong

3/ Mọi cái tự động hết chỉ 1 cái chuột và chọn Yes ( Nếu UAC ON)

4/ Bạn test thử và cho ý kiến chi tiết nha....

5/ Pass VBA Add-Ins là: 123

6/ Bạn nào Rảnh Mạnh nhờ Check dùm...

Xin cảm ơn
Hay! bác Mạnh có thể chia sẻ source code vb6 cho mình tham khảo được không vậy? Còn một cái nửa là có cách nào tạo Menu Excel trong VB6 luôn và không cần đến file xla không? tôi thấy cái GirdHightLighter của anh Duy Tuân đã làm như vậy (Để vào IDE không thấy file xla).
 
Hay! bác Mạnh có thể chia sẻ source code vb6 cho mình tham khảo được không vậy? Còn một cái nửa là có cách nào tạo Menu Excel trong VB6 luôn và không cần đến file xla không? tôi thấy cái GirdHightLighter của anh Duy Tuân đã làm như vậy (Để vào IDE không thấy file xla).
Bạn chạy OK không vây ....

Nếu là mình Ở cái Cty viết Code đó mình sẻ làm vây ...và tạo cho nó chạy theo ID máy (mã bản quyền)....Mỗi máy với 1 mã CDkey duy nhất ....vậy là ngon lành cành đào phải hông nào

Mình sẻ Viết các Version mới xong Úp lên Server ...Các máy khi kết nối Internet sẻ check Ver mới và update nó qua Internet luôn ( như mình đã từng làm và test trên MediaFile ...Bài đã Up GPE ...)

Còn nếu viết thành Add-Ins khi Excel load thì Xem Hình (Addin)...Nhưng Ko Áp dụng cho Code mã hóa được ...tại sao từ từ nghiên cứu nha...

Cách hay nhất là viết trên VB.net sẻ khỏi thấy Add-Ins luôn (chỉ thấy cái menu ở trên)... mà khi mở 1 file Excel mới lên là thấy nó có luôn và ALT+f11 trong đó trống trơn như file mới...

Còn code thì Bạn có sẳn rồi mà ....cứ vậy mà xài thôi...

Mình phải viết thêm mấy hàm nữa mới tao thành file Setup và xài được trên VB6....
 

File đính kèm

  • Capture.jpg
    Capture.jpg
    13.9 KB · Đọc: 188
Lần chỉnh sửa cuối:
Cái file setup đó là tui tham khảo từ trên mạng và cũng chưa hiểu rõ được nhiều lệnh trong đó nên bảo hướng dẫn thì thua thật, còn bạn muốn chia sẻ code thì mình đã chia sẽ rồi, cụ thể có rất nhiều bác xem code và chê khen đủ thứ rồi còn gì? đa số các code của tôi trên diễn đàn có đầy, nếu bạn cần thì để lại email tôi sẻ chia sẻ riêng cho bạn.
Bác rảnh chia sẻ code tui với nha ^^ #22
 
Bạn chạy OK không vây ....

Nếu là mình Ở cái Cty viết Code đó mình sẻ làm vây ...và tạo cho nó chạy theo ID máy (mã bản quyền)....Mỗi máy với 1 mã CDkey duy nhất ....vậy là ngon lành cành đào phải hông nào

Mình sẻ Viết các Version mới xong Úp lên Server ...Các máy khi kết nối Internet sẻ check Ver mới và update nó qua Internet luôn ( như mình đã từng làm và test trên MediaFile ...Bài đã Up GPE ...)

Còn nếu viết thành Add-Ins khi Excel load thì Xem Hình (Addin)...Nhưng Ko Áp dụng cho Code mã hóa được ...tại sao từ từ nghiên cứu nha...

Cách hay nhất là viết trên VB.net sẻ khỏi thấy Add-Ins luôn (chỉ thấy cái menu ở trên)... mà khi mở 1 file Excel mới lên là thấy nó có luôn và ALT+f11 trong đó trống trơn như file mới...

Còn code thì Bạn có sẳn rồi mà ....cứ vậy mà xài thôi...

Mình phải viết thêm mấy hàm nữa mới tao thành file Setup và xài được trên VB6....
Mình chưa làm được nên mới nhờ bạn chia sẻ, nếu bất tiện thì thôi vậy. Cho mình hỏi thêm một vấn đề nửa là bạn tạo thư viện DLL và sử dụng lệnh.
Mã:
    With CreateObject("EncryptVBAProject.VBAProject")
        Set .ExcelApp = Application
             .EncryptVBAProject
        Set .ExcelApp = Nothing
    End With
Mình không biết cách tạo như vậy bạn có thể hướng dẫn chút được không? Mình chỉ tạo và sử dụng bằng cách như phía dưới (chỉ muốn tìm hiểu cho biết thêm thôi). Một điều nửa là khi mình vào Tools \ References... và chọn tệp ExampleCAIProject.dll thì nó lại báo lỗi, nghĩa là nó chỉ sử dụng như cách của bạn còn cách sử dụng của tôi thì thua.
Mã:
        Dim ObjP As VnToolsExcel.Proc
        Set ObjP = New VnToolsExcel.Proc
        Set ObjP.ExcelApp = Application
            ObjP.ConvFont Selection, "VNI", False
        Set ObjP = Nothing
 
Mình chưa làm được nên mới nhờ bạn chia sẻ, nếu bất tiện thì thôi vậy. Cho mình hỏi thêm một vấn đề nửa là bạn tạo thư viện DLL và sử dụng lệnh.
Mã:
    With CreateObject("EncryptVBAProject.VBAProject")
        Set .ExcelApp = Application
             .EncryptVBAProject
        Set .ExcelApp = Nothing
    End With
Mình không biết cách tạo như vậy bạn có thể hướng dẫn chút được không? Mình chỉ tạo và sử dụng bằng cách như phía dưới (chỉ muốn tìm hiểu cho biết thêm thôi). Một điều nửa là khi mình vào Tools \ References... và chọn tệp ExampleCAIProject.dll thì nó lại báo lỗi, nghĩa là nó chỉ sử dụng như cách của bạn còn cách sử dụng của tôi thì thua.
Mã:
        Dim ObjP As VnToolsExcel.Proc
        Set ObjP = New VnToolsExcel.Proc
        Set ObjP.ExcelApp = Application
            ObjP.ConvFont Selection, "VNI", False
        Set ObjP = Nothing

Cách xài With CreateObject("EncryptVBAProject.VBAProject")

Này hơi dài dòng ...nếu 1 vài Sub thì ok còn nhiều sub thì xài như sau cho nó Gon
Mã:
Public DLL As Object
Public Sub Auto_Open()
    Set DLL = CreateObject("TenDLL.TenClass")
    Set DLL.ExcelApp = Application
End Sub


Public Sub Auto_Close()
    Set DLL = Nothing
End Sub


Public Sub Main()
    Path = ThisWorkbook.Path
    DataRange = "A6:J100"
    DLL.TenHam Path, DataRange, [A65536]
End Sub
Hay như Sau khi Check Tools...
Mã:
Sub Main()
    FilePath = "C:\Windows\System32\xx.dll"
    With New TenDLL.TenClass
        .TenHam (FilePath)
    End With
End Sub
1/ Còn Bạn muốn thấy được các tham số của Hàm thì Check Tools\references\...VBA

bạn chỉ cần Gõ DLL. (chấm) là nó xổ ra một list Hàm

2/ Nếu trong Class Bạn Viết Private Thì khỏi thấy ...Còn Public thì thấy tham số của Hàm

3/ Bạn nên viết Hàm tổng quát nhất trong File *.dll thì từ Excel Bạn truyền các tham số vào là nó chạy

Viết vậy là vì các tham số mình tùy thích mà thay đổi trên Excel khi keo nó chạy ...VD như sub Main ở trên

Còn bạn viết chạy lỗi mình phải thấy code mới nói được ....

Từ từ nghiên cứu nha...đơn giản thôi mà cố gắng Vượt qua cái cơ Bản VB6 kết nối với Excel thì Bạn sẻ thấy Thường thôi...

Thân
 
Lần chỉnh sửa cuối:
Các bạn đã từng thấy các đoạn code của bác Hữu Thắng hay chưa? nếu chưa thì có thể tham khảo ở hình dưới.
View attachment 162845
Vô tình lên mạng mình tìm thấy một tiện ích có chức năng tương tự như trên, nhưng nó còn một hạn chế là sau khi chuyển thì một số nút lệnh trên sheet sẽ gãy liên kết (ta phải làm lại công việc tạo lại các liên kết macro), và một lỗi nửa là các hàm API nó cũng chưa chuyển đúng (Mình đã chỉnh sửa lại bằng cách loại trừ các hàm API, trong file mình có ghi chú nếu trong code của bạn có các hàm AIP thì bạn phải khai báo trước khi cho nó chuyển đổi), bạn nào sử dụng và nghiên cứu tiếp để hoàn thiện add-ins. Trước hết bạn hãy mở tiện ích lên (nhớ giải nén thư mục tải về có 2 file, 1 file tiện ích và một file text) sau đó mở tiếp file excel có chắc macro bạn muốn mã hóa lên và chọn lệnh Encrypt VBA Project, sau đó chọn yes, chọn đường dẫn và gõ tên file cần lưu sau khi mã hóa. Đợi nó thực hiện chút xong nháy OK. Bây giờ bạn nhấn Alt+F11 để xem kết quả (Nhớ là phải xem lại có nút lệnh nào trên sheet sử dụng đến code VBA bạn phải sửa lại hết, do nó chỉ chuyển code còn Liên kết đến code cho các nút lệnh trên sheet không được cập nhật)

Lục lại Hồ sơ Mạnh thấy thay vì Xài Hàm API sau ...
Mã:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

1/ Thì ta xài Cách khác vậy ....chỉ 1 dòng code là có thể xài cho Win64 hay 32 bít ... và Bạn Mã hóa vô Tư không lo lỗi ... Cũng Run As được vậy ....--=0

2/ Nếu xài Hàm trên muốn xài cho Win64 và 32 thì viết quá dài dòng và hay Lỗi ... Mục đích là cũng Run As mà thôi ....Vậy ý bạn sao ta nghiên cứu tiếp ....--=0

3/ Mình có tham khảo Cách Run As cmd ở rất nhiều diễn đàn ....

Thấy họ chỉ xài API không thôi ...còn cách khác chưa thấy ...
Nhưng trên GPE đã có người viết code ko xài API mà vẫn Run As được ...code đang có trên GPE và Mã hóa OK ...+-+-+-+
 
Lần chỉnh sửa cuối:
Lục lại Hồ sơ Mạnh thấy thay vì Xài Hàm API sau ...
Mã:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

1/ Thì ta xài Cách khác vậy ....chỉ 1 dòng code là có thể xài cho Win64 hay 32 bít ... và Bạn Mã hóa vô Tư không lo lỗi ... Cũng Run As được vậy ....--=0

2/ Nếu xài Hàm trên muốn xài cho Win64 và 32 thì viết quá dài dòng và hay Lỗi ... Mục đích là cũng Run As mà thôi ....Vậy ý bạn sao ta nghiên cứu tiếp ....--=0

3/ Mình có tham khảo Cách Run As cmd ở rất nhiều diễn đàn ....

Thấy họ chỉ xài API không thôi ...còn cách khác chưa thấy ...
Nhưng trên GPE đã có người viết code ko xài API mà vẫn Run As được ...code đang có trên GPE và Mã hóa OK ...+-+-+-+
Nếu có cách sử dụng hàm API sử dụng cho bản 32bit và 64bit ngắn thì ngon quá, cái tiện ích mã hóa này thật sự khi mình sử dụng mới thấy có nhiều cái chưa được lắm, nếu bác KieuManh có nghiên cứu thì hoàn chỉnh cho anh em sử dụng luôn. Một cách suy nghĩ nửa nhưng khả năng không làm được, không biết bác KieuManh có nghiên cứu thì nghiên cứu tiếp luôn(nếu có hứng thú), đó là mã hóa xong thì tạo ra luôn file txt để chứa mã đã mã hóa, sau có cần thì dùng cái file txt chứa mã đó để dịch ngược(phải viết ra cái tiện ích dùng để dịch mã) lại code có được không?
À sẳn cho hỏi luôn là cái bản XLSafe Pro bác đưa lên sao mình không sử dụng được, mã hóa ra không đúng cái file của mình, vã lại không sử dụng được luôn.
Bác KieuManh chia sẻ chổ màu đỏ đó đi.
 
Lần chỉnh sửa cuối:
Nếu có cách sử dụng hàm API sử dụng cho bản 32bit và 64bit ngắn thì ngon quá, cái tiện ích mã hóa này thật sự khi mình sử dụng mới thấy có nhiều cái chưa được lắm, nếu bác KieuManh có nghiên cứu thì hoàn chỉnh cho anh em sử dụng luôn. Một cách suy nghĩ nửa nhưng khả năng không làm được, không biết bác KieuManh có nghiên cứu thì nghiên cứu tiếp luôn(nếu có hứng thú), đó là mã hóa xong thì tạo ra luôn file txt để chứa mã đã mã hóa, sau có cần thì dùng cái file txt chứa mã đó để dịch ngược(phải viết ra cái tiện ích dùng để dịch mã) lại code có được không?
À sẳn cho hỏi luôn là cái bản XLSafe Pro bác đưa lên sao mình không sử dụng được, mã hóa ra không đúng cái file của mình, vã lại không sử dụng được luôn.
Bác KieuManh chia sẻ chổ màu đỏ đó đi.

về bản XLSafe Pro cơ chế tạo CDkey đó là nó lấy ID ổ C xong cộng trừ nhân chia Linh xong rồi tào ra 1 cái CDkey Bản quyền theo máy ...Mỗi một máy chỉ có 1 CDkey duy nhất ...và mỗi lần Setup lại nó lại tạo ra 1 CDkey mới ...Nhưng nó còn nhiều khuyết điểm vụ này lắm ....Mạnh cài vào chủ yếu nghiên cứu code của nước ngoài nó viết sao Thôi .........1 Hoặc 2 Ngày nữa Mạnh Viết cho 1 Cái ****** mà Xài mà khám phá thuật toán mã hóa và tạo CDkey của nó

Còn về code Mã hóa để viết dich ngược lại thì mình chưa có khả năng ...nhưng mình thấy nó hay hay đã cải tiến và chỉnh sửa lại Mã hóa đươc mọi loại file office .xls,xlsm, xlsb ....và ko sử dụng .xla nữa mà chạy 1 sub trên bất cử File nào có code là nó mã hóa xong...

có thể thay thế Hàm API ShellExecute .. = Hàm sau

Mã:
Public Const uvwxyzabbbcbdb = 271, w = 203, ii = 72, oo = "E", pp = 0, aa = "6", ss = 7897, hh = 7921, jj = 10, kk = 227, ooo = "H", ppp = 7, uuu = "1", yyy = "7", rrr = True, ii_i_l_i_l_i_l = 7909, l_i_l_i_l_i_l_l_l_i_l_l_l = 7917, l_i_i_i_l_l_i_i_l_i_i_l_i = 7875, l_l_i_i_i_l_l_l_i_l_l_i_i = 253, l_l_l_i_l_l_l_i_l_l_i_i_l_l = 259, l_i_i_ii_i_l_l_l = 242, l_i_i_i_i_i_i_l_i_i_i = "V", xxx = "", ttt = "A", l_l_i_l_i_i_l_i = 7853, l_i_i_i_i_i_i_i_l_i_i_l_i_i = 7845, l_l_i_l_l_i_l_l_l_i_i_i_l = 236, vvv = "K", qqq = "x", ee = """", _
kim_l = "/", k = 1, xx = "R", sss = 6, ggg = False, hhh = "?", kim_i = "k", jjj = 7901, kkk = 226, lll = 7889, zzz = 243, l_i_i_l_l_l = "'", l_l_i_i_l_l_i_l_l_i_i_i_l_l = 7879, v = "v", l_i_i_i_l_l_l_i_i_i_l_i_l_l = "f", l_l_l_i_l_l_i_l_l_i_i_l_i = 7863, l_i_l_i_l_i = 273, l_i_i_l_i_l_l_i_l_l_l_i_l = 224, c = 432, l_l_i_l_i_l_l_l_i_i_l = 7841, l_i_l_i_i_l_i_i_i_i_i_i_l_i = "B", ccc = 225, yy = " ", iii = 244, eee = "h", mm = "2", nn = "3", z = "w", bb = "W", rr = "\", vv = ":", _
dd = "j", sh3 = "b", ff = "O", gg = "m", ww = "y", m = "F", n = "g", b = "n", l = "t", d = "p", sh2 = "i", s = "r", a = "c", p = "S", ll = "e", www = "u", zz = "d", qq = "o", cc = "M", x = "s", uu = "a", j = "C", xy = ".", g = "D", f = "T", sh1 = "L", h = "_", tt = "l", l_l_l_i_i_l_l_i_i_i_i_i = "I"
'Open Run File Bat
Public Sub ebfbgbhbibjbkblbmbnb()
Dim obpbqbrbsbtbubvbwbxb
obpbqbrbsbtbubvbwbxb = ThisWorkbook.Path & rr & xx & ll & n & g & sh1 & sh1 & xy & sh3 & uu & l
'sPath = ThisWorkbook.Path & "\REGDLL.BAT"
CreateObject(p & eee & ll & tt & tt & xy & ttt & d & d & tt & sh2 & a & uu & l & sh2 & qq & b).shellexecute obpbqbrbsbtbubvbwbxb, xxx, xxx, s & www & b & uu & x, k
End Sub
Code này Mình Học theo cách viết của Hữu Thắng đó ....hahahaha
 

File đính kèm

Lần chỉnh sửa cuối:
Nhìn code bài 33 thấy gớm nhưng thật ra Mạnh viết thành 1 Hàm như sau cho Tiện sử dụng....Cơ bản là vậy ....tùy cách xài của Từng người

Open cmd vời Run As ....vấn đề còn lại tùy bạn truyền tham số vào keo nó làm cái gì cho Mình

Mã:
CreateObject("Shell.Application").ShellExecute "cmd.exe", 0, 0, "Runas", True

Chạy một ứng dụng khác với Run As
Mã:
Public Function OpenFileRunAs(ByVal strPath As String) As Boolean
    CreateObject("Shell.Application").ShellExecute strPath, "", "", "Runas", True
End Function


Public Sub Main_RunAdmin()
    Dim sPath As String
    sPath = ThisWorkbook.Path & "\REGDLL.BAT"
    OpenFileRunAs (sPath)
End Sub
đăng ký một File *dll hay OCX với Win

Mã:
Public Function RegisterRunAs(ByVal sPath As String) As Boolean
    CreateObject("Shell.Application").ShellExecute "cmd.exe", "/c Regsvr32 /s " & sPath, 0, "Runas", True
End Function


Public Sub Main_RegisterRunAs()
    Dim sPath As String
    sPath = "C:\Windows\System32\EncryptVBA.dll"
    RegisterRunAs (sPath)
End Sub

Và nhiều cách sử dụng nữa thùy theo như cầu của từng Người .....
 
Cách xài With CreateObject("EncryptVBAProject.VBAProject")

Này hơi dài dòng ...nếu 1 vài Sub thì ok còn nhiều sub thì xài như sau cho nó Gon
Mã:
Public DLL As Object
Public Sub Auto_Open()
    Set DLL = CreateObject("TenDLL.TenClass")
    Set DLL.ExcelApp = Application
End Sub


Public Sub Auto_Close()
    Set DLL = Nothing
End Sub


Public Sub Main()
    Path = ThisWorkbook.Path
    DataRange = "A6:J100"
    DLL.TenHam Path, DataRange, [A65536]
End Sub
Hay như Sau khi Check Tools...
Mã:
Sub Main()
    FilePath = "C:\Windows\System32\xx.dll"
    With New TenDLL.TenClass
        .TenHam (FilePath)
    End With
End Sub
1/ Còn Bạn muốn thấy được các tham số của Hàm thì Check Tools\references\...VBA

bạn chỉ cần Gõ DLL. (chấm) là nó xổ ra một list Hàm

2/ Nếu trong Class Bạn Viết Private Thì khỏi thấy ...Còn Public thì thấy tham số của Hàm

3/ Bạn nên viết Hàm tổng quát nhất trong File *.dll thì từ Excel Bạn truyền các tham số vào là nó chạy

Viết vậy là vì các tham số mình tùy thích mà thay đổi trên Excel khi keo nó chạy ...VD như sub Main ở trên

Còn bạn viết chạy lỗi mình phải thấy code mới nói được ....

Từ từ nghiên cứu nha...đơn giản thôi mà cố gắng Vượt qua cái cơ Bản VB6 kết nối với Excel thì Bạn sẻ thấy Thường thôi...

Thân
Xin lỗi anh cho em hỏi khi sử dụng Public Sub trong DLL thì nó có hiện ra cái bảng để chọn các sub. Còn khi sử dụng Public Function thì nó không hiện nhưng khi đánh lệnh trong vba thì nó vẫn chạy. !$@!!
 
Xin lỗi anh cho em hỏi khi sử dụng Public Sub trong DLL thì nó có hiện ra cái bảng để chọn các sub. Còn khi sử dụng Public Function thì nó không hiện nhưng khi đánh lệnh trong vba thì nó vẫn chạy. !$@!!
thì bạn muốn nó chạy thì nó chạy ...còn ko thì nó ko chạy

quan trọng là code trong file *,dll bạn viết sao
 
Tự em đang mò DLL. ý em là trong File DLL có các Public Sub
thì khi qua excel khai báo
Dim UDF As Congthuc.LienKetExcel
UDF.ShowMessageExcel
nó hiện cái bảng này
Congthuc.jpg
mà sao nó không hiện các Public Function nhỉ
 
bạn up code VB6 lên cho mình dòm 1 cái được không
Vang day anh, em copy code cua anh Nguyen Duy Tuan va Code trong lập trình DLL.

Mã:
Option Explicit 'Yêu c?u toàn b? bi?n ph?i khai báo

'************************************************* ************
'Khai báo bi?n Class (l?p) ? du?i
'************************************************* ************
'Ð?i tu?ng tham chi?u s? g?i ?ng d?ng Excel
Private mxlApp As Excel.Application 'oApp As Excel.Application
'
Public WithEvents WB As Excel.Workbook
'local variable(s) to hold property value(s)
Private mvarVung_bi_khoa As Excel.Range   'local copy
'************************************************* ************
'Ð?t thu?c tính c?a Class
'************************************************* ************
Public Property Set ExcelApp(ByRef xlApp As Excel.Application)
Set mxlApp = xlApp
End Property
Public Property Set Vung_bi_khoa(ByVal vData As Excel.Range)
    Set mvarVung_bi_khoa = vData
End Property
Public Property Get Vung_bi_khoa() As Excel.Range
    Set Vung_bi_khoa = mvarVung_bi_khoa
End Property
Private Sub Destroy()
    Set WB = Nothing
    Set mxlApp = Nothing
    MsgBox "Hen gap lai cac ban trong de tai khac", vbInformation, "Tac gia: Nguyen Duy Tuan - EMail: TuanKTCDCN@yahoo.com"
End Sub
'************************************************* ************
'T?o s? ki?n c?a Class sau khi k?t thúc công vi?c
'************************************************* ************
Private Sub Class_Terminate()
'Destroy
Set WB = Nothing
Set mxlApp = Nothing
End Sub
' Chay Dll tren Worb dang mo
Public Sub Create(ByRef ExcelApplication As Excel.Application, ByVal WorkbookName As Variant)
    If mxlApp Is Nothing Then
        Set mxlApp = New Excel.Application
        Set mxlApp = ExcelApplication
    End If
    If Not mxlApp Is Nothing And WorkbookName <> "" Then
        Set WB = mxlApp.Workbooks(WorkbookName)
    End If
If WB Is Nothing Then MsgBox "Khong the ket noi duoc voi DLL", vbCritical, "Loi tao DLL"
End Sub
'
Public Function TachHoTen(ByVal HoVaTen As String, Optional TachTen As Boolean = True) As String
Dim Pos_Right As Integer


If HoVaTen = "" Then GoTo EndFunc
HoVaTen = Trim(HoVaTen) 'Xoá khoa?ng tro^'ng hai bên cu?a "HoVaTen"
Pos_Right = InStrRev(HoVaTen, " ")
'Kie^?m tra ho+.p le^.
If Pos_Right = 0 Or Pos_Right - 1 < 0 Or Pos_Right + 1 > Len(HoVaTen) Then
    GoTo EndFunc:
End If


If TachTen Then
    TachHoTen = Mid(HoVaTen, Pos_Right + 1)
Else
    TachHoTen = Left(HoVaTen, Pos_Right - 1)
End If


EndFunc:
End Function
'************************************************* ************
'Các phuong th?c trong Class ho?t d?ng
'************************************************* ************
Public Sub ShowMessageExcel()
MsgBox "Hello World!", vbInformation
End Sub


Public Sub WriteMessageExcel()
mxlApp.ActiveCell.Value = "Hello World!"
End Sub

Không biết khai báo nhu vay đủ chưa

Recent.jpg
 
Lần chỉnh sửa cuối:
Vang day anh, em copy code cua anh Nguyen Duy Tuan va Code trong lập trình DLL.

Mã:
Option Explicit 'Yêu c?u toàn b? bi?n ph?i khai báo

'************************************************* ************
'Khai báo bi?n Class (l?p) ? du?i
'************************************************* ************
'Ð?i tu?ng tham chi?u s? g?i ?ng d?ng Excel
Private mxlApp As Excel.Application 'oApp As Excel.Application
'
Public WithEvents WB As Excel.Workbook
'local variable(s) to hold property value(s)
Private mvarVung_bi_khoa As Excel.Range   'local copy
'************************************************* ************
'Ð?t thu?c tính c?a Class
'************************************************* ************
Public Property Set ExcelApp(ByRef xlApp As Excel.Application)
Set mxlApp = xlApp
End Property
Public Property Set Vung_bi_khoa(ByVal vData As Excel.Range)
    Set mvarVung_bi_khoa = vData
End Property
Public Property Get Vung_bi_khoa() As Excel.Range
    Set Vung_bi_khoa = mvarVung_bi_khoa
End Property
Private Sub Destroy()
    Set WB = Nothing
    Set mxlApp = Nothing
    MsgBox "Hen gap lai cac ban trong de tai khac", vbInformation, "Tac gia: Nguyen Duy Tuan - EMail: TuanKTCDCN@yahoo.com"
End Sub
'************************************************* ************
'T?o s? ki?n c?a Class sau khi k?t thúc công vi?c
'************************************************* ************
Private Sub Class_Terminate()
'Destroy
Set WB = Nothing
Set mxlApp = Nothing
End Sub
' Chay Dll tren Worb dang mo
Public Sub Create(ByRef ExcelApplication As Excel.Application, ByVal WorkbookName As Variant)
    If mxlApp Is Nothing Then
        Set mxlApp = New Excel.Application
        Set mxlApp = ExcelApplication
    End If
    If Not mxlApp Is Nothing And WorkbookName <> "" Then
        Set WB = mxlApp.Workbooks(WorkbookName)
    End If
If WB Is Nothing Then MsgBox "Khong the ket noi duoc voi DLL", vbCritical, "Loi tao DLL"
End Sub
'
Public Function TachHoTen(ByVal HoVaTen As String, Optional TachTen As Boolean = True) As String
Dim Pos_Right As Integer


If HoVaTen = "" Then GoTo EndFunc
HoVaTen = Trim(HoVaTen) 'Xoá khoa?ng tro^'ng hai bên cu?a "HoVaTen"
Pos_Right = InStrRev(HoVaTen, " ")
'Kie^?m tra ho+.p le^.
If Pos_Right = 0 Or Pos_Right - 1 < 0 Or Pos_Right + 1 > Len(HoVaTen) Then
    GoTo EndFunc:
End If


If TachTen Then
    TachHoTen = Mid(HoVaTen, Pos_Right + 1)
Else
    TachHoTen = Left(HoVaTen, Pos_Right - 1)
End If


EndFunc:
End Function
'************************************************* ************
'Các phuong th?c trong Class ho?t d?ng
'************************************************* ************
Public Sub ShowMessageExcel()
MsgBox "Hello World!", vbInformation
End Sub


Public Sub WriteMessageExcel()
mxlApp.ActiveCell.Value = "Hello World!"
End Sub

Không biết khai báo nhu vay đủ chưa

View attachment 169286

Bạn Copy code đó ở đâu ...của ai thì tốt nhất hỏi người đó ....code két nó nhiều trường phái

Mình là một tay amater hay phá phách ko thể phán được ......ngộ nhỡ phán ẩu gặp đông xưởng hay Hòa thân thì Mình toi Mạng ...Mới sang nay mở mắt dính rồi hết Hồn..!$@!!

Cho mình cáo lỗi và xin rút lui vậy
 
Bạn Copy code đó ở đâu ...của ai thì tốt nhất hỏi người đó ....code két nó nhiều trường phái

Mình là một tay amater hay phá phách ko thể phán được ......ngộ nhỡ phán ẩu gặp đông xưởng hay Hòa thân thì Mình toi Mạng ...Mới sang nay mở mắt dính rồi hết Hồn..!$@!!

Cho mình cáo lỗi và xin rút lui vậy
Sẳn đây bác Kieumanh cho tôi ngoài lề chút nghe. Tôi viết DLL bằng VB6 theo gợi ý của bác thì chạy ngon lành trên Excel 32bit nhưng lại không sử dụng được trên excel 64bit (Trong DLL không hề sử dụng API và bất kỳ thư viện nào khác), bác có kinh nghiệm gì chia sẻ với, chứ cái dự án của mình sắp phá sản rồi (do viết VB6 cho excel 32bit, nhưng khi nhờ người khác test excel 64bit thì không sử dụng được, bản thân chưa test thử nhưng theo sự góp ý của người dùng thì nó báo lỗi ngay những lệnh có sử dụng hàm trong DLL).
 
Sẳn đây bác Kieumanh cho tôi ngoài lề chút nghe. Tôi viết DLL bằng VB6 theo gợi ý của bác thì chạy ngon lành trên Excel 32bit nhưng lại không sử dụng được trên excel 64bit (Trong DLL không hề sử dụng API và bất kỳ thư viện nào khác), bác có kinh nghiệm gì chia sẻ với, chứ cái dự án của mình sắp phá sản rồi (do viết VB6 cho excel 32bit, nhưng khi nhờ người khác test excel 64bit thì không sử dụng được, bản thân chưa test thử nhưng theo sự góp ý của người dùng thì nó báo lỗi ngay những lệnh có sử dụng hàm trong DLL).

Mình nghe nói khi Bạn Viết trên Office64 bạn check Thư viện Office64 thì chỉ chạy trên Office64 ...

Nếu muốn chạy trên 32 thì phải make lại File *dll trên 32 thì phải

Mình cũng ko có Office 64 nên ko biết ...chỉ mò rồi rút kinh nghiệm vậy

Còn viết xài cho 2 Office32 & 64 chạy Ok thì Mình chưa Thử nên không nói lên được điều gì hết

Tham Gia:

Bạn viết trên hai Phiên bản Office 32 & 64 xong Bạn Viết File Setup khi nó chạy Kiểm tra xem 32 hay 64 thì xuất File đó ra ...đó là ý tưởng nhưng khó là làm sao dung code Kiểm tra được Office32 hay 64 ...Nếu Biết dược thì đó là chuyện nhỏ

Chính vì vậy mà một số phần mềm nó có 2 bản 32 và 64...gì gì đó

Bạn thử xem

Lưu ý Nhỏ: Mạnh không học qua trường lớp nào về code két hết ...Tự học vì vậy có phát Biểu nào Nông dân ko lọt tai Mong các bạn vui lòng Next...Chào
 
Lần chỉnh sửa cuối:
Bạn Copy code đó ở đâu ...của ai thì tốt nhất hỏi người đó ....code két nó nhiều trường phái

Mình là một tay amater hay phá phách ko thể phán được ......ngộ nhỡ phán ẩu gặp đông xưởng hay Hòa thân thì Mình toi Mạng ...Mới sang nay mở mắt dính rồi hết Hồn..!$@!!

Cho mình cáo lỗi và xin rút lui vậy

sau một thời gian ngồi gõ gõ không biết gõ cái gì tự nhiên giải quyết được vấn đề !$@!!!$@!!**~**
 
To GiaiPhap

Mình mới tìm hiểu thì Office32 hay 64 nó lưu trong Registry Theo Hình Sau

1/ Vấn còn lại là viết 1 code check nó nếu là x86 thì = 32 ...

2/ 1 cái nữa là bạn phải xài 2 bản Office32 và 64 trên 2 máy xong Make 2 file *.dll của 2 bản đó

3/ Khó nè : làm sao bạn nhét được 2 bản *.dll 32 và 64 vào một File *.exe xong khi chạy nó sẻ kiểm tra nếu là là 32 thì xuất Bản 32 ra và ngược lại ....

Vậy là Ok đó

Link tham khảo them registry
http://stackoverflow.com/questions/2203980/detect-whether-office-is-32bit-or-64bit-via-the-registry

https://social.msdn.microsoft.com/F...-ms-office-2010-is-32-or-64-bit?forum=worddev
 

File đính kèm

  • Capture.jpg
    Capture.jpg
    12.3 KB · Đọc: 86
To GiaiPhap

Mình mới tìm hiểu thì Office32 hay 64 nó lưu trong Registry Theo Hình Sau

1/ Vấn còn lại là viết 1 code check nó nếu là x86 thì = 32 ...

2/ 1 cái nữa là bạn phải xài 2 bản Office32 và 64 trên 2 máy xong Make 2 file *.dll của 2 bản đó

3/ Khó nè : làm sao bạn nhét được 2 bản *.dll 32 và 64 vào một File *.exe xong khi chạy nó sẻ kiểm tra nếu là là 32 thì xuất Bản 32 ra và ngược lại ....
Cảm ơn bạn, ngày hôm qua đã tìm được cách để inno setup dò win 32bit hay 64bit để cài đặt DLL theo ý muốn (cách cũng tương tự như đường Link bác gửi ở trên). Nhưng còn lo việc tạo DLL trên Win 64bit đây, đêm nay cài lại Win 64bit và VB6 để test thử, lại mất ngủ một đêm nửa rồi --=0 --=0 --=0
 
Cảm ơn bạn, ngày hôm qua đã tìm được cách để inno setup dò win 32bit hay 64bit để cài đặt DLL theo ý muốn (cách cũng tương tự như đường Link bác gửi ở trên). Nhưng còn lo việc tạo DLL trên Win 64bit đây, đêm nay cài lại Win 64bit và VB6 để test thử, lại mất ngủ một đêm nửa rồi --=0 --=0 --=0
xài thêm một cái máy ảo ý ....Máy chính 32 máy Ảo 64 copy qua đó check lại một cái xong Make nó lại ...xong Copy cái *.dll là xong

Nếu nhà thàu giàu thì mua thêm con latop 64 nữa chơi cho phê ...--=0

Mạnh ngồi máy Tính từ 6h sang đến 12h đêm ko có cái giống gì là ko chơi ...hai máy lận ...vậy mới phê

nhiều hôm quay máy ngoài banh xong mở máy trong chơi ..30 phút sau ghost lại xong chơi tiếp ....nối mạng LAN test code
 
Lần chỉnh sửa cuối:
xài thêm một cái máy ảo ý ....Máy chính 32 máy Ảo 64 copy qua đó check lại một cái xong Make nó lại ...xong Copy cái *.dll là xong

Nếu nhà thàu giàu thì mua thêm con latop 64 nữa chơi cho phê ...--=0

Mạnh ngồi máy Tính từ 6h sang đến 12h đêm ko có cái giống gì là ko chơi ...hai máy lận ...vậy mới phê

nhiều hôm quay máy ngoài banh xong mở máy trong chơi ..30 phút sau ghost lại xong chơi tiếp ....nối mạng LAN test code
Mới ghost lại Win 8 64bit để test, quả thực không chạy được DLL đã tạo ra bằng VB6 trên Win 32bit, không biết tính sao đây, đang cài VB6 để làm lại trên Win 64bit thử thế nào chắc thua thiệt quá.
 
Lỗi không Tạo được DLL trên Win 8 64. em mới test nè huhu

Sao Make EXE nó chạy bình thường nhỉ
exe.jpg
 
Lần chỉnh sửa cuối:
PHP:
To GiaiPhap

Mình mới tìm hiểu thì Office32 hay 64 nó lưu trong Registry Theo Hình Sau

1/ Vấn còn lại là viết 1 code check nó nếu là x86 thì = 32 ...

2/ 1 cái nữa là bạn phải xài 2 bản Office32 và 64 trên 2 máy xong Make 2 file *.dll của 2 bản đó

3/ Khó nè : làm sao bạn nhét được 2 bản *.dll 32 và 64 vào một File *.exe xong khi chạy nó sẻ kiểm tra nếu là là 32 thì xuất Bản 32 ra và ngược lại ....

Vậy là Ok đó

Anh Kiều Mạnh giải quyết được vấn đề này chưa anh ?
 
Lần chỉnh sửa cuối:
Sau 2 ngày Nghiên cứu Code Add-Ins mã hóa Bạn úp ....Mạnh mới chỉnh sửa và viết lại thành 1 File setup = VB6
Thật chứ? Có lẽ sửa hơi bị ít.
Hãy tạo tập tin mới và thêm UserForm1 -> đặt CommandButton1 trên Form -> toàn bộ code trong UserForm1 - chả để làm gì, mục đích chỉ để test thôi.
Mã:
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer

Private Const hic = "hichic": Private Const KEYEVENTF_KEYUP = 25: Private p As Boolean, q

Private Sub CommandButton1_Click()
On Error Resume Next
Dim c, d, e, g, h, k, m, n
    g = True
    c = CBool(GetKeyState(vbKeyNumlock))
    Debug.Print c
    Application.SendKeys IIf(c, d, e)
    If c <> g Then
        keybd_event h, k, m, n
        keybd_event h, k, KEYEVENTF_KEYUP, n
    End If
End Sub

Tiếp theo chạy Form rồi nhấn CommandButton1. Chả có lỗi gì cả.

Tiếp theo chạy menu của bạn và chạy tập tin vừa được mã, sau đó nhấn CommandButton1. Chắc chắn sẽ có lỗi.

Xem code thì thấy
Mã:
Private Type l_i_i_i_l_l_1_1_l_1_1_1
left As Long
top As Long
right As Long
bottom As Long
End Type
Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer
Private Const l_i_i_i_l_1_1_l_1_l_1_1 = "hichic": Private Const keyeventf_keyup = 25: Private l_i_i_i_l_1_1_l_1_1_l_1 As Boolean, q
Private Sub commandbutton1_click()
On Error Resume Next
Dim l_i_i_i_l_1_1_l_1_1_1_l, d, e, g, h, k, m, n
g = True
l_i_i_i_l_1_1_l_1_1_1_l = CBool(l_i_i_i_l_1_l_1_1_1_1_l(vbKeyNumlock))
Debug.Print l_i_i_i_l_1_1_l_1_1_1_l
Application.SendKeys IIf(l_i_i_i_l_1_1_l_1_1_1_l, d, e)
If l_i_i_i_l_1_1_l_1_1_1_l <> g Then
l_i_i_i_l_l_1_1_1_1_1_l h, k, m, n
l_i_i_i_l_l_1_1_1_1_1_l h, k, keyeventf_keyup, n
End If
End Sub

Tức làm gì còn type RECT nên khai báo hàm GetWindowRect bị lỗi. Lưu ý là type khong nhất thiết của API. Ta có thể tự có "Private Type EMAILFIELDS ..."

Bây giờ xóa type và khai báo GetWindowRect. Chạy Form rồi sau đó nhấn CommandButton1. Chắc chắn có lỗi do tên các hàm API bị mất. Làm sao có thể gọi hàm l_i_i_i_l_1_l_1_1_l_1_1 được.

Ngoài ra các biến sau không được mã hóa: q, d, e, g, h, k, m, n
--------------
Bây giờ thử mã hóa tập tin "Input From List.xls" của huuthang_bd. Tất nhiên các tên đã được mã hóa nhưng cứ coi đó là tên chưa mã, chỉ là người ta tự gõ tự đặt tên như thế. Chắc chắn không mã hóa được vì nửa đường bị lỗi.

Sửa lại quá ít chăng?
 
Tôi thử thấy đúng là như vậy, có lẽ 2 ngày nghiên cứu là hơi ít.
kieu manh nâng cấp phần mềm nhé --=0
 

File đính kèm

Thật chứ? Có lẽ sửa hơi bị ít.
Hãy tạo tập tin mới và thêm UserForm1 -> đặt CommandButton1 trên Form -> toàn bộ code trong UserForm1 - chả để làm gì, mục đích chỉ để test thôi.
Mã:
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer

Private Const hic = "hichic": Private Const KEYEVENTF_KEYUP = 25: Private p As Boolean, q

Private Sub CommandButton1_Click()
On Error Resume Next
Dim c, d, e, g, h, k, m, n
    g = True
    c = CBool(GetKeyState(vbKeyNumlock))
    Debug.Print c
    Application.SendKeys IIf(c, d, e)
    If c <> g Then
        keybd_event h, k, m, n
        keybd_event h, k, KEYEVENTF_KEYUP, n
    End If
End Sub

Tiếp theo chạy Form rồi nhấn CommandButton1. Chả có lỗi gì cả.

Tiếp theo chạy menu của bạn và chạy tập tin vừa được mã, sau đó nhấn CommandButton1. Chắc chắn sẽ có lỗi.

Xem code thì thấy
Mã:
Private Type l_i_i_i_l_l_1_1_l_1_1_1
left As Long
top As Long
right As Long
bottom As Long
End Type
Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer
Private Const l_i_i_i_l_1_1_l_1_l_1_1 = "hichic": Private Const keyeventf_keyup = 25: Private l_i_i_i_l_1_1_l_1_1_l_1 As Boolean, q
Private Sub commandbutton1_click()
On Error Resume Next
Dim l_i_i_i_l_1_1_l_1_1_1_l, d, e, g, h, k, m, n
g = True
l_i_i_i_l_1_1_l_1_1_1_l = CBool(l_i_i_i_l_1_l_1_1_1_1_l(vbKeyNumlock))
Debug.Print l_i_i_i_l_1_1_l_1_1_1_l
Application.SendKeys IIf(l_i_i_i_l_1_1_l_1_1_1_l, d, e)
If l_i_i_i_l_1_1_l_1_1_1_l <> g Then
l_i_i_i_l_l_1_1_1_1_1_l h, k, m, n
l_i_i_i_l_l_1_1_1_1_1_l h, k, keyeventf_keyup, n
End If
End Sub

Tức làm gì còn type RECT nên khai báo hàm GetWindowRect bị lỗi. Lưu ý là type khong nhất thiết của API. Ta có thể tự có "Private Type EMAILFIELDS ..."

Bây giờ xóa type và khai báo GetWindowRect. Chạy Form rồi sau đó nhấn CommandButton1. Chắc chắn có lỗi do tên các hàm API bị mất. Làm sao có thể gọi hàm l_i_i_i_l_1_l_1_1_l_1_1 được.

Ngoài ra các biến sau không được mã hóa: q, d, e, g, h, k, m, n
--------------
Bây giờ thử mã hóa tập tin "Input From List.xls" của huuthang_bd. Tất nhiên các tên đã được mã hóa nhưng cứ coi đó là tên chưa mã, chỉ là người ta tự gõ tự đặt tên như thế. Chắc chắn không mã hóa được vì nửa đường bị lỗi.

Sửa lại quá ít chăng?

Còn lỗi nhiều lắm đó Anh ...thấy code đó nó toàn có Hàm kết nối với nhau...coi nhức đầu quá ....Em làm biếng lâu nay ngại coi lại
có những khúc code nó mã hóa sai ...nó nhầm lẫn cái nọ với cái kia ...Nên nó ko hiểu hết ....quậy nhiều mới thấy hết ...--=0
Cảm ơn Anh
 
Lần chỉnh sửa cuối:
Em mới thử làm vài cái nó cũng ra giống như Anh... xem ra cái này cũng không Vui lắm ...
làm thủ công cũng được mà...có điều rất công phu và mắt phải sáng để dòm ....hahahahaha
code Mã hóa
Mã:
Public Function ldt1(ldt2 As Variant) As Variant
    Dim ldt3 As Variant, ldt4 As Long, ldt5 As Long
    ReDim ldt3(UBound(ldt2, 2), UBound(ldt2, 1))
    For ldt4 = 0 To UBound(ldt2, 2)
        For ldt5 = 0 To UBound(ldt2, 1)
            ldt3(ldt4, ldt5) = ldt2(ldt5, ldt4)
        Next ldt5
    Next ldt4
    ldt1 = ldt3
End Function
Tương tự như code dưới
Mã:
Public Function l_i_i_i_l_l_1_l_1_1_1_1(l_i_i_i_l_l_1_1_l_1_1_1 As Variant) As Variant
Dim l_i_i_i_l_l_1_1_1_l_1_1 As Variant, l_i_i_i_l_l_1_1_1_1_l_1 As Long, l_i_i_i_l_l_1_1_1_1_1_l As Long
ReDim l_i_i_i_l_l_1_1_1_l_1_1(UBound(l_i_i_i_l_l_1_1_l_1_1_1, 2), UBound(l_i_i_i_l_l_1_1_l_1_1_1, 1))
For l_i_i_i_l_l_1_1_1_1_l_1 = 0 To UBound(l_i_i_i_l_l_1_1_l_1_1_1, 2)
For l_i_i_i_l_l_1_1_1_1_1_l = 0 To UBound(l_i_i_i_l_l_1_1_l_1_1_1, 1)
l_i_i_i_l_l_1_1_1_l_1_1(l_i_i_i_l_l_1_1_1_1_l_1, l_i_i_i_l_l_1_1_1_1_1_l) = l_i_i_i_l_l_1_1_l_1_1_1(l_i_i_i_l_l_1_1_1_1_1_l, l_i_i_i_l_l_1_1_1_1_l_1)
Next l_i_i_i_l_l_1_1_1_1_1_l
Next l_i_i_i_l_l_1_1_1_1_l_1
l_i_i_i_l_l_1_l_1_1_1_1 = l_i_i_i_l_l_1_1_1_l_1_1
End Function
Mình thấy hay dọc thử, giờ nó mã hóa File gốc của mình rồi. Mình muốn chuyển lại công thức như củ được không
 
Các bạn đã từng thấy các đoạn code của bác Hữu Thắng hay chưa? nếu chưa thì có thể tham khảo ở hình dưới.
View attachment 162845
Vô tình lên mạng mình tìm thấy một tiện ích có chức năng tương tự như trên, nhưng nó còn một hạn chế là sau khi chuyển thì một số nút lệnh trên sheet sẽ gãy liên kết (ta phải làm lại công việc tạo lại các liên kết macro), và một lỗi nửa là các hàm API nó cũng chưa chuyển đúng (Mình đã chỉnh sửa lại bằng cách loại trừ các hàm API, trong file mình có ghi chú nếu trong code của bạn có các hàm AIP thì bạn phải khai báo trước khi cho nó chuyển đổi), bạn nào sử dụng và nghiên cứu tiếp để hoàn thiện add-ins. Trước hết bạn hãy mở tiện ích lên (nhớ giải nén thư mục tải về có 2 file, 1 file tiện ích và một file text) sau đó mở tiếp file excel có chắc macro bạn muốn mã hóa lên và chọn lệnh Encrypt VBA Project, sau đó chọn yes, chọn đường dẫn và gõ tên file cần lưu sau khi mã hóa. Đợi nó thực hiện chút xong nháy OK. Bây giờ bạn nhấn Alt+F11 để xem kết quả (Nhớ là phải xem lại có nút lệnh nào trên sheet sử dụng đến code VBA bạn phải sửa lại hết, do nó chỉ chuyển code còn Liên kết đến code cho các nút lệnh trên sheet không được cập nhật)

Hình như cái này không xài được nữa...
Nó báo lỗi #52
 
Sau 2 ngày Nghiên cứu Code Add-Ins mã hóa Bạn úp ....Mạnh mới chỉnh sửa và viết lại thành 1 File setup = VB6 Bạn tải về Test thử nha ....Viết Add-ins trên VB6 quá đơn giản mà ....Bảo mật code OK

1/ không phải dùng 1 phần mền của hãng khác Make nó lại thành file Setup ...mà mình làm trên VB6 từ A ...Z

2/ Không phải cài Vào Program nên không phải lo Rác hệ thống khi ko thích xài nữa vào Add-ins xóa nó đi là xong

3/ Mọi cái tự động hết chỉ 1 cái chuột và chọn Yes ( Nếu UAC ON)

4/ Bạn test thử và cho ý kiến chi tiết nha....

5/ Pass VBA Add-Ins là: 123

6/ Bạn nào Rảnh Mạnh nhờ Check dùm...

Xin cảm ơn
muốn mã hóa code VBA viết trong Word thì làm thế nào vậy Bác?
 
Các bạn đã từng thấy các đoạn code của bác Hữu Thắng hay chưa? nếu chưa thì có thể tham khảo ở hình dưới.
View attachment 162845
Vô tình lên mạng mình tìm thấy một tiện ích có chức năng tương tự như trên, nhưng nó còn một hạn chế là sau khi chuyển thì một số nút lệnh trên sheet sẽ gãy liên kết (ta phải làm lại công việc tạo lại các liên kết macro), và một lỗi nửa là các hàm API nó cũng chưa chuyển đúng (Mình đã chỉnh sửa lại bằng cách loại trừ các hàm API, trong file mình có ghi chú nếu trong code của bạn có các hàm AIP thì bạn phải khai báo trước khi cho nó chuyển đổi), bạn nào sử dụng và nghiên cứu tiếp để hoàn thiện add-ins. Trước hết bạn hãy mở tiện ích lên (nhớ giải nén thư mục tải về có 2 file, 1 file tiện ích và một file text) sau đó mở tiếp file excel có chắc macro bạn muốn mã hóa lên và chọn lệnh Encrypt VBA Project, sau đó chọn yes, chọn đường dẫn và gõ tên file cần lưu sau khi mã hóa. Đợi nó thực hiện chút xong nháy OK. Bây giờ bạn nhấn Alt+F11 để xem kết quả (Nhớ là phải xem lại có nút lệnh nào trên sheet sử dụng đến code VBA bạn phải sửa lại hết, do nó chỉ chuyển code còn Liên kết đến code cho các nút lệnh trên sheet không được cập nhật)

VBA bên Word 2016 thì mã hóa thế nào vậy bạn? có thể hướng dẫn mình được không?
 
Sau 2 ngày Nghiên cứu Code Add-Ins mã hóa Bạn úp ....Mạnh mới chỉnh sửa và viết lại thành 1 File setup = VB6 Bạn tải về Test thử nha ....Viết Add-ins trên VB6 quá đơn giản mà ....Bảo mật code OK

1/ không phải dùng 1 phần mền của hãng khác Make nó lại thành file Setup ...mà mình làm trên VB6 từ A ...Z

2/ Không phải cài Vào Program nên không phải lo Rác hệ thống khi ko thích xài nữa vào Add-ins xóa nó đi là xong

3/ Mọi cái tự động hết chỉ 1 cái chuột và chọn Yes ( Nếu UAC ON)

4/ Bạn test thử và cho ý kiến chi tiết nha....

5/ Pass VBA Add-Ins là: 123

6/ Bạn nào Rảnh Mạnh nhờ Check dùm...

Xin cảm ơn
Anh kieu manh ơi!
Cho em hỏi là em có thử cái file của anh về chạy phát cái là giờ mở file vba nào lên cũng hiện ra 1 cái excel ẩn chứa code của anh, giờ làm sao ạ
 
Sau 2 ngày Nghiên cứu Code Add-Ins mã hóa Bạn úp ....Mạnh mới chỉnh sửa và viết lại thành 1 File setup = VB6 Bạn tải về Test thử nha ....Viết Add-ins trên VB6 quá đơn giản mà ....Bảo mật code OK

1/ không phải dùng 1 phần mền của hãng khác Make nó lại thành file Setup ...mà mình làm trên VB6 từ A ...Z

2/ Không phải cài Vào Program nên không phải lo Rác hệ thống khi ko thích xài nữa vào Add-ins xóa nó đi là xong

3/ Mọi cái tự động hết chỉ 1 cái chuột và chọn Yes ( Nếu UAC ON)

4/ Bạn test thử và cho ý kiến chi tiết nha....

5/ Pass VBA Add-Ins là: 123

6/ Bạn nào Rảnh Mạnh nhờ Check dùm...

Xin cảm ơn
Anh ơi sao máy em k chạy được, em đã chuyển về .xls rồi, em đã khởi động lại máy rồi ạ!Máy em 64bit, nó báo "runtime error 429"
 
haiza lâu lắm rồi ko coi nữa ... mà nó chỉ chạy trên 32 bít thôi

bạn nên bớt chút thời gian học Delphi Viết DLL đi hay cái Tools chi đó tùy theo sở thích và khả năng của bạn

Còn cái mã hóa code đó trên GPE này đầy người vẫn coi bình thường có điều dò coi được nó công phu lắm và mắt mờ đấy .... và có đáng để coi hay ko ???!!!
 
haiza lâu lắm rồi ko coi nữa ... mà nó chỉ chạy trên 32 bít thôi

bạn nên bớt chút thời gian học Delphi Viết DLL đi hay cái Tools chi đó tùy theo sở thích và khả năng của bạn

Còn cái mã hóa code đó trên GPE này đầy người vẫn coi bình thường có điều dò coi được nó công phu lắm và mắt mờ đấy .... và có đáng để coi hay ko ???!!!
Em chào Anh ạ,
Em file excel vba mã hóa code rồi,em nhờ anh hỗ trợ có cách nào giải mã đc không ạ,em xin chân thành cám ơn.
 
Em xin chào Anh/Chị thành viên nhóm ạ,
Em đoạn code vba mã hóa,em muốn giải mã code nhờ Anh/Chị hỗ trợ em ạ,Ib em gửi code qua,em gửi chi phí lại anh/chị/

Em xin chân thành cám ơn.
 

Bài viết mới nhất

Back
Top Bottom