2016-11-03 4 views
0

Я пытаюсь создать макрос, который будет искать папку для .dat-файла, который содержит «OPS» (не с учетом регистра) в имени, если он найдет файл, который я хотел бы открыть, и запустить другой макрос, сохраните файл в качестве исходного filename.xlsm и закройте.VBA: Если filename.dat в папке содержит X, откройте, запустите макрос, сохраните как 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 

В идеале, этот макрос будет работать в любое время, когда открывается .dat файл, содержащий OPS в имени файла. Любая помощь приветствуется, спасибо.

ответ

1

К началу добавить

Dim wb as workbook 

, а затем заменить окно строку сообщения с

Set wb = Workbooks.Open(fPath & rFile(i)) 
wb.SaveAs fPath & Split(rFile(i), ".")(0), xlOpenXMLWorkbookMacroEnabled 
wb.Close 

я тестировал с вкладки deliminated файл и он работал хорошо. Ваши проблемы могут отличаться, если у вас другой формат.

+0

Спасибо! Его сохраняет в «Мои документы», хотя, все равно, чтобы сохранить его обратно в исходную папку? – Nathan

+0

Добавьте путь к 'SaveAs'. См. Мое редактирование. – Sobigen

+0

Это работает, спасибо! – Nathan

Смежные вопросы