SolidWorks机械工程师网——最大的SolidWorks学习平台

标题: VBA多选文件选择对话框 [打印本页]

作者: lhl-RT    时间: 2021-10-11 10:39
标题: VBA多选文件选择对话框
在SW中,如果采用VBA选择文件,可以用函数GetOpenFileName来选择文件,但该函数只支持单选一个文件,不支持选择多个文件。
  1. Dim Filter                      As String
  2. Dim fileName                    As String
  3. Dim fileConfig                  As String
  4. Dim fileDispName                As String
  5. Dim fileOptions                 As Long

  6. Private Sub CommandButton1_Click()

  7.     Filter = "SolidWorks Files (*.sldprt; *.sldasm; *.slddrw)|*.sldprt;*.sldasm;*.slddrw|Filter name (*.fil)|*.fil|All Files (*.*)|*.*|"
  8.    
  9.     fileName = swApp.GetOpenFileName("File to Attach", "", Filter, fileOptions, fileConfig, fileDispName)

  10.     Debug.Print fileName


  11. End Sub
复制代码

那么,如果同时选择多个文件怎么办呢?
通过查找资料及自己的摸索,终于找到了解决这个问题的办法。
1.如果电脑安装了office相关软件,可以借助office的控件;
  1. Option Explicit
  2. Dim swApp                      As Object
  3. Dim fileName                   As Variant
  4. Dim xlapp                      As Object
  5. Dim i                          As Long
  6. Sub main()
  7.     Dim strFilter           As String
  8.     On Error Resume Next
  9.    
  10.     Set swApp = CreateObject("SldWorks.Application")

  11.     Set xlapp = CreateObject("Excel.Application")
  12.    
  13.     strFilter = "SolidWorks文件 ,*.sldprt;*.sldasm;*.slddrw"

  14.     fileName = xlapp.GetOpenFileName(strFilter, , Title:="选择SolidWorks文件...", MultiSelect:=True)
  15.     Set xlapp = Nothing
  16.    
  17.     If IsArray(fileName) Then
  18.         For i = LBound(fileName) To UBound(fileName)
  19.             Debug.Print fileName(i)
  20.         Next i
  21.     End If
  22. End Sub
复制代码
运行程序后,等对话框弹出后,可通过ctrl+A,ctrl+右键,shift+右键,等方式选择多个文件

利用Office控件多选方式选择文件

2.通过API函数,选择多个文件






打开多选文件对话框(2).zip (30.7 KB, 下载次数: 188, 售价: 30 金币)



作者: tg000057    时间: 2021-10-11 18:17
好东西,感谢分享!
作者: jamy1979    时间: 2021-10-11 19:25
很不错,顶一下!
作者: qqfly332211    时间: 2021-10-11 22:56
楼主太有才了,膜拜中……
作者: UDF998    时间: 2021-10-20 16:05
活到老学到老!
作者: UDF998    时间: 2021-10-22 09:18
在第二种方法基础上修改能否选中单个文件夹
作者: lhl-RT    时间: 2021-10-22 10:10
UDF998 发表于 2021-10-22 09:18
在第二种方法基础上修改能否选中单个文件夹

这主要是选择文件的,选择文件夹有专门的对话框!当然,通过修改代码,也可以选择文件夹,但意义不大。
作者: UDF998    时间: 2021-10-22 10:58
lhl-RT 发表于 2021-10-22 10:10
这主要是选择文件的,选择文件夹有专门的对话框!当然,通过修改代码,也可以选择文件夹,但意义不大。

感谢,你有已经做好的选择文件夹的对话框吗? 能否发个帖子参考一下
作者: lhl-RT    时间: 2021-10-22 14:22
这个示例利用Office控件选择文件或文件夹,其中有:1.单选文件,
2.多选文件,
3.单选文件夹
用Office控件选择文件或文件夹.zip (10.93 KB, 下载次数: 118, 售价: 10 金币)


作者: UDF998    时间: 2021-10-22 15:25
感谢感谢,这种方法已经尝试过了,在各位大神的指导下,我目前在SWVBA只能采用这两种方法,使用第一个方法不够直观,用着不习惯。如果直接调用Excel的文件夹对话框,从进程里看到了Excel在后台启动了,从而导致程序运行速度太慢,目前还在找其它方法。

QQ五笔截图未命名.png

MicLink14209921.jpg

作者: makejon    时间: 2021-10-23 22:56
很不错,找到组织了!
作者: qqfly332211    时间: 2021-12-18 10:43
楼主太有才了,膜拜中……
作者: SW初学00    时间: 2021-12-20 09:24
很不错,顶一下!
作者: samult    时间: 2022-2-24 15:31
感谢楼主分享
作者: FLYADAY    时间: 2022-5-7 17:12
厉害,顶一个!
作者: 巴顿2017    时间: 2022-8-24 21:05
楼主辛苦了!
作者: SW初学00    时间: 2022-10-13 23:34
楼主您好,请问在装配体中选取多个零件或组件改怎么改代码呢?
作者: yni621    时间: 2022-10-14 09:10
感谢楼主分享,很不错!
作者: 1109188289    时间: 2023-6-20 15:36
SW机械工程师网,找到组织了!
作者: 1109188289    时间: 2023-6-20 16:08
很不错,希望能共享模型,谢谢!
作者: 1109188289    时间: 2023-6-20 16:14
SW机械工程师网,找到组织了!
作者: 1109188289    时间: 2023-6-20 16:20
发过了,之前在本网看到过!
作者: Trouble12138    时间: 2023-6-21 15:26
好代码,感谢楼主分享
作者: lider_2010    时间: 2023-8-14 15:28
UDF998 发表于 2021-10-22 15:25
感谢感谢,这种方法已经尝试过了,在各位大神的指导下,我目前在SWVBA只能采用这两种方法,使用第一个方法 ...

有研究到其他方法吗?
作者: Yemao丶    时间: 2023-8-15 08:41
好东西,努力学习学习!
作者: Ayinyue    时间: 2023-10-16 00:10
感谢楼主分享,很不错!
作者: moscow19870105    时间: 2023-12-19 16:50
感谢楼主分享,很不错!
作者: 沉默的人    时间: 2024-3-27 11:15
感谢楼主分享,很不错!




欢迎光临 SolidWorks机械工程师网——最大的SolidWorks学习平台 (https://www.swbbsc.com/) Powered by Discuz! X3.2