Giúp chuyển CODE vba sang Dll (1 người xem)

Liên hệ QC

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

Covid19pro

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
21/12/20
Bài viết
6
Được thích
2
Chào mọi người . CHo mình hỏi phương thức viết code như code bên dưới là dùng cách nào. Xuất tất cả VBA qua DLL sau đó trong VBA gọi lại các code trong Dll. Mình cần viết như thế này cho mình hỏi phải dùng VBA hay C++ hay dùng 1 tool gì . Do mình có code VBA sẳng giờ phải dùng cách nào để chuyển qua dạng này nhanh nhất. XIn chân thành cảm ơn


#If Win64 = False Then
Private Declare Sub a54dsg5r4grey4 Lib "abc_xlsb_32.dll" Alias "k1je7an9i1cgezw@0" ()
Private Declare Sub grgrseges4ghresyh4 Lib "abc_xlsb_32.dll" Alias "w3pja8q9m9es3@0" ()
#Else
Private Declare PtrSafe Sub a54dsg5r4grey4 Lib "abc_xlsb_32.dll" Alias "k1je7an9i1cgezw" ()
Private Declare PtrSafe Sub grgrseges4ghresyh4 Lib "abc_xlsb_32.dll" Alias "w3pja8q9m9es3" ()
#End If

Option Explicit
Sub test1()
a54dsg5r4grey4
End Sub

Sub Test2()
grgrseges4ghresyh4
End Sub
 
Để tạo dll thì bạn phải lập trình bằng ngôn ngữ khác. Còn đoạn code trên đã được làm rối.

Tôi lúc trước cũng phát triển một công cụ có tính năng làm rối code VBA. Tôi xin đưa một ví dụ:
PHP:
Function Message(tit, msg)
    MessageForm.MessageLabel = msg
    MessageForm.Caption = tit
    MessageForm.Show
    Message = MessageReturn
End Function

Sub InsertRow()
    Dim endRow
    Application.EnableEvents = False
    ActiveSheet.Unprotect ActiveSheet.name
    Application.CutCopyMode = False
    Application.ScreenUpdating = False
    endRow = Range("TOTAL").Row - 1
    Rows(endRow & ":" & endRow).Select
    Rows(endRow & ":" & endRow).Copy
    Rows(endRow & ":" & endRow).Insert
    Range("E" & endRow + 1).Activate
    Range("E" & endRow + 1).ClearContents
    Range("G" & endRow + 1).ClearContents
    endRow = Range("B7").End(xlDown).Row
    If endRow > 8 Then
        Range("B9").Value = 2
        If endRow > 9 Then Range("B8:B9").AutoFill Destination:=Range("B8:B" & endRow)
    End If

    Printed = False
    ActiveSheet.Protect ActiveSheet.name
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub
Kết quả sau khi được làm rối:
PHP:
: Const ebdcffb = False: Const ebdcffd = "E": Const ebdcffc = "7": Const ebdcfff = -889
Const ebdcfbee = "B8:B": Const ebdcfbeb = "9": Const ebdcfbed = "TO": Const ebdcfbec = "TAL": Const ebdcfbef = 1: Const ebdcfbbe = ":": Const ebdcfbbb = "G": Const ebdcfbbd = "B9": Const ebdcfbbc = -702: Const ebdcfbbf = 264: Const ebdcfbde = "B": Const ebdcfbdb = -100: Const ebdcfbdd = 108: Const ebdcfbdc = 190: Const ebdcfbdf = 514: Const ebdcfbce = 634: Const ebdcfbcb = True
Function ebdcfbcf(ebdcfbcc, ebdcfbcd): MessageForm.MessageLabel = ebdcfbcd: MessageForm.Caption = ebdcfbcc: MessageForm.Show: ebdcfbcf = MessageReturn: End Function
Sub ebdcfbfe(): Dim ebdcfbfb: Application.EnableEvents = ebdcffb: ActiveSheet.Unprotect ActiveSheet.name: Application.CutCopyMode = ebdcffb: Application.ScreenUpdating = ebdcffb: ebdcfbfb = Range(ebdcfbed & ebdcfbec).Row - ebdcfbef: Rows(ebdcfbfb & ebdcfbbe & ebdcfbfb).Select: Rows(ebdcfbfb & ebdcfbbe & ebdcfbfb).Copy: Rows(ebdcfbfb & ebdcfbbe & ebdcfbfb).Insert: Range(ebdcffd & ebdcfbfb + ebdcfbef).Activate: Range(ebdcffd & ebdcfbfb + ebdcfbef).ClearContents: Range(ebdcfbbb & ebdcfbfb + ebdcfbef).ClearContents: ebdcfbfb = Range(ebdcfbde & ebdcffc).End(xlDown).Row
If ebdcfbfb > (ebdcfbdb + ebdcfbdd) Then
Range(ebdcfbbd).Value = (ebdcfbbc + ebdcfbdc + ebdcfbdf)
If ebdcfbfb > (ebdcfff + ebdcfbce + ebdcfbbf) Then Range(ebdcfbee & ebdcfbeb).AutoFill Destination:=Range(ebdcfbee & ebdcfbfb)
End If: Printed = ebdcffb: ActiveSheet.Protect ActiveSheet.name: Application.CutCopyMode = ebdcffb: Application.ScreenUpdating = ebdcfbcb: Application.EnableEvents = ebdcfbcb: End Sub
Công cụ này dựa trên ít ỏi kiến thức VBA mò mẫm khoảng gần 20 năm trước của tôi nên khá nhiều từ khóa, câu lệnh thường được dùng trong code VBA hiện tại không hỗ trợ. Chẳng hạn như tính năng làm rối chuỗi ký tự bắt nhầm chuỗi sau Alias "k1je7an9i1cgezw@0" vì không phát hiện ra từ khóa Alias (tôi vừa phải điều chỉnh).

