Импорт данных подключения из текста (Excel) FAST WAY

Есть ли более быстрый способ импортировать данные из текста в лист Excel, затем щелкнуть и определить параметры. Есть пользователи, которые не знают, как пользоваться мастером импорта. Есть ли возможность сделать это с помощью макросов??

Импортированные данные всегда имеют одинаковый формат (в блокноте), и значения должны храниться всегда в одном диапазоне, чтобы сработала формула на другом листе.

Спасибо

1 ответ

Решение

Как предлагают другие, вы можете легко сделать это с записью. Вот образец, чтобы удовлетворить ваши потребности.

 Dim src_file_name As String
 src_file_name = openDialog
    ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(1)).Name = "temp_text"
    With ThisWorkbook.Worksheets("temp_text").QueryTables.Add(Connection:= _
        "TEXT;" & src_file_name _
        , Destination:=ThisWorkbook.Worksheets("temp_text").Range("$A$1"))
        .Name = "text_to_excel"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 65001
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With

Как вы упомянули, вы можете попросить пользователя выбрать текстовый файл. Просто включите метод ниже -

Function openDialog() As String
Dim fd As Office.FileDialog

Set fd = Application.FileDialog(msoFileDialogFilePicker)

With fd

  .AllowMultiSelect = False

  ' Set the title of the dialog box.
  .Title = "Please select the file."

  ' Clear out the current filters, and add our own.
  .Filters.Clear
  .Filters.Add "Text Files", "*.txt"
  .Filters.Add "All Files", "*.*"

  ' Show the dialog box. If the .Show method returns True, the
  ' user picked at least one file. If the .Show method returns
  ' False, the user clicked Cancel.
  If .Show = True Then
    openDialog = .SelectedItems(1)

  End If
End With
End Function

(Примечание. Не забудьте вызвать эту функцию выше, как я.)

Другие вопросы по тегам