我正在尝试创建一个宏,该宏将搜索文件夹中包含"OPS"(不区分大小写)的。dat文件,如果它找到一个文件,我想打开它并运行另一个宏,将文件保存为原始文件名。Xlsm,然后关闭。
到目前为止,我能搜索到这个名字,但这是我所知道的范围。
Sub Test2()
Dim sh As Worksheet, lr As Long, fPath As String, fName As String, rFile() As Variant
fPath = "C:UsersntunstallDesktoptest"
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文件时运行。
添加
Dim wb as workbook
,然后将消息框行替换为
Set wb = Workbooks.Open(fPath & rFile(i))
wb.SaveAs fPath & Split(rFile(i), ".")(0), xlOpenXMLWorkbookMacroEnabled
wb.Close
我测试了一个以制表符分隔的文件,效果很好。如果您有不同的格式,您的问题可能会有所不同。