VBA для выбора и копирования ячеек в файл txt

#excel #vba

Вопрос:

Мне нужна некоторая помощь в создании кода для разделения 80 тыс. строк данных на блоки по 999. У меня есть набор данных, который содержит более 80 тысяч строк. Мне нужен только столбец A, но мне нужно разделить 80 тысяч строк столбца a на куски и сохранить в файл txt в блокноте. Есть ли способ выбрать a1:a999, скопировать и вставить в этот файл txt, затем вернуться в excel и выбрать a1000:a1999, снова выбрать и скопировать в файл txt, затем a2000:a9999, a3000:a3999 и так далее, пока у меня не будет x количество файлов txt.

Электронные таблицы уже существуют проблема, о которой я говорю здесь, относится к 1 году, у меня есть электронные таблицы еще на 5 лет, все из которых содержат более 80 строк.

Результат, который я ищу, состоит в том, чтобы сократить время ручного копирования данных в файл txt. Мне нужно это сделать, так как коллега использует файл txt для ввода данных в запрос в SQL для удаления данных из базы данных. Мне сказали, что конкретный запрос ограничил число 999

Любая помощь будет очень признательна

Большое Спасибо, Тед

Комментарии:

1. a1000:a1999 составляет 1000 строк.

Ответ №1:

Это может быть достигнуто путем циклического перебора каждой строки группами по 999 строк.

Результат:

введите описание изображения здесь

Код:

 Sub RangeToTxt()

Dim FilePath As String, ClData As String
Dim frow As Long, lrow As Long
Dim i As Long, j As Long, k As Long

frow = 1
lrow = Cells(Rows.Count, "A").End(xlUp).Row 'Find last row in Sheet1

FilePath = "G:Till" 'Set path to txt files

k = 1 'Row to start from
For i = frow To lrow Step 999 'loop from first to last row. For every loop, jump 999 rows
    Open FilePath amp; k amp; ".txt" For Output As #1 'Set file
    
    For j = 1 To 999 'Loop through rows
        If Cells(i   j, "A") = "" Then Exit For
        ClData = ClData amp; Cells(i   j, "A") 'Append to data
        If j <> 999 Then 'If last row then skip extra line
            ClData = ClData amp; vbNewLine
        Else
            ClData = ClData
        End If
    Next j
    
    Print #1, ClData    'Write to txt file
    Close #1            'Close txt file
    
    k = k   1           'Add 1 to txt file name
    ClData = ""         'Clean data

Next i              'Next group

MsgBox ("Done")
End Sub
 

Комментарии:

1. Отлично делает именно то, что мне нужно. Спасибо

2. Не стесняйтесь отметить ответ как принятый, нажав на серую галочку под кнопками голосования :). Прекрасно, что это помогло тебе. Возможно, потребуется небольшая корректировка, чтобы соответствовать вашим потребностям на 100% :).