|
本帖最后由 yangkaichong 于 2014-9-27 14:54 编辑
由于公司电脑的权限被限制,无法对C盘进行操作。最先开始想file:///C:/users/yangkaikai/appdata/roaming/360se6/User%20Data/temp/121708gyrk5khyokkust1q.jpg通过将vba封装为dll以保护自己的原代码,无奈在公司电脑上运行时无法加载dll文件,报错代码为429,如下图片:
后来偶遇一帖子,讨论如何将vba通过vb6.0封装为exe文件并在vba中调用,如此便能起到保护vba代码的用途。以下链接中讨论了将vba封装为exe的详细过程:
http://club.excelhome.net/forum.php?mod=viewthread&tid=865902
exe文件可以在vba中通过shell函数调用:
http://club.excelhome.net/forum.php?mod=viewthread&tid=827230
但是在操作过程中碰到一个问题:如何将工作薄事件一并封装进exe呢?
以worksheet_change事件为例,可以通过shell函数的传值功能将Target.Row及Target.Column以参数形式传入main()函数,详细代码如下:
Private Sub Worksheet_Change(ByVal Target As Range) Dim str As String
Dim she As String
str = "wkb_change" & "@" & Target.Row & "@" & Target.Column
she = Shell(ThisWorkbook.path & "\示例.exe" & " " & str, vbNormalFocus) '中间的空格不能少!
End Sub
注意:中间的“@"是为了分隔各个参数,在main()函数中会用arr = Split(str, "@")语句将其拆封,split的功能可以百度。
file:///C:/users/yangkaikai/appdata/roaming/360se6/User%20Data/temp/121708gyrk5khyokkust1q.jpg
其他不多说,直接上模型,请见附件。
vba封装为exe.rar
(62.52 KB, 下载次数: 1411)
最后,引申一下,个人认为在将vba封装为dll时,调试困难,但可以通过在将vba封装为exe的过程中进行相关代码的调试。
|
|