Разбор текстового документа в файл Excel - PullRequest
1 голос
/ 17 июня 2011

У меня есть текстовый документ, в котором есть данные, которые я хотел бы проанализировать в файле Excel.Исходные файлы имеют сотни страниц.Я работал с VBA, но я только начал изучать язык и столкнулся с множеством трудностей при попытке ввода файла .doc.Мне удалось использовать оператор Open и оператор Line Input для извлечения из файла .txt, но только излишнюю тряпку, когда я пробую файл .doc.

Я включил две ссылки снимков экрана.

Первый снимок экрана - образец моих входных данных.
http://img717.imageshack.us/i/input.jpg/

Второйснимок экрана с моим желаемым выводом.
http://img3.imageshack.us/i/outputg.jpg/

Я разработал алгоритм того, чего я хочу достичь.У меня просто проблемы с кодированием.Ниже псевдокод, который я разработал.

    Variables:
         string     line = blank
         series_title = blank
         folder_title = blank

         int  series_number = 0
              box_number = 0
              folder_number = 0
              year = 0
    do while the <end_of_document> has not been reached
        input line
        If the first word in the line is “series” 
            store <series_number>
            store the string after “:”into the <series_title>
        end if
        call parse_box(rest of line)
        output < series_number > <series_title> < box_number > < folder_number ><folder_title> <year>
    end do while

    function parse_box(current line)
        If the first word in the line is “box” 
            store <box_number>
        end if
        call parse_folder(rest of line)
    end function

    function parse_folder(current line)
        If first word is “Folder”
            store <folder_number>
        end if
        call parse_folder_title(rest of line)
    end function

    function parse_folder_title_and_year(current line)
        string temp_folder_title
        store everything as <temp_folder_title> until end of line
        if last word in <temp_folder_title> is a year
            store <year>
        end if
        if < temp_folder_title> is empty/blank
            //use <folder_title> from before
        else
            <folder_title> is < temp_folder_title> minus <year>
        end if
    end parse_folder_title_and_year

Заранее благодарим за всю вашу помощь и предложения

1 Ответ

4 голосов
/ 17 июня 2011

Команды fopen и input обычно работают только с простыми текстовыми файлами (вещи, которые вы можете прочитать в Блокноте).Если вы хотите программно читать документы Microsoft Word, вам нужно добавить библиотеку объектов Microsoft Word 12.0 (или самую последнюю версию в вашей системе) к ссылкам VBAProject и использовать Word API для открытия и чтения документа.

Dim odoc As Word.Document
Set odoc = oWrd.Documents.Open(Filename:=DocumentPath, Visible:=False)

Dim singleLine As Paragraph
Dim lineText As String

For Each singleLine In ActiveDocument.Paragraphs
    lineText = singleLine.Range.Text
    'Do what you've gotta do
Next singleLine

Слово не имеет понятия «Линии».Вы можете читать текстовые диапазоны, а также абзацы и предложения.Поэкспериментируйте и найдите, что лучше всего подходит для ввода текста в управляемых блоках.

...