Hiện tại công cụ làm rối của tôi không hỗ trợ code class module cũng như một số câu lệnh mới và thường
phải có vài thao tác thủ công để đồng bộ code VBA hoạt động nên tôi không có ý định phổ biến công cụ này (các bác xài hổng được lại mỉa mai, chê bai tôi thì nhục --=0).
 
Lần chỉnh sửa cuối:
Upvote 0
C++ có luật viết hàm chồng, tức là hàm trùng tên và khác chữ ký (*). Complier sẽ dùng kỹ thuật "name mangling" để phân biệt các các hàm chồng này.
Khi build thành dll thì những hàm chồng sẽ cho ra một bảng tên hàm đã mangled.

Mấy cái tên hàm quái đản trong bài #1 có vẻ giống tên hàm của C++ đã mangled.

(*) chữ ký (signature) của một hàm là cách thức nạp tham số của nó.
 
Upvote 0
Mấy cái tên hàm quái đản trong bài #1 có vẻ giống tên hàm của C++ đã mangled
Tên đó là bảo mật phiên bản 1 anh ơi.
Mấy dự án khủng sau khi tét trong phòng thí nghiệm 6 tháng một năm... nay tới lúc bàn giao lãnh tiền thì mới ngã ngửa cần bảo mật hơn. @@
 
Upvote 0
Thớt chỉ muốn hỏi vấn đề chốt hạ: cách nào nhanh nhất?
Trả lời: cách nhanh nhất là đưa hết code lên diễn đàn nhờ người chuyển sang Dll hộ. Mình chỉ việc ngồi xe xê rờ vê tét kỷ lại rồi hễ đúng 100% mình mới tính công
 
Upvote 0
Thớt chỉ muốn hỏi vấn đề chốt hạ: cách nào nhanh nhất?
Trả lời: cách nhanh nhất là đưa hết code lên diễn đàn nhờ người chuyển sang Dll hộ. Mình chỉ việc ngồi xe xê rờ vê tét kỷ lại rồi hễ đúng 100% mình mới tính công
Code 10 năm sau mới có người hiểu nổi để chuyển. Hiện tại thì chỉ bơ mỏ thôi.
 
