以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- 关于VBA的混合编程,使用VB6.0做 ActiveX Dll (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=97480) |
-- 作者:zyyh -- 发布时间:2016/5/16 15:11:50 -- 关于VBA的混合编程,使用VB6.0做 ActiveX Dll 一直不大明白为嘛论坛上 没用VB6.0混合编程的对象,真的很简单很简单 VB6.0 做ActiveX dll 是非常非常简单的。以下是举例对象 打开VB.6.0 新建工程--选择 ActiveX dll,进入里面后 第一处修改 :主菜单的工程-属性-工程名称 把 工程1 改为 烛影摇红 第二处修改:在工程视图里面 选中 类模块-class1 ,将 Class1 改名为 类 添加 以下代码,粘贴复制就好了 Public Function huoqu_shuzu1(数组 As Variant, ByRef 传出数组 As Variant) As Boolean ReDim 传出数组(UBound(数组)) For a = 0 To UBound(数组) 传出数组(a) = 数组(a) + 1 Next huoqu_shuzu1 = True End Function \'计算5均线 Public Function jisuanjunxian5(ByVal jia1 As Single, ByVal jia2 As Single, ByVal jia3 As Single, ByVal jia4 As Single, ByVal jia5 As Single) As Single jisuanjunxian5 = (jia1 + jia2 + jia3 + jia4 + jia5) / 5 End Function 然后 在主菜单中 文件 --生成烛影摇红 记住生成的位置 下一步 就在这个位置里面 找到生成的 烛影摇红.dll 在win7下 直接双击 就可以注册 在别的系统 要手动 注册, 注册方法 在开始菜单底下 运行 regsvr32 D:\\烛影摇红.dll 就好了 切换到金字塔 到 与公式新建 这个页面的底下 有个 公式 这两个字,与它相同的 还有高级,选中 高级 --模块- Function 停止 运行 Function 就是上面的 那个 方块点下就好了 \'复制 粘贴以下代码 Sub test4()
Dim zyyh \'创建一个变量
Set zyyh = CreateObject("烛影摇红.类")\'记住 烛影摇红 和 类 这两个词 是上面修改的
dim a()
dim b()
redim a(2)
redim b(2)
a(0)=23
a(1)=34
a(2)=45
msgbox zyyh.huoqu_shuzu1(a,B) msgbox UBound(b) msgbox zyyh.jisuanjunxian5(1,2,3,4,5) End Sub 然后 在金字塔的主菜单-运行-宏 输入名称 test4 好了 一切OK 无论传入数组 还是传出数组 传递参数 和传出参数 都有了。 语言和VBA基本上一样,但是VB6.0 却远远比 VBA灵活的多。
|
-- 作者:pel46585 -- 发布时间:2016/5/16 23:00:51 -- 好文章,建议加精。 满世界都是C++的DLL的文章,这文章让人耳目一新。
但1、VB6.0跟这个VBS比,功能上其实没啥差异,基本上VB能干的,这个金字塔的语言也都能完成。这方面不同意楼主。运行速度上,我没比较过,估计也差不多吧。哦可能还是有些差异的,比如金字塔不能直接前期定义一些东西,使用API上,VB更方便些,可能。 2、VB的DLL不能直接在公式调用,想在公式里直接调用,有点麻烦。 |
-- 作者:zyyh -- 发布时间:2016/5/17 17:19:37 -- 以下是引用pel46585在2016-5-16 23:00:51的发言:
好文章,建议加精。 满世界都是C++的DLL的文章,这文章让人耳目一新。 但1、VB6.0跟这个VBS比,功能上其实没啥差异,基本上VB能干的,这个金字塔的语言也都能完成。这方面不同意楼主。运行速度上,我没比较过,估计也差不多吧。哦可能还是有些差异的,比如金字塔不能直接前期定义一些东西,使用API上,VB更方便些,可能。 2、VB的DLL不能直接在公式调用,想在公式里直接调用,有点麻烦。 说这个主要是因为 VB6和VBA的语法基本上 一模一样 ,但是VB6 的灵活性非常好。这样会大大大的降低 编写者的难度。 其实这个也可以用 NET做 VB.NET,C# 都可以,不清楚为嘛 版主估计偷懒吧,真正的仅仅是做成 ActiveX dll 就好了,喜欢哪种语言 都可以转过去
|
-- 作者:zyyh -- 发布时间:2016/11/25 16:05:43 -- 其实你去看VBS的变量定义 是没有结构的说法的,我不清楚有没有线程的说法 但是DLL里面可以设置结构和使用线程来处理大数据计算。 以前在VBS里面设置,卡的要死,后来把数据计算全部放进线程里面搞,简直神速,而且不卡
|