一直不大明白为嘛论坛上 没用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灵活的多。
好文章,建议加精。
满世界都是C++的DLL的文章,这文章让人耳目一新。
但1、VB6.0跟这个VBS比,功能上其实没啥差异,基本上VB能干的,这个金字塔的语言也都能完成。这方面不同意楼主。运行速度上,我没比较过,估计也差不多吧。哦可能还是有些差异的,比如金字塔不能直接前期定义一些东西,使用API上,VB更方便些,可能。
2、VB的DLL不能直接在公式调用,想在公式里直接调用,有点麻烦。
以下是引用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 就好了,喜欢哪种语言 都可以转过去
其实你去看VBS的变量定义 是没有结构的说法的,我不清楚有没有线程的说法
但是DLL里面可以设置结构和使用线程来处理大数据计算。
以前在VBS里面设置,卡的要死,后来把数据计算全部放进线程里面搞,简直神速,而且不卡