Upvote 0
Code người ta đưa ra không phải là code cần đưa vào DLL. Đó là (hàm ý là vậy) code tối thiểu để gọi hàm trong thư viện DLL. Còn code cần đưa vào DLL làm gì đã có.
 
Upvote 0
Có vài IDE giúp bạn tạo DLL để khai báo hàm trong dll đó dùng ở môi trường lập trình khác. Điển hình là Visual C/C++ , Delphi.
Nếu bạn muốn dùng Delphi thì theo dõi loạt bài hưỡng dẫn cơ bản của tôi về Delphi
 
Upvote 0
Chào mọi người . CHo mình hỏi phương thức viết code như code bên dưới là dùng cách nào. Xuất tất cả VBA qua DLL sau đó trong VBA gọi lại các code trong Dll. Mình cần viết như thế này cho mình hỏi phải dùng VBA hay C++ hay dùng 1 tool gì . Do mình có code VBA sẳng giờ phải dùng cách nào để chuyển qua dạng này nhanh nhất. XIn chân thành cảm ơn


#If Win64 = False Then
Private Declare Sub a54dsg5r4grey4 Lib "abc_xlsb_32.dll" Alias "k1je7an9i1cgezw@0" ()
Private Declare Sub grgrseges4ghresyh4 Lib "abc_xlsb_32.dll" Alias "w3pja8q9m9es3@0" ()
#Else
Private Declare PtrSafe Sub a54dsg5r4grey4 Lib "abc_xlsb_32.dll" Alias "k1je7an9i1cgezw" ()
Private Declare PtrSafe Sub grgrseges4ghresyh4 Lib "abc_xlsb_32.dll" Alias "w3pja8q9m9es3" ()
#End If

Option Explicit
Sub test1()
a54dsg5r4grey4
End Sub

Sub Test2()
grgrseges4ghresyh4
End Sub
Đó là cách
Viết DLL bằng một ngôn ngữ lập trình khác như VB, C++, C, ...vv
Rồi gọi DLL bằng VBA thôi, VBA không tự tạo DLL được
 
Upvote 0
...
Mấy dự án khủng sau khi tét trong phòng thí nghiệm 6 tháng một năm... nay tới lúc bàn giao lãnh tiền thì mới ngã ngửa cần bảo mật hơn. @@
Bảo mật thì dữ liệu chứ code bảo mật chi vậy?
Trong mấy chục năm nghề, tôi chưa hề phải bảo mật code dự án nào cả.
 
Upvote 0
Bảo mật thì dữ liệu chứ code bảo mật chi vậy?
Trong mấy chục năm nghề, tôi chưa hề phải bảo mật code dự án nào cả.
Ở GPE này mọi người dùng khái niệm bảo mật khác với những gì khái niệm bảo mật trong IT.
Nhất là VBA là mã mở lại đi lo bảo vệ - phản lại cái ý nghĩa chính của VBA
 
Upvote 0
Về dự án khủng:
Theo thôi thấy thì với dự án khủng người ta lo bảo vệ thiết kế, chống "reverse engineering" (*) chứ chống đọc code thì nhằm nhòi gì.

(*) cách dễ nhất là người ta chèn thêm vào đồ án một mớ công việc "giả". Tức là công việc không cần thiết. Người ăn cắp sẽ bị bẫy. Lúc cần kiện cáo thì đưa những chỗ này ra. (nếu không phải hàng ăn cắp thì không thể nào có những chỗ "giả" trùng hợp như vậy)
 
Upvote 0
Bảo mật thì dữ liệu chứ code bảo mật chi vậy?
Trong mấy chục năm nghề, tôi chưa hề phải bảo mật code dự án nào cả.
Then chốt ở chỗ tạo ra cái khóa đó anh.
Có mấy vụ trên diễn đàn hỏi về giới hạn thời gian sử dụng, cấp quyền theo thông tin phần cứng. Code được phần đó rồi, nhưng phải tìm cách ngăn 'người ta' không can thiệp được vào nên mới có vụ bảo mật này. :p
 
