欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 关于VBA的混合编程,使用VB6.0做 ActiveX Dll

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3403人关注过本帖树形打印复制链接

主题:关于VBA的混合编程,使用VB6.0做 ActiveX Dll

帅哥哟,离线,有人找我吗?
zyyh
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:52 积分:0 威望:0 精华:0 注册:2016/5/12 15:35:50
关于VBA的混合编程,使用VB6.0做 ActiveX Dll  发帖心情 Post By:2016/5/16 15:11:50 [只看该作者]

一直不大明白为嘛论坛上 没用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灵活的多。

版主评定:好评,获得40个金币奖励好评,获得40个金币奖励
(理由:奖励)
 回到顶部
帅哥哟,离线,有人找我吗?
pel46585
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:167 积分:661 威望:0 精华:1 注册:2009/12/25 23:43:24
  发帖心情 Post By:2016/5/16 23:00:51 [只看该作者]

好文章,建议加精。
满世界都是C++的DLL的文章,这文章让人耳目一新。
但1、VB6.0跟这个VBS比,功能上其实没啥差异,基本上VB能干的,这个金字塔的语言也都能完成。这方面不同意楼主。运行速度上,我没比较过,估计也差不多吧。哦可能还是有些差异的,比如金字塔不能直接前期定义一些东西,使用API上,VB更方便些,可能。
   2、VB的DLL不能直接在公式调用,想在公式里直接调用,有点麻烦。

 回到顶部
帅哥哟,离线,有人找我吗?
zyyh
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:52 积分:0 威望:0 精华:0 注册:2016/5/12 15:35:50
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:52 积分:0 威望:0 精华:0 注册:2016/5/12 15:35:50
  发帖心情 Post By:2016/11/25 16:05:43 [只看该作者]

其实你去看VBS的变量定义 是没有结构的说法的,我不清楚有没有线程的说法
但是DLL里面可以设置结构和使用线程来处理大数据计算。
以前在VBS里面设置,卡的要死,后来把数据计算全部放进线程里面搞,简直神速,而且不卡

 回到顶部