1005100717 发表于 2018-6-30 14:31:33

VBA 32位/64位通用对话框模块

本帖最后由 1005100717 于 2018-6-30 14:31 编辑

努力了几天,没有成功,今日偶然发现xsk199529   发的API调用模块,重新整理了一下代码。
原帖地址:http://bbs.mjtd.com/thread-177732-1-1.html

xxCommonDialog 类模块方法说明:
1、xxGetOpenfileName(ByVal title As String, ByVal basePath As String, xxFilter As Variant, isMulti As Boolean) As String()
xxGetOpenfileName(标题,默认路径,过滤器,是否多选)返回值   字符串数组
不管是否多选,均返回字符串数组,如果用户取消操作或函数错误,则返回数组的第一个元素为“”空字符串
不管是单选还是多选,如果只选择了一个文件,则返回数组的第一个元素即为选择文件的完整路径
如果是多选,且选择了不止一个文件,则返回数组的第一个元素为选择路径,第二至ubound个元素为选择的文件名

2、xxGetSavefileName(ByVal title As String, ByVal basePath As String, xxFilter As Variant) As String
xxGetSavefileName(标题,默认路径,过滤器) 返回值 字符串
只支持单文件保存,如果用户取消或者函数失败,则返回 “” 空字符串 。成功返回完整保存文件名

过滤器:使用array()数组生成,必须成对出现。
例如文本文件以及CAD文件可以这么写 :Array("文本文件(*.txt)", "*.txt", "dwg文件(*.dwg)", "*.dwg")。
显示全部文件请直接输入 “” 空字符串 ,其他内容可能会发生错误。

cad2008、cad2014中测试
个人能力有限,疏漏错误在所难免,欢迎大家共同探讨,共同进步。






户籍科 发表于 2018-7-5 15:07:30

言戲無軍 发表于 2018-7-14 16:21:35

我用过这个代码,win10 64位,没法运行,另外请教下,win10升级1803版本后,CAD2008以下都无法加载VBA窗体文件,提示未正确注册,怎么解决呢

1005100717 发表于 2018-7-19 15:29:45

言戲無軍 发表于 2018-7-14 16:21
我用过这个代码,win10 64位,没法运行,另外请教下,win10升级1803版本后,CAD2008以下都无法加载VBA窗体 ...

我自己用的是 win10 64位 1803,这个代码测试通过。 win7 32 位cad2008通过。
不过 介于vba6~vba7之间的,只能手动改成 6.0的版本。

言戲無軍 发表于 2018-7-21 21:32:18

1005100717 发表于 2018-7-19 15:29
我自己用的是 win10 64位 1803,这个代码测试通过。 win7 32 位cad2008通过。
不过 介于vba6~vba7之间 ...

win10 1803 安装CAD2008 后不能用带窗体的VBA程序,提示未注册,如果新建VBA程序,插入窗体会提示未注册,CAD2010没问题

1005100717 发表于 2018-8-8 14:46:08

言戲無軍 发表于 2018-7-21 21:32
win10 1803 安装CAD2008 后不能用带窗体的VBA程序,提示未注册,如果新建VBA程序,插入窗体会提示未注册 ...

你要在64位系统中用32位的组件,多少都会有一些问题。可以试下vb.net调用com接口,最近在用,还行,至少不用考虑32位 64位的问题

dong20030432 发表于 2018-8-8 15:38:36

请问这个对话框可以在VB里面用吗?

yuanziyou 发表于 2018-8-12 21:49:46

早点转.net吧,少在vba上折腾
页: [1]
查看完整版本: VBA 32位/64位通用对话框模块