Upvote 0
1/ cách dễ nhất mà gần như viết trên VBA vậy là viết DLL trên VB6 ... viết 1 thư viện hàm thật chuẩn xong cứ thế từ VBA mà call nó là xong
thế nhưng họ cứ chê VB6 là thứ đồ cổ

2/ VB6 hiện tại vẫn viết DLL sử dụng tốt cho tất cả các bản Office từ x32 và x64 từ Office 2003 to Office 365 đấy

3/ trên thế giới tôi có tham gia mấy diễn đàn như ở mỹ và Anh thì họ vẫn xài VB6 đấy... họ vẫn nổ lực làm mọi cái trên VB6 hoặc dựa vào nó mà phát triển thêm VD như link sau
TwinBasic Welcome

4/ nếu chịu khó 1 chút xem 1 loạt video của bài số 9 hay các bài trên GPE này thì viết trên Delphi là ok đấy ... khi mới bắt đầu rất khó vậy nên cố giắng vượt qua cái ngưỡng ban đầu là viết ok ... nhìn code diết thấy nó cũng rất gần gũi như VB vậy

5/ C++ quá khó luôn... hơn 1 năm nay lâu lâu tôi vẫn cố xem code c++ để hình dung ra nó như thế nào mà học biết đâu 1 ngày nào đó lại ngộ ra nó vì thấy trên Delphi có hổ trợ build c++ nên cũng ham mà kết cục vẫn = số o To đùng

...
thôi rảnh viết tiếp ... mệt ròi -0-0-0-
 
Upvote 0
Nếu ai lười quá chả thèm qua tâm các hàm trong dll viết kiểu gì thì họ xài luôn dll thì sao nhỉ? Chẳng hạn lib.dll chứa các hàm connect(), delete()..., dựa vào đoạn mã tham khảo, họ đem sử dụng connect(), delete()... cho các chương trình của họ. Lại nảy sinh yêu cầu chỉ có cấp phép mới dùng được các dll này? Trong khi đó nếu làm rối code (hoặc đẳng cấp hơn như nhiều anh là mã hóa code) thì các anh chôm code sẽ phải đánh vật với mớ hỗn độn để hiểu ra logic dòng lệnh để mà khai thác.
 
Upvote 0
Theo mình nghĩ thì ông nào hiểu biết về code thì chẳng bao giờ đi chôm code. Code tự viết đôi khi còn không hiểu mình viết cái quái gì nữa huống chi là code của người khác. Bảo vệ làm con khỉ gì. Mấy ông bà giỏi code thì còn sống được bao lâu nữa đâu mà giấu kỹ. Hãy mở ra cho người cần. Kiến thức cần có sự kế thừa mà.
 
Upvote 0
Theo mình nghĩ thì ông nào hiểu biết về code thì chẳng bao giờ đi chôm code. Code tự viết đôi khi còn không hiểu mình viết cái quái gì nữa huống chi là code của người khác. Bảo vệ làm con khỉ gì. Mấy ông bà giỏi code thì còn sống được bao lâu nữa đâu mà giấu kỹ. Hãy mở ra cho người cần. Kiến thức cần có sự kế thừa mà.
cái môi trường chung trên này nó tạo ra như thế đấy anh... Em có tham gia 1 cái diễn đàn vb bên mỹ họ rành mạch và rõ ràng mọi cái vv
 
