2015-05-17 3 views
0

Ниже приводится макрос, который я записал для проекта, над которым я работаю. Появляется новый текстовый файл, который поступает еженедельно (в этом примере имя файла HMO04102015.txt), и мне интересно, есть ли способ (возможно, дополнительный макрос, который я могу добавить в код), чтобы я мог вытащить новое еженедельное имя файла и замените его автоматически (возможно, как функция «вытащить последнюю временную метку»). Файлы появляются в тот же день недели, поэтому я знаю, в какой день они придут (если это вообще поможет).Вставить новое имя файла в Excel VBA

Sub textimport() 
' 
' textimport Macro 
' 
    With ActiveSheet.QueryTables.Add(Connection:= _ 
      "TEXT;C:\Users\Employee\Desktop\Test Data\HMO04102015.txt", _ 
      Destination:=Range("$A$1")) 
     .Name = "HMO04102015" 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .TextFilePromptOnRefresh = False 
     .TextFilePlatform = 437 
     .TextFileStartRow = 1 
     .TextFileParseType = xlFixedWidth 
     .TextFileTextQualifier = xlTextQualifierDoubleQuote 
     .TextFileConsecutiveDelimiter = False 
     .TextFileTabDelimiter = True 
     .TextFileSemicolonDelimiter = False 
     .TextFileCommaDelimiter = False 
     .TextFileSpaceDelimiter = False 
     .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) 
     .TextFileFixedColumnWidths = Array(11, 29, 9, 7, 2, 3, 167, 51, 39, 18) 
     .TextFileTrailingMinusNumbers = True 
     .Refresh BackgroundQuery:=False 
    End With 
    Columns("C:C").Select 
    Selection.Delete Shift:=xlToLeft 
    Columns("F:F").Select 
    Selection.Delete Shift:=xlToLeft 
    Columns("A:A").Select 
    Selection.Delete Shift:=xlToLeft 
    Columns("A:A").EntireColumn.AutoFit 
    Selection.ColumnWidth = 27 
    Range("B2").Select 
End Sub 

ответ

0

Да, вы можете использовать Application.GetOpenFilename, чтобы выбрать файл. См. Этот код

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

Sub textimport() 
    Dim Ret 

    Ret = Application.GetOpenFilename("Text Files (*.txt), *.txt") 

    If Ret <> False Then 
     With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Ret, _ 
     Destination:=Range("$A$1")) 
      ' 
      '~~> Rest of the code 
      ' 
     End With 
    End If 
End Sub 
+0

Благодарим вас за ввод. Да, я бы, вероятно, захотел захватить последний файл, увидев, что несколько файлов размещены в одной папке (например, TestFile04102015, TestFile04172015, TestFile04242015). Вы упомянули, что, чтобы выбрать самый последний файл, мне нужно будет включить DIR fuction. Как мне это сделать (используя имя файла примера TestFile04242015)? Спасибо за вашу помощь! –

+0

Будет ли имя файла всегда иметь последнюю отметку времени? –

+0

Привет, Сиддхарт, да, файл будет иметь то же имя, хотя у каждого файла есть отметка времени (mm-dd-yyy), так что, например, один файл может быть назван TestFile04102015, а следующий файл будет иметь имя TestFile04172015. Все файлы ровно на 7 дней. –

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