怎样使VBA按文件名顺序批量读取word文档?

现一文件夹内有近百个word文档,每一个word文件都是以类似354、355、356的形式命名,我需要按文件名大小批量提取其中的数据,忽略掉提取数据环节,请问我该怎么才能用VBA按顺序读取所有文档呢?

操作步骤。
  第一,首先将需要批量替换的多个Word文档放在同一文件夹下面。
  第二,新建一空白Word文档,右击空白工具栏,单击“控件工具箱”,就可以看到屏幕上调出的控件工具箱。
  第三,在控件工具箱上单击“命令按钮”,文档中就放置了一个按钮了。
  第四,双击该按钮,进入VB代码编写模式,将以下代码复制进去。
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim myPas As String, myPath As String, i As Integer, myDoc As Document
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "选择目标文件夹"
If .Show = -1 Then
myPath = .SelectedItems(1)
Else
Exit Sub
End If
End With
myPas = InputBox("请输入打开密码:")
With Application.FileSearch
.LookIn = myPath
.FileType = msoFileTypeWordDocuments
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
Set myDoc = Documents.Open(FileName:=.FoundFiles(i), Passworddocument:=myPas)
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "大家好"
.Replacement.Text = "你好"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
myDoc.Save
myDoc.Close
Set myDoc = Nothing
Next
End If
End With
Application.ScreenUpdating = True
End Sub
  
第五,保存上面代码,退出VB编辑模式,返回Word文档界面。
  第六,单击选中该按钮,再单击控件工具箱的第一个按钮“退出设计模式”。
  第七,进行测试:点击按钮,选择要放置多个WORD文档所在的文件夹,确定后即可完成!注意如果WORD文档没有加密的话,密码项就不填,直接确认。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-28
先遍历所有文件,将文件名保存到数组中,然后对数组进行排序,然后就可以按顺序读取了。追问

非常感谢你的回答,可以写一段代码吗?就以354、355、356为文件名。麻烦了。

追答

看你私信,代码我先私信你,怕这里发了提交不上。
Private Function MyFunction8()
Dim Path As String, Spath As String
Dim Arr(), N As Long, Str As String
Path = "D:\新建文件夹\" '路径 注意后面要有斜杠
Spath = Dir(Path & "*.doc") '要查找的文件后缀名
Do While Len(Spath) '循环读取文件
N = N + 1
ReDim Preserve Arr(1 To N) '重新定义数组范围
Arr(UBound(Arr)) = Spath '将文件名转换为数值以进行排序
Spath = Dir() '查找下一个文件
DoEvents
Loop
Call Paixu(Arr()) '调用排序函数
For I = 1 To UBound(Arr) '依次取出排序后文件
Str = Str & Arr(I) & vbCrLf
Next
MsgBox Str
End Function

Private Function Paixu(ByRef Arr()) '冒泡法排序
For I = UBound(Arr) To LBound(Arr) Step -1
For J = LBound(Arr) To I - 1
If Val(Arr(I)) < Val(Arr(J)) Then
Temp = Arr(I)
Arr(I) = Arr(J)
Arr(J) = Temp
End If
Next
Next
End Function

本回答被提问者采纳
第2个回答  2015-09-09
先遍历所有文件,将文件名保存到数组中,然后对数组进行排序,然后就可以按顺序读取了
相似回答