我正在尝试创建一个宏,它将在文件夹中搜索名称中包含“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文件,就会运行此宏。感谢任何帮助。谢谢。
答案 0 :(得分:1)
到顶部添加
Dim wb as workbook
然后用
替换消息框行Set wb = Workbooks.Open(fPath & rFile(i))
wb.SaveAs fPath & Split(rFile(i), ".")(0), xlOpenXMLWorkbookMacroEnabled
wb.Close
我使用制表符分隔文件进行了测试,但效果很好。如果您使用不同的格式,您的问题可能会有所不同。