Upvote 0
Đôi khi người ta mã hóa code (dcu, dll, ...) là có lý do. Nếu anh A sống bằng viết code, viết chương trình thì anh A phải bảo vệ cái cần câu của mình. Tất nhiên không ai đi mã hóa tất cả mọi cái. Những gì người khác có thể nghĩ ra dễ dàng thì chả lý gì lại đi mã hóa. Nhưng nếu anh A có một ý tưởng, một thuật toán nào đó, mà nó làm cho sản phẩm của anh A nổi trội hơn sản phẩm của những người khác, thì anh A phải bảo vệ ý tưởng đó, thuật toán đó. Nếu là vấn đề to lớn thì có thể phải đăng ký bản quyền. Vấn đề nhỏ thì mình phải tự giấu kín thôi. Đã kinh doanh thì có nhiều bí mật phải giữ kín, nếu đối thủ cạnh tranh biết được thì còn gì lợi thế nữa. Vì thế anh A sống nhờ code thì anh A phải giấu kín những ý tưởng, phát minh của mình. Chỉ những thứ đó thôi chứ không phải những code tầm thường mà ai đó có chút kinh nghiệm là viết được. Điển hình là nhiều tập tin Excel. Thậm chí không cần làm cho dễ nhìn toàn bộ code đã bị làm rối. Có thể chỉ cần làm cho dễ nhìn một phần, đủ để đoán được lôgíc, ý tưởng của "phần mềm". Rồi sau đó tự viết lại theo ý của mình thôi. Cái người ta cần chôm không phải là từng câu từng chữ trong code mà chỉ là ý tưởng, thuật toán. Mấy ông ti toe viết được vài dòng code VBA đã học cách giấu. Không ai giấu những cái tầm thường cả.
 
Upvote 0
trên thế giới code người ta miễn phí hoàn toàn đấy rất rõ ràng và minh bạch mọi cái ... quan trọng là ta có biết gắp nó ra xài hay không thôi
ít ai người ta làm cái trò mã hóa hay làm rồi trên VBA lắm ... toàn thấy họ viết DLL thôi còn tại sao thế thì tôi ko có biết ???

Link sau cho ai quan quan tâm tới truy xuất dữ liệu mà không lệ thuộc vào công nghệ ADOx... của Ms nè ... cứ thế gắp ra mà xài thôi SQLite đấy
Trang chủ SQLite

Tôi vừa biết cách gắp ra xài xong ... tây nó làm cho rồi cứ thế dùng thôi ... thời gian tới rảnh test các kiểu thế là có cái SQLite xài thôi

Hình minh họa chỉ cho xem ... giờ trên này chỉ thế thôi chỉ cái bánh ở đó ai ăn được thì ăn ko thì nhìn vậy :p

1610511347624.png
 
Upvote 0
Mã nguồn ở đây chứ... quan trọng là ta có biết [sic] đọc mã C hay không.

1610517414797.png
 
Upvote 0
Chào mọi người . CHo mình hỏi phương thức viết code như code bên dưới là dùng cách nào. Xuất tất cả VBA qua DLL sau đó trong VBA gọi lại các code trong Dll. Mình cần viết như thế này cho mình hỏi phải dùng VBA hay C++ hay dùng 1 tool gì . Do mình có code VBA sẳng giờ phải dùng cách nào để chuyển qua dạng này nhanh nhất. XIn chân thành cảm ơn


#If Win64 = False Then
Private Declare Sub a54dsg5r4grey4 Lib "abc_xlsb_32.dll" Alias "k1je7an9i1cgezw@0" ()
Private Declare Sub grgrseges4ghresyh4 Lib "abc_xlsb_32.dll" Alias "w3pja8q9m9es3@0" ()
#Else
Private Declare PtrSafe Sub a54dsg5r4grey4 Lib "abc_xlsb_32.dll" Alias "k1je7an9i1cgezw" ()
Private Declare PtrSafe Sub grgrseges4ghresyh4 Lib "abc_xlsb_32.dll" Alias "w3pja8q9m9es3" ()
#End If

Option Explicit
Sub test1()
a54dsg5r4grey4
End Sub

Sub Test2()
grgrseges4ghresyh4
End Sub
bạn vào trang web này sẽ tìm thấy cái bạn cần, đơn giản, dễ làm chỉ là mất phí: https://vbacompiler.com/
 
Upvote 0
bạn vào trang web này sẽ tìm thấy cái bạn cần, đơn giản, dễ làm chỉ là mất phí: https://vbacompiler.com/
Thớt là đân dạy C++ lấy 200 đô la một tiết. Chứ không phải tay mơ.

