Помогите сделать макрос.
Есть текстовый файл, созданный с помощью Notepad. В этом файле содержатся числа. Каждое из чисел находится в отдельной строке.
Макрос должен скопировать из текстового файла все числа, которые больше введенного числа, в столбец А, а числа, которые меньше введенного числа, в столбец Б.
[вложение удалено администратором]
Подготовка к запуску макроса:
- в макросе, вверху, в константе "strFileFullName" укажите свое полное имя текстового файла;
- перед запуском макроса откройте пустой эксель-файл, чтобы не испортить свои данные, т.к. макрос вставляет данные в эксель.
Макрос
Sub Procedure_1()
'В константе "strFileFullName" нужно записать полное имя
'текстового файла, в котором находятся числа.
'Полное имя - это путь к файлу и имя файла.
Const strFileFullName As String = "C:\Users\User\Desktop\chisla.txt"
Dim dblChislo As Double
Dim strChisloIzFaila As String
Dim lngA As Long, lngB As Long
'Очистка Excel-листа от прежних данных.
ActiveSheet.UsedRange.Clear
'Помещение в переменную "dblChislo" числа
'(в условии задачи - это введённое число).
dblChislo = InputBox("Введите число:")
'Открытие текстового файла, в котором находятся числа.
'1 - это имя, которое присваивается файлу,
'через это имя макрос будет работать с файлом.
'Символ "#" необязателен - можно его не использовать.
'Для чего он нужен - не помню (может быть раньше, в
'в старых версиях был нужен. В VBA-справке нет информации об этом символе).
'Input - переводится "Ввод". Если перевести ниже строку
'на русский, то будет: Открыть ... Для Ввода.
'Но на самом деле Вы открываете для чтения. Вот такая нестыковка.
Open strFileFullName For Input As #1
'Двигаемся, пока не достигнут конец файла "1".
'В коде ниже явно не указан переход к следующей строке.
'Переход к следующей строке происходит после использования команды "Line Input".
Do While EOF(1) = False
'Помещение текста из строки файла в переменную "strChisloIzFaila".
'Обратите внимание, что опять нестыковка в терминах.
'Line Input переводится "ввод строки", но на самом деле мы
'читаем строку.
Line Input #1, strChisloIzFaila
'Сравнение введённого числа и числа из файла.
'Если число из файла больше введённого числа.
'CDbl переводит тип данных "Текст" в тип данных "Число",
'чтобы сравнивать числа.
If CDbl(strChisloIzFaila) > dblChislo Then
'Переменная "lngA" используется для перехода по строкам в Excel,
'в столбце A.
lngA = lngA + 1
'Вставка числа в Excel в столбец A.
Cells(lngA, "A").Value = CDbl(strChisloIzFaila)
'Если число из файла меньше введённого числа.
ElseIf CDbl(strChisloIzFaila) < dblChislo Then
lngB = lngB + 1
Cells(lngB, "B").Value = CDbl(strChisloIzFaila)
End If
Loop
'Закрытие файла.
Close #1
End Sub
Благодарю Вас, реально лучший форум, с которым я сталкивался. Спасибо Вам.