VBA:如果文件夹中的filename.dat包含X,则打开,运行宏,另存为filename.xlsm,关闭

时间:2016-11-03 19:14:43

标签: excel vba

我正在尝试创建一个宏,它将在文件夹中搜索名称中包含“OPS”(不区分大小写)的.dat文件,如果找到我要打开它的文件并运行另一个宏,将文件保存为原始filename.xlsm,然后关闭。

到目前为止,我能够搜索名称,但这是关于我的知识范围。

Sub Test2()
    Dim sh As Worksheet, lr As Long, fPath As String, fName As String, rFile() As Variant
    fPath = "C:\Users\ntunstall\Desktop\test\"

    ctr = 1

    fName = dir(fPath & "*.dat")
    Do Until fName = ""

        If InStr(fName, "OPS") > 0 Then
            ReDim Preserve rFile(1 To ctr)
            rFile(ctr) = fName
            ctr = ctr + 1
        End If

        fName = dir
    Loop
    For i = LBound(rFile) To UBound(rFile)
        'The variable rFile(i) represents the workbooks you want to work with.
        MsgBox rFile(i)  
    Next
End Sub

理想情况下,只要打开文件名中包含OPS的.dat文件,就会运行此宏。感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

到顶部添加

Dim wb as workbook

然后用

替换消息框行
Set wb = Workbooks.Open(fPath & rFile(i))
wb.SaveAs fPath & Split(rFile(i), ".")(0), xlOpenXMLWorkbookMacroEnabled
wb.Close

我使用制表符分隔文件进行了测试,但效果很好。如果您使用不同的格式,您的问题可能会有所不同。