Chỉ là không chịu học code VBA cho nên code VBA toàn là đi xin đâu đó. Bây giờ đến lúc p-rô-dét bán lấy tiền được rồi nên cần mã hoá mấy cái VBA để cho chính chủ không nhận code của mình và đòi chia tiền.

Lên đây hỏi là do muốn miễn phí chứ làm phải trả tiền thì thớt biết cả khối.
 
Upvote 0
Xin chào tất cả mọi người, đọc lại chủ đề này OT cũng thấy khá thực tế & cần thiết:
Ví dụ OT có đoạn code như sau:
Mã:
Public Const SeverName As String = "LAPTOP-AC5\SQLEXPRESS"
Public Const DatabaseName As String = "QLBH"
Public Const UserNameSQL As String = "Admin"
Public Const PasswordSQL As String = "123456789"
Public Conn As Object

Public Function ConnectToSQL(Server As String, Database As String, User As String, Pwd As String) As Boolean
    Set Conn = CreateObject("ADODB.Connection")
    Conn.Open ("Driver={SQL Server};Server=" & Server & ";Database=" & Database & ";Uid=" & User & ";Pwd=" & Pwd & ";")
End Function
Do bảo mật trong VBA thì rất kém, nếu để đoạn code trên trong file Excel thì cũng khá nguy hiểm, (nếu SeverName là dùng chung) ...
Do vậy có cách nào hoặc công cụ nào có thể chuyển dễ dàng đoạn code trên đưa ra file DLL ,
Sau đó từ Excel có thể chạy một đoạn code ví dụ như (gọi hàm ConnectToSQL) từ file DLL không ạ:
Mã:
Sub testConnectToSQL()
    Set rs = CreateObject("ADODB.Recordset")
    Call ConnectToSQL(SeverName, DatabaseName, UserNameSQL, PasswordSQL)
...
End Sub
OT cũng có xem Bài 9 nhưng với các làm đó có lẽ dành cho các bạn chuyên sâu về lập trình (thực sự với OT xem mà không hiểu gì cả).
 
Upvote 0
Xin chào tất cả mọi người, đọc lại chủ đề này OT cũng thấy khá thực tế & cần thiết:
Ví dụ OT có đoạn code như sau:
Mã:
Public Const SeverName As String = "LAPTOP-AC5\SQLEXPRESS"
Public Const DatabaseName As String = "QLBH"
Public Const UserNameSQL As String = "Admin"
Public Const PasswordSQL As String = "123456789"
Public Conn As Object

Public Function ConnectToSQL(Server As String, Database As String, User As String, Pwd As String) As Boolean
    Set Conn = CreateObject("ADODB.Connection")
    Conn.Open ("Driver={SQL Server};Server=" & Server & ";Database=" & Database & ";Uid=" & User & ";Pwd=" & Pwd & ";")
End Function
Do bảo mật trong VBA thì rất kém, nếu để đoạn code trên trong file Excel thì cũng khá nguy hiểm, (nếu SeverName là dùng chung) ...
Do vậy có cách nào hoặc công cụ nào có thể chuyển dễ dàng đoạn code trên đưa ra file DLL ,
Sau đó từ Excel có thể chạy một đoạn code ví dụ như (gọi hàm ConnectToSQL) từ file DLL không ạ:
Mã:
Sub testConnectToSQL()
    Set rs = CreateObject("ADODB.Recordset")
    Call ConnectToSQL(SeverName, DatabaseName, UserNameSQL, PasswordSQL)
...
End Sub
OT cũng có xem Bài 9 nhưng với các làm đó có lẽ dành cho các bạn chuyên sâu về lập trình (thực sự với OT xem mà không hiểu gì cả).
Dùng VB6 để tạo DLL dễ như viết VBA. Biết VBA thì học VB6 trong 1 buổi là được
 
