Excel VBA Макросы: Как извлечь данные из текстового файла на эксель-лист?

Автор Bla8ky, 27 октября 2018, 13:42

Bla8ky

Я студент 1 курса и мне нужна помощь.

Вопрос такой. Дано задание, где мне нужно ввести в блокноте числа и написать код, что бы он выводил в столбец A четные числа, в столбец B не чётные.

Я понимаю тут нужно просто перенести информацию и делить на 2, если без остатка то в таблицу А, если есть остаток, то в таблицу В. Вроде всё продумано, но мозгов написать не хватает.

Администратор

Макрос вставляет данные на активный эксель-лист. Активный лист - это лист, который отображается на мониторе.
В пункте 1 укажите полное имя (путь + имя) текстового файла.
На конце текстового файла не должно быть пустой строки, иначе будет run-ошибка.

Макрос
Sub макрос()
   
    Dim var, lr As Long
   
   
    '1. Открытие текстового файла. При этом мы присваиваем файлу имя "1".
        ' Далее в коде будем обращаться к файлу по имени '1'.
    Open "C:\Users\User\Desktop\Новый текстовый документ.txt" For Input As #1
   
    '2. Копирование данных из текстового файла на активный эксель-лист.
    ' Двигаемся по строкам файла, пока не дойдём до последней строки файла.
    Do While Not EOF(1)
   
        '1) Запись текущей строки из файла в переменную 'var'.
        Line Input #1, var
       
        '2) Переводим число из типа String в тип Double, чтобы с ним можно было работать, как с чилом.
        var = CDbl(var)
       
        '3) Если число чётное.
        If var Mod 2 = 0 Then
            ' Поиск последней строки в столбце A. End не ищет в скрытых строках.
            lr = Cells(Rows.Count, "A").End(xlUp).Row + 1
            ' Копирование данных из переменной 'var' в эксель-ячейку.
            Cells(lr, "A").Value = var
        '4) Если число нечётное.
        Else
            lr = Cells(Rows.Count, "B").End(xlUp).Row + 1
            Cells(lr, "B").Value = var
        End If
       
    Loop
   
    '3. Закрытие текстового файла.
    Close #1

    '4. Сообщение.
    MsgBox "Готово.", vbInformation

End Sub
[свернуть]