Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Чтение из Txt файла
Форум программистов > Системное программирование > Visual Basic
Hryv
Помогите, плиз, кому не трудно
Я, в принципе программировать умею, но с VB практически не сталкивался
А тут понадобился макрос для EXCEL
Вот упрощенная формулировака задачи (имея пример, я сам доделаю)

1. Надо открыть файл по фиксированному пути (например C:\путь\файл.txt)
2. Этот текстовый файл содержит 2 строки, в каждой строке число в формате nn...n.nn
3. Эти числа надо записать в открытый в EXCEL файл в заранее известные ячейки
Например: Лист1!A1 и Лист2!B2
4. Закрыть файл

Спасибо
Gamlet
]]>http://www.vbnet.ru/samples/download.aspx?id=726]]> - открытие файлов, в вба так же. Как залить в эксель ячейку, не знаю.
чтоб числа были- при чтении открывай переменной типа стринг, потом сравняй лонг переменную с ней.
Вроде заливать в ячейки так: Лист1.a1="тект", может что то путаю.
Tanya
' Первый параметр - имя файла
' Следующие - (неважно сколько, от 1) адреса ячеек
Sub nn(fName As String, ParamArray arrCells())
Dim s As String
Dim arrLines() As String
Dim iEnd As Integer
Dim i As Integer

'arrCells - адреса ячеек, куда будем вставлять
'определяем верхнюю границу массива переданных адресов
iEnd = UBound(arrCells)

' если нет адресов - так что тут делать ))) молча уходим
If iEnd = -1 Then Exit Sub

If Len(Dir$(fName)) > 0 Then
    ' заполняем буфер пробелами по размеру файла
    s = Space(FileLen(fName))
    
    ' открываем и читаем файл
    Open "e:\1.txt" For Binary As #1
    Get #1, , s
    
    Close #1
    
    If Len(s) Then
        ' если в файле что-то было разбиваем его на массив строк
        arrLines = Split(s, vbCrLf)
        
        ' определяем соответствие количества строк и количества переданных адресов
        If iEnd > UBound(arrLines) Then iEnd = UBound(arrLines)
        For i = 0 To iEnd
            ' и по адресам записываем значения
            ' без проверок число или нет записано - что есть то и пишем
            Range(arrCells(i)).Value = arrLines(i)
        Next i
    Else
        MsgBox "Нет данных!"
    End If
Else
    MsgBox "Нет данных!"
End If

End Sub

Sub kk()
' проверочный макрос
    'Call nn("e:\1.txt", "Лист1!A1", "Лист2!B2")
    Call nn("e:\1.txt")
End Sub


Проверочный макрос лучше все же так делать:
Sub kk()
' проверочный макрос
    Call nn("e:\1.txt", "Лист1!A1", "Лист2!B2")
End Sub
Gamlet
Еще раз убеждаюсь, что мое место должна занять Tanya.
Hryv
Tanya, спасибо
Все работает

Была небольшая неточность, открывался файл не из параметра а из строки Open "e:\1.txt" For Binary As #1
но я еще до запуска заметил и подправил

Отдельное спасибо, за то что очень универсально сделано
Мне осталось сделать только нужное количество вызовов nn() с нужными параметрами и моя задача полностью решена smile.gif
Tanya
Была небольшая неточность, открывался файл не из параметра а из строки Open "e:\1.txt" For Binary As #1
но я еще до запуска заметил и подправил


О! Да! Вот так всегда, стараешься, стараешься и где-нибудь закрадется неточность ...
Вроде мелочь, а осадок остается )))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.