Вставить верхние строки x из текста с помощью VBA - PullRequest
0 голосов
/ 07 июня 2018

Я хочу вставить верхние x строки из текстового файла.Я могу дать номер StartRow, но есть ли такие параметры, где я могу дать номер "EndRow", чтобы дать верхним x строкам то, что я хочу вставить.

Sub insertTopX()

    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Users\HarrsionDavid\Desktop\AnswerForEveryQuestions" _
        ,Destination:=Cells(1,1))
        .Name = "test_file.txt"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileConsecutiveDelimiter = True
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With

End Sub

1 Ответ

0 голосов
/ 07 июня 2018

Вы можете прочитать текстовый файл и разбить его на новую строку.Тогда у вас будет массив, с которым можно легко работать.

Пример файла:

enter image description here

  • Чтение файлаи разберите его на вариант;
  • Передайте startRow и endRow;

Option Explicit

Public Sub TestMe()

    Dim filePath As String
    filePath = "C:\Users\user\User\nt.txt"

    Dim myFile As String
    myFile = ReadFileLineByLineToString(filePath)

    Dim startRow As Long
    Dim endRow As Long
    Dim fixedFile As Variant

    fixedFile = Split(myFile, vbCrLf)

    startRow = 2
    endRow = 3

    Dim cnt As Long
    For cnt = startRow To endRow
        Debug.Print fixedFile(cnt - 1)
    Next cnt

End Sub

Это результат:

enter image description here


Это ReadFileLineByLineToString:

Public Function ReadFileLineByLineToString(path As String) As String

    Dim fileNo As Long
    fileNo = FreeFile

    Open path For Input As #fileNo

    Do While Not EOF(fileNo)
        Dim textRowInput As String
        Line Input #fileNo, textRowInput
        ReadFileLineByLineToString = ReadFileLineByLineToString & textRowInput
        If Not EOF(fileNo) Then
            ReadFileLineByLineToString = ReadFileLineByLineToString & vbCrLf
        End If
    Loop

    Close #fileNo

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...