Upvote 0
Dùng VB6 để tạo DLL dễ như viết VBA. Biết VBA thì học VB6 trong 1 buổi là được
Ý,Xin chào Anh @Quang_Hải , kính chúc Anh năm mới thành công rực rỡ ạ :"'
OT có nghe nói về VB6 nhiều trên diễn đàn nhưng thưc sự có lẽ chưa bao giờ va phải hay sao ây.
Nếu có thể anh chỉ cho OT cách làm từng bước cụ thể với trường hợp trên của OT ạ ( không mong một ngày, 1 tuần hoặc mười ngày thạm chị hơn nữa cũng được ạ)
 
Upvote 0
Ý,Xin chào Anh @Quang_Hải , kính chúc Anh năm mới thành công rực rỡ ạ :"'
OT có nghe nói về VB6 nhiều trên diễn đàn nhưng thưc sự có lẽ chưa bao giờ va phải hay sao ây.
Nếu có thể anh chỉ cho OT cách làm từng bước cụ thể với trường hợp trên của OT ạ ( không mong một ngày, 1 tuần hoặc mười ngày thạm chị hơn nữa cũng được ạ)
Mình đã chuyển sang kinh doanh code rồi bạn ơi. Hãy tìm trên google và sẽ biết phải làm như thế nào. Từ năm con trâu mới này mình đã không còn viết code free nữa.
 
Upvote 0
Mình đã chuyển sang kinh doanh code rồi bạn ơi. Hãy tìm trên google và sẽ biết phải làm như thế nào. Từ năm con trâu mới này mình đã không còn viết code free nữa.
Uây vậy hả, OT chúc mừng anh đã biết kiếm tiền từ việc viết code híhíhí , :p
Mọi khi OT thấy anh hay đăng bài kèm cặp code mất phí (không phải trao đổi bằng tiền mà là cốc cafe, hay cốc bia gì đó) :D
Tiếc là OT không ở gần Bình Dương nếu không thì anh sẽ uống no cafe mỗi ngày luôn đó ạ --=0
Vậy anh cứ kinh doanh đi ạ, thuận mua vừa bán nếu trong khả năng chi trả OT sẽ cố gắng :yahoo:
 
Upvote 0
Xin chào tất cả mọi người, đọc lại chủ đề này OT cũng thấy khá thực tế & cần thiết:
Ví dụ OT có đoạn code như sau:
Mã:
Public Const SeverName As String = "LAPTOP-AC5\SQLEXPRESS"
Public Const DatabaseName As String = "QLBH"
Public Const UserNameSQL As String = "Admin"
Public Const PasswordSQL As String = "123456789"
Public Conn As Object

Public Function ConnectToSQL(Server As String, Database As String, User As String, Pwd As String) As Boolean
    Set Conn = CreateObject("ADODB.Connection")
    Conn.Open ("Driver={SQL Server};Server=" & Server & ";Database=" & Database & ";Uid=" & User & ";Pwd=" & Pwd & ";")
End Function
Do bảo mật trong VBA thì rất kém, nếu để đoạn code trên trong file Excel thì cũng khá nguy hiểm, (nếu SeverName là dùng chung) ...
Do vậy có cách nào hoặc công cụ nào có thể chuyển dễ dàng đoạn code trên đưa ra file DLL ,
Sau đó từ Excel có thể chạy một đoạn code ví dụ như (gọi hàm ConnectToSQL) từ file DLL không ạ:
Mã:
Sub testConnectToSQL()
    Set rs = CreateObject("ADODB.Recordset")
    Call ConnectToSQL(SeverName, DatabaseName, UserNameSQL, PasswordSQL)
...
End Sub
OT cũng có xem Bài 9 nhưng với các làm đó có lẽ dành cho các bạn chuyên sâu về lập trình (thực sự với OT xem mà không hiểu gì cả).
Cái này thì đơn giản mà, nhưng "...." máy cái chấm đó bạn bỏ thời gian nghiên cứu sẽ nghiệm ra nhiều thứ hihi. Với lại mình thấy trình độ code của bạn cũng khá lắm mà huống chi được 1 số anh trên diễn hướng dẫn nhiệt tình nữa, cố gắng lên hihi.


Đầu năm chúc toàn thể thành viên diễn đàn gặp nhiều may mắn, vạn sự như ý
 
Upvote 0
Cái này thì đơn giản mà, nhưng "...." máy cái chấm đó bạn bỏ thời gian nghiên cứu sẽ nghiệm ra nhiều thứ hihi. Với lại mình thấy trình độ code của bạn cũng khá lắm mà huống chi được 1 số anh trên diễn hướng dẫn nhiệt tình nữa, cố gắng lên hihi.


Đầu năm chúc toàn thể thành viên diễn đàn gặp nhiều may mắn, vạn sự như ý
Cảm ơn Bạn đã quan tâm ạ,
OT cũng thấy Bạn hay làm cái món này nhiều thì phải? :p
Nếu có thể mong bạn chỉ dẫn.
OT chúc Bạn sức khỏe & thành công.
 
Upvote 0
Cảm ơn Bạn đã quan tâm ạ,
OT cũng thấy Bạn hay làm cái món này nhiều thì phải? :p
Nếu có thể mong bạn chỉ dẫn.
OT chúc Bạn sức khỏe & thành công.
Hihi mình còn làm hơn cái món bạn nói nữa, nhưng cũng múa rìu qua mắt thợ thôi, với lại dạo này không có thời gian rảnh rỗi + chán không muốn nghiên cứu nữa, nên giờ quên hết rồi.
Còn bạn muốn học hỏi nên hỏi mọi người trên diễn đàn là tốt nhất.
Thân
 
Upvote 0
Hihi mình còn làm hơn cái món bạn nói nữa, nhưng cũng múa rìu qua mắt thợ thôi, với lại dạo này không có thời gian rảnh rỗi + chán không muốn nghiên cứu nữa, nên giờ quên hết rồi.
Còn bạn muốn học hỏi nên hỏi mọi người trên diễn đàn là tốt nhất.
Thân
Cảm ơn Bạn vì đã góp ý, đêm qua theo gợi ý của anh @Quang_Hải , OT tìm kiếm suốt về phương pháp dùng VB6 như thấy rằng:
'VB6 chỉ hỗ trợ nền tảng 32bit và đã bị Bác Bill ngưng hỗ trợ từ năm 1998 '
trong khi phiên bản Office của OT lại là 64bit, hic hic.
 
Upvote 0
Upvote 0
OT cũng có xem Bài 9 nhưng với các làm đó có lẽ dành cho các bạn chuyên sâu về lập trình (thực sự với OT xem mà không hiểu gì cả).

Nếu bạn chỉ dùng kiến thức VBA để mong hiểu ngay cách tạo DLL không thì chắc chắn không hiểu gì theo video bài 9 hay bất kể hướng dẫn nào trên các ngôn ngữ khác. Tạo DLL trên VB6 thì dễ nhất nhưng gặp trở ngại với việc tạo DLL 64-bit và Microsoft ngừng phát triển nó. Tôi có nhiều chia sẻ về việc xây dựng DLL kể cả trên .NET, DELPHI, VB6 trên kênh youtube và từng share trên GPE này. Nếu bạn xác định không dùng VB6 nữa mà muốn tạo DLL trên công cụ khác thì cần phải học ngôn ngữ mới đã sau đó mới học các bước để tạo DLL. Video bài 9 là tôi hướng dẫn cách làm bằng Delphi, tôi đánh giá nó là công cụ tạo khá dễ và gần gũi với những ai đã biết VBA hay VB6.
 
Upvote 0
Cảm ơn Bạn vì đã góp ý, đêm qua theo gợi ý của anh @Quang_Hải , OT tìm kiếm suốt về phương pháp dùng VB6 như thấy rằng:
'VB6 chỉ hỗ trợ nền tảng 32bit và đã bị Bác Bill ngưng hỗ trợ từ năm 1998 '
trong khi phiên bản Office của OT lại là 64bit, hic hic.
Nhanh nhất và gần gũi với VBA là tìm hiểu Visual Basic .Net để tạo DLL, ngôn ngữ như tương tự VBA sẽ giúp phát triển những gì bạn đã có
 
Upvote 0

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

Back
Top Bottom