|
Sub replace() '子过程名replace
Dim myDialog As FileDialog, oFile As Object
Dim Fso, myFolder As Object, myFiles As Object
Dim fn$ '定义一些要用到的变量,分别获取文件夹名,文件名
Set Fso = CreateObject("Scripting.FileSystemObject") '创建文件操作
Set myDialog = Application.FileDialog(msoFileDialogFolderPicker) '用对话框获取文件夹路径
With myDialog
If .Show <> -1 Then Exit Sub '如果在文件夹选择时点"取消"则退出过程
Set myFolder = Fso.GetFolder(.InitialFileName) '将文件夹路径赋值到变量
Set myFiles = myFolder.Files '将文件夹内所有文件存入变量数组
For Each oFile In myFiles
Dim strName, strName1, strName2 As String '定义局部变量,检查文件扩展名是否为xls或xlsx
strName = LCase(oFile.Name)
strName1 = VBA.Right(strName, 3)
strName2 = VBA.Right(strName, 4)
If strName1 = "xls" Or strName2 = "xlsx" Then '如果是excel文件,则执行下面的操作
fn = myFolder & "" & oFile.Name '这两句是用来打开文件的
Workbooks.Open FileName:=fn
Worksheets("评级审批表").Range("B18") = "=参数表!H1&C15&参数表!H2&E15&参数表!H3&参数表!H5&参数表!H4"
Application.DisplayAlerts = False '为了防止保存时出现提示信息,关闭提示
ActiveWorkbook.Save '保存活动的工作薄
Application.DisplayAlerts = True '打开提示信息
ActiveWindow.Close '关闭工作蒲
End If
Next '处理下一个文件
MsgBox ("文件处理完成") '处理完文件夹内所有文件时提示操作完成
End With
End Sub
以上是一个批量修改文件夹下工作薄指定单元格内容的模块,虽然成功调用出浏览框选择路径,但是只有选择盘符根目录才能正常运行。
比如说有10个工作薄需要修改,如果都放在“D:\”下面,在浏览对话框内选择“D\”就能执行。但是如果是放在子目录,例如“D:\123456\”下,即使浏览对话框选择正确也无法执行。
求教啊!!!!
|
|