Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

вопрос по работе с текстом и фаилами в Vba

5.9K
17 июня 2005 года
Maks555
24 / / 04.02.2005
Имеется следующее письмо экспортированное из почтовой программы в текстовый файл.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
От: Иванов Иван Иваныч <sender@xx.ru>
Кому: <xxxxx@mail.ru>
Написано: 17 июня 2005 г., 10:10:49
Тема: любая тема
Файлы:
--====----====----====----====----====----====----====---
Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Плиз подскажи алгоритм и желательно код которым можно сделать следующее:
e-mail от кого <sender@xx.ru> скопировать в Ecxel в столбец "A". Дату написания 17 июня 2005 г. в столбец "B"
, тему в столбец "C", а тело в столбец "D".
Вообщем должен получится импорт писем в Ecxel. В одном текстовом фаиле может быть несколько писем.
425
17 июня 2005 года
sq_deep
498 / / 18.02.2005
Код:
Option Explicit

Public Sub Maks555()
    Dim fs          'FileSystemObject
    Set fs = CreateObject("Scripting.FileSystemObject")
    Dim stream      'TextStream
    Set stream = fs.OpenTextFile( _
        "ReadRextFile.txt", _
        1, _
        False)
    Dim state As Integer
    state = 1
    While Not stream.AtEndOfStream And state < 6
        Dim s As String
        s = stream.ReadLine
        Select Case state
        Case 1:     ' обработаем От
            state = DoFrom(s)
        Case 2:     ' обработаем Кому
            state = DoTo(s)
        Case 3:     ' обработаем дату
            state = DoDate(s)
        Case 4:     ' обработаем тему
            state = DoSubj(s)
        Case 5:     ' обработаем тело
            s = stream.ReadLine ' пропустим Файлы
            s = stream.ReadLine ' пропустим разделитель
            state = DoBody(s)
        End Select
        Debug.Print s
    Wend
    stream.Close
End Sub

Private Function DoFrom(s As String) As Integer
    If Left(s, 4) = "От: " Then
        Range("a1") = Mid(s, 5)
        DoFrom = 2      ' дальше будем обрабатывать Кому
    Else
        DoFrom = 1      ' продолжаем искать От
    End If
End Function

Private Function DoTo(s As String) As Integer
    Range("b1") = Mid(s, 7)
    DoTo = 3            ' дальше будем обрабатывать дату
End Function

Private Function DoDate(s As String) As Integer
    Range("c1") = Mid(s, 11)
    DoDate = 4          ' дальше будем обрабатывать тему
End Function

Private Function DoSubj(s As String) As Integer
    Range("d1") = Mid(s, 7)
    DoSubj = 5          ' дальше будем обрабатывать тело
End Function

Private Function DoBody(s) As Integer
    Range("e1") = s
    DoBody = 6          ' конец
End Function
Доделайте немного сами. А в принципе должно работать прямо так.
5.9K
17 июня 2005 года
Maks555
24 / / 04.02.2005
большое спасибо! сейчас буду пробовать
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог