ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: pzhqh

用vba选择文件夹

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-7-10 11:37 | 显示全部楼层
本帖已被收录到知识树中,索引项:文件操作和FSO

一般的脚本管理员习惯是不做引用,直接CREATEOBJECT(“SHELL.APPLICATION”)就可以了,当然相关常数要就要自已写

这个文件夹对象与GETFILEOPEN函数有一点不同,它最后返回的是FOLDER,所以还是有区别的,有时确实在编程中需要选择FOLODER时这个对象就派上用专场所了

就我的记忆,似乎是在IE4以后就有了(MS拿IE跟NS大战,以IE合成到桌面,最后在浏览器上打倒NS为止,杀人一万,自损三千,自已也被告了),MS把IE的功能合到桌面上以后,就有了这个SHELL的自动化对象。

不过,SHELL其它的用处,还真是不太好说,除了打开文件夹FOLDER,他可以处理一堆文件对象,但是这个功能跟SCRIPTING的FSO相冲了(就是FILESYSTEMOBJECT),它还可以用来关机,但是又关不彻底(退到用户选择的那个界面),总是觉得有点鸡肋的说......

TA的精华主题

TA的得分主题

发表于 2007-5-12 11:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-1-7 20:46 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-1-7 15:39 | 显示全部楼层
有这么麻烦吗?我给大家搞个简单的代码:

Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type

Sub Proabnormal()

Dim bi As BROWSEINFO
Dim pidl&, rtn&, path$, pos%
pidl& = SHBrowseForFolder(bi)
path$ = Space$(512)
rtn& = SHGetPathFromIDList(ByVal pidl&, ByVal path$)
If rtn& Then
pos% = InStr(path$, Chr$(0))
mypath = Left(path$, pos - 1)
Else
Exit Sub
End If

On Error Resume Next

With Application.FileSearch '设置应用程序的查找
.NewSearch '新查找
.LookIn = mypath '将新查找的路径设置为文件对话框的路径(myPath)
.SearchSubFolders = True '查找子目录
.FileType = msoFileTypeAllFiles '查找所有文件类型
.FileName = "*.xls" '查找后缀为xls的文件
.Execute '执行文件查找

For k = 1 To .FoundFiles.Count '把找到的文件打开
Workbooks.Open .FoundFiles(k), , True '打开第k个找到的文件

next k
end sub
后面的代码自己看着补充吧。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-3-10 17:06 | 显示全部楼层

回复 16楼 ahq2001 的帖子

不错的代码,收起来了
不过里面少了一个END WITH,呵呵。
还有个问题就是,该怎么指定文件夹名?

[ 本帖最后由 frank_deng 于 2009-3-10 17:42 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-3-17 15:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
看不懂,可能有天我会懂,

TA的精华主题

TA的得分主题

发表于 2009-7-16 09:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
呵呵。。。。。不错。。。收藏了!

TA的精华主题

TA的得分主题

发表于 2009-8-2 20:32 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-10-16 15:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢分享!

TA的精华主题

TA的得分主题

发表于 2009-12-30 11:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢分享,学习中。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 05:52 , Processed in 0.046050 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表