批处理 指定目录下所有EXCEL自动打开、保存、退出

我有A、B、C、D 4个文件夹,里面分别有若干个EXCEL文件。
BAT批处理是否可以实现:
对这4个指定目录里面的所有EXCEL文件执行以下操作:
1、打开
2、保存
3、退出
补充一下:
方法不限,不一定要BAT,VBS也可以的

请提供具体的程序内容,谢谢!

VBA代码如下,详见附件

Sub test()
Dim mPath As String, fA As String, mAry(1 To 1000), k As Integer, i As Integer, wb As Workbook
On Error Resume Next
If Workbooks.Count > 1 Then MsgBox "关闭其他工作簿!": Exit Sub
MsgBox "选择子文件夹所在的父目录!"
'----------设置父文件夹路径-----
With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
    .Show
    If .SelectedItems.Count = 0 Then
        MsgBox "你没有选择任何文件夹!"
    Else
        mPath = .SelectedItems(1)
    End If
End With
fA = Dir(mPath & "\*", vbDirectory)   '开始收集子目录名称
k = 0
Do While fA <> ""
    If fA <> "." And fA <> ".." Then
        If (GetAttr(mPath & "\" & fA) And vbDirectory) = vbDirectory Then
            k = k + 1
            mAry(k) = fA
        End If
    End If
fA = Dir
Loop
'--------------遍历各子目录--------
Application.DisplayAlerts = False
For i = 1 To k
    fA = Dir(mPath & "\" & mAry(i) & "\*.xls*")
    Do While fA <> ""
        If fA <> ThisWorkbook.Name Then
        Set wb = Workbooks.Open(mPath & "\" & mAry(i) & "\" & fA, , False) '打开
        wb.Save '保存
        wb.Close True '关闭
        End If
    fA = Dir
    Loop
Next i
Application.DisplayAlerts = True
MsgBox "处理完成!"
End Sub


追问

已经可以实现我预期的功能了,非常感谢。
但现在每次都需要选择”选择子文件夹所在的父目录!"
能不能直接改成指定的路径,如D:\Project overview 2015
这样我就不需要每次执行都选择一次?

追答Sub test()
Dim mPath As String, fA As String, mAry(1 To 1000), k As Integer, i As Integer, wb As Workbook
On Error Resume Next
If Workbooks.Count > 1 Then MsgBox "关闭其他工作簿!": Exit Sub
'----------设置父文件夹路径-----
mPath = "D:\Project overview 2015"
fA = Dir(mPath & "\*", vbDirectory)   '开始收集子目录名称
k = 0
Do While fA <> ""
    If fA <> "." And fA <> ".." Then
        If (GetAttr(mPath & "\" & fA) And vbDirectory) = vbDirectory Then
            k = k + 1
            mAry(k) = fA
        End If
    End If
fA = Dir
Loop
'--------------遍历各子目录--------
Application.DisplayAlerts = False
For i = 1 To k
    fA = Dir(mPath & "\" & mAry(i) & "\*.xls*")
    Do While fA <> ""
        If fA <> ThisWorkbook.Name Then
        Set wb = Workbooks.Open(mPath & "\" & mAry(i) & "\" & fA, , False) '打开
        wb.Save '保存
        wb.Close True '关闭
        End If
    fA = Dir
    Loop
Next i
Application.DisplayAlerts = True
MsgBox "处理完成!"
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-11
楼主问可不可以,我只能回答可以
第2个回答  2015-01-11
光用bat批处理实现不了上述全部功能。只能实现1.打开追问

VBS可以吗?不限方法的,只要能实现上述功能就好了