ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

同一文件夹下的WORD文件,用VBA显示所有WORD类型文件目录

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-6-30 15:41 | 显示全部楼层 |阅读模式

同一文件夹下的WORD文件,用VBA显示所有WORD类型文件目录

打开一WORD文件, 则可显示全部该文件夹的所有WORD类型,文件名!

TA的精华主题

TA的得分主题

发表于 2005-6-30 19:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
参考贴子:http://club.excelhome.net/viewthread.php?tid=69821

TA的精华主题

TA的得分主题

发表于 2005-7-1 07:23 | 显示全部楼层

你好,YORK888

请参:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-7-1 07:22:36 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit Sub WordFilesList() Dim MyFolderString As String, AllWordFileType As Variant, WordFileType As Variant '取得本文档的路径 MyFolderString = ThisDocument.Path '如果本文档未保存过则提示保存并退出程序运行 If MyFolderString = "" Then MsgBox "你必须先保存本文档!", vbOKOnly + vbInformation: Exit Sub '定义一个所有WORD程序能打开的文件类型(请再枚举,只是示例) AllWordFileType = Array("*.doc", "*.dot", "*.rtf", "*.txt", "*.wiz", "*.dochtml", "*.docmhtml", "*.dothtml") '在所有文件类型中循环 For Each WordFileType In AllWordFileType '在文档开始处插入指定的查找文件名 ThisDocument.Range(0, 0).InsertAfter GetWordFiles(MyFolderString, WordFileType) Next End Sub '---------------------- Function GetWordFiles(FolderPath As String, FileType As Variant) As String Dim Root As String, MyFileList As String, AWordFile As String Root = VBA.Left(FolderPath, 1) '取得盘符(根目录) ChDrive Root '设置当前驱动器盘符 ChDir FolderPath '进入指定目录 AWordFile = Dir(FileType) Do While AWordFile <> "" '如果是文件夹,或者没有此文件,则会返回"" Debug.Print AWordFile MyFileList = MyFileList & AWordFile & vbCrLf '内存中变量累加 AWordFile = Dir() Loop If MyFileList = "" Then MyFileList = "Word 没有发现在路径为""""" & FolderPath & """""的任何" & VBA.UCase(Mid(FileType, 3, Len(FileType) - 2)) & "文件" & vbCrLf Else MyFileList = "Word查找到路径为" & """" & FolderPath & """" & "的" & VBA.UCase(Mid(FileType, 3, Len(FileType) - 2)) & "文件列表如下:" & vbCrLf & MyFileList End If 'MsgBox MyFileList '函数返回为文件列表变量MyFileList值 GetWordFiles = MyFileList End Function '---------------------- Private Sub Document_Open() WordFilesList End Sub '----------------------如果出现以下情况(版本号不同),请据实修改:

http://club.excelhome.net/viewthread.php?tid=104218第四楼

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-7-6 09:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

守版主,你好!

非常感谢,你的回复,已经运行正常了,!在次多谢! 当你出书时我第一个购买!

还有一个问题, 能否实出在显示出来的目录中, 点击该目录则能打开文件?? 请问是否有办法解决? 多谢版主大人!

TA的精华主题

TA的得分主题

发表于 2005-7-6 11:44 | 显示全部楼层

请参考:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-7-6 11:43:59 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-7-1 07:22:36 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* ----------------------------- Option Explicit Sub WordFilesList() Dim MyFolderString As String, AllWordFileType As Variant, WordFileType As Variant Dim StartRange As Long, EndRange As Long, MyRange As Range, MyString As String Dim i As Paragraph, strFileName As String '一个比较大的发现,在VBA中对Document .Hyperlinks.Add 时,在连续段落中ADD时出现异常,本.Hyperlink '将修改上一个.Hyperlink,实在百思不得其解! '取得本文档的路径 Application.ScreenUpdating = False MyFolderString = ThisDocument.Path '如果本文档未保存过则提示保存并退出程序运行 If MyFolderString = "" Then MsgBox "你必须先保存本文档!", vbOKOnly + vbInformation: Exit Sub '定义一个所有WORD程序能打开的文件类型(请再枚举,只是示例) AllWordFileType = Array("*.doc", "*.dot", "*.rtf", "*.txt", "*.wiz", "*.dochtml", "*.docmhtml", "*.dothtml") '在所有文件类型中循环 With ThisDocument For Each WordFileType In AllWordFileType '在文档开始处插入指定的查找文件名 MyString = GetWordFiles(MyFolderString, WordFileType) StartRange = .Content.End - 1 .Content.InsertAfter MyString EndRange = .Content.End - 1 If VBA.InStr(MyString, "Word 没有发现在路径为") = 0 Then Set MyRange = .Range(StartRange, EndRange) Set MyRange = .Range(MyRange.Paragraphs(2).Range.Start, EndRange) For Each i In MyRange.Paragraphs If Len(i.Range) > 1 Then strFileName = .Range(i.Range.Start, i.Range.End - 1) strFileName = MyFolderString & "\" & strFileName .Hyperlinks.Add Anchor:=i.Range, Address:=strFileName End If Next End If Next End With Application.ScreenUpdating = True End Sub '---------------------- '---------------------- Function GetWordFiles(FolderPath As String, FileType As Variant) As String Dim Root As String, MyFileList As String, AWordFile As String Root = VBA.Left(FolderPath, 1) '取得盘符(根目录) ChDrive Root '设置当前驱动器盘符 ChDir FolderPath '进入指定目录 AWordFile = Dir(FileType) Do While AWordFile <> "" '如果是文件夹,或者没有此文件,则会返回"" ' Debug.Print AWordFile MyFileList = MyFileList & AWordFile & Chr(13) & Chr(13) '内存中变量累加 AWordFile = Dir() Loop If MyFileList = "" Then MyFileList = "Word 没有发现在路径为""""" & FolderPath & """""的任何" & VBA.UCase(Mid(FileType, 3, Len(FileType) - 2)) & "文件" & vbCrLf Else MyFileList = "Word查找到路径为" & """" & FolderPath & """" & "的" & VBA.UCase(Mid(FileType, 3, Len(FileType) - 2)) & "文件列表如下:" & vbCrLf & MyFileList End If 'MsgBox MyFileList '函数返回为文件列表变量MyFileList值 GetWordFiles = MyFileList End Function '---------------------- '---------------------- Private Sub Document_Open() WordFilesList End Sub '----------------------

'一个比较大的发现,在VBA中对Document .Hyperlinks.Add 时,在连续段落中ADD时出现异常,本.Hyperlink '将修改上一个.Hyperlink,实在百思不得其解! 所以,我只能加外空白段落进行处理,而且,这些外加段落目前尚不能删除,手动可以,程序删除会出错!替换只能一次一个。好在无妨,此问题,我将做进一步跟踪,这个题,有点意思,耗了我一个多小时找原因啊!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-7-6 11:56 | 显示全部楼层

感谢, 守柔版主!

非常好用! 太棒了! 向版主学习!

TA的精华主题

TA的得分主题

发表于 2007-12-14 12:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习了。

TA的精华主题

TA的得分主题

发表于 2011-3-17 22:47 | 显示全部楼层
原帖由 守柔 于 2005-7-1 07:23 发表
你好,YORK888请参:'* +++++++++++++++++++++++++++++
'* Created By I Love You_Word!@ExcelHome 2005-7-1 07:22:36
'仅测试于System: Windows NT Word: 10.0 Language: 2052
'^T ...

我不知如何用?请守柔版主贴出完整代码,并附使用说明.

TA的精华主题

TA的得分主题

发表于 2010-7-10 10:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
做个标记,学习ing……

TA的精华主题

TA的得分主题

发表于 2010-7-10 08:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢, 守柔版主!
能否增加一功能:列出文件目录包含子文件夹下的文件,谢谢!
使用WORD2007发现不再支持FileSearch,没办法对子文件夹再搜索,又对代码了解不多,特来求助增加列出含子目录的文件名称。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 19:06 , Processed in 0.046505 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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