乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 678|回复: 11

在64位cad中用VBA使用通用对话框(CommonDialog)的方法

[复制链接]

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2016-1-10 18:47:00 | 显示全部楼层 |阅读模式
大家知道,在64位cad中用VBA使用系统自带通用对话框(CommonDialog)控件是用不了的,因为这个控件是32位的,64位cad不能使用32位的控件和dll,本人采用activex exe方法,实现了在64位的环境中用VBA对通用对话框进行调用!
首先下载我编写的这个activex exe:,解压,放在任意一个你愿意的文件夹下,
然后,在中打开vba编辑器,把下面的代码复制进编辑器:
  1. Private Sub ss1()
  2. Dim x As New ZZYCommonDialog
  3. Dim bC As Boolean, lFSC As Long, strF() As String, sLD As String
  4.     x.ShowOpen ThisDrawing.Application.HWND32, bC, lFSC, strF, sLD'ThisDrawing.Application.HWND32,如果出错,用0代替
  5.     Debug.Print bC
  6.     If Not bC Then
  7.         Debug.Print lFSC
  8.         Debug.Print strF(0)
  9.         Debug.Print sLD
  10.     End If
  11.     Set x = Nothing
  12. End Sub
  13. Private Sub ss2()
  14. Dim x As New ZZYCommonDialog
  15. Dim bC As Boolean, oC As OLE_COLOR
  16.     x.ShowColor ThisDrawing.Application.HWND32, bC, oC
  17.     Debug.Print bC
  18.     Debug.Print oC
  19.     Set x = Nothing
  20. End Sub
  21. Private Sub ss3()
  22. Dim x As New ZZYCommonDialog
  23. Dim Canceled As Boolean, SelectedFont As String, Bold As Boolean, Italic As Boolean, Size As Integer, Underline As Boolean, StrikeOut As Boolean, Color As Long, FaceName As String
  24.     x.ShowFont ThisDrawing.Application.HWND32, Canceled, SelectedFont, Bold, Italic, Size, Underline, StrikeOut, Color, FaceName
  25.     Debug.Print Canceled, SelectedFont, Bold, Italic, Size, Underline, StrikeOut, Color, FaceName
  26.     Set x = Nothing
  27. End Sub
  28. Private Sub ss4()
  29. Dim x As New ZZYCommonDialog
  30. Dim bC As Boolean, lFSC As Long, strF As String, sLD As String
  31.     x.ShowSave ThisDrawing.Application.HWND32, bC, lFSC, strF, sLD
  32.     Debug.Print bC
  33.     Debug.Print lFSC
  34.     Debug.Print strF
  35.     Debug.Print sLD
  36.     Set x = Nothing
  37. End Sub

再然后,点击VBA编辑器的菜单,“”-》“引用”,

2flyyvsobaw.jpg

2flyyvsobaw.jpg


出来以下对话框,再点“浏览”,然后出现如下对话框 ,找到刚才你解压的附件的文件夹,选择那个文件“ZZYCommonDialogForVBAx64.exe”(扩展名是exe,不要害怕,是activex exe,Word,excel也是这样的程序)

jbq41vl2ehm.jpg

jbq41vl2ehm.jpg


点“打开”,点“确定”。

mrarephvceo.jpg

mrarephvceo.jpg


如果没有任何提示,恭喜你,你引用成功了,接下来,按F5运行哪几个测试代码就行了,
其中ss1是测试“打开”对话框的,ss2是测试“选择颜色”对话框的,其它自己试吧!
有人试用了,说不支持过滤文件扩展名,所以增加一下这个功能,出个升级版,同时,原版免币!------------------
2018-06-16更新一下,支持选择多个文件,
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2016-3-25 15:41:00 | 显示全部楼层
我试了,显示
运行时错误‘429’
Activex部件不能创建对象
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2017-12-8 14:58:00 | 显示全部楼层

好像是代码里 "ThisDrawing.Application.HWND32"的问题,如果改成"0"的话可以运行成功,但是打开的颜色窗口在左上角,无法操作,不知道楼主这个该怎么解决?
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2020-3-26 15:34:00 | 显示全部楼层

https://blog.csdn.net/hmm1208/article/details/25836837
看一下这篇文章,了解一下activex组件的注册。
原则上,放在任何文件夹下都可以,但需要注册到注册表里
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2016-1-10 19:12:00 | 显示全部楼层

rtnkyhh1apn.gif

rtnkyhh1apn.gif


来个gif演示
回复

使用道具 举报

1

主题

17

帖子

6

银币

初来乍到

Rank: 1

铜币
21
发表于 2016-1-10 21:02:00 | 显示全部楼层
还在只有楼主活跃在vba版了
回复

使用道具 举报

3

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
28
发表于 2016-1-28 22:06:00 | 显示全部楼层
前几天才把这个问题搞定,VB在64位下,也无法添加这个部件,现在搞定了
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2016-1-28 22:22:00 | 显示全部楼层

搞定什么 了
回复

使用道具 举报

3

主题

16

帖子

1

银币

初来乍到

Rank: 1

铜币
28
发表于 2016-1-28 22:22:00 | 显示全部楼层

可以是这个部件了
回复

使用道具 举报

3

主题

40

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2016-1-30 09:24:00 | 显示全部楼层
哇,这个厉害。我赶紧试试。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 00:41 , Processed in 0.312725 second(s), 75 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表