Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: Как перенести из Word-а в Excel с помощью VBA кое- Добавлено: 24.04.08 14:04  

Автор вопроса:  ibm
Господа, добрый день!
Помогите решить задачку. Есть документ в ворде (диссертация), в тексте этого документа полно ссылок на источники литературы. Ссылка выглядит так: [какое-то число]. "Какое-то число" - это число от 1 до 999. Какие-то числа пропущены.. Нужно написать програмку, которая пробежится по тексту, соберет все "какие-то числа" и кинет их в столбик в эксель или в текстовый файл..
Как это сделать? Только, пожалуйста, не пишите логику работы программы - она ясна. У меня проблема со знанием операторов VBA, забились за давностью..

Спасибо

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #1
Добавлено: 24.04.08 14:28
    Просто пробежать по всем элементам коллекции ThisDocument.Characters и собрать в массив всё содержимое квадратных скобок.

Ответить

Номер ответа: 2
Автор ответа:
 ibm



Вопросов: 1
Ответов: 4
 Профиль | | #2 Добавлено: 24.04.08 15:14
Спасибо. Но.. это Вам просто, не мне. Я не знаю? как собрать в массив все значения в квадратных скобках.. не знаю как потом из получившегося массива вставить значения в excel..

Ответить

Номер ответа: 3
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #3
Добавлено: 24.04.08 16:23
Почти закончил.

Текст документа в Word 2003:

Qasdfko ajsdg kljasdg [345] wery lkjwsdgl kjsdfgsdfgh. Длордлордло [998].

Цукжплоывап цукпрждлоц. Ывапмдлоысмрирц цукпвыа [556]. Цкупдлоыврадплор [867] ывпдлоывапр всмиздшщгуц. Ывапдюлывап ывапдлоыврап ывапрдлыова. [777] цыдплорывап цупдлорывап вапо. Ывапдлоывапдол ывапждлоывап в [555].

[1] sdflgkjsdhfg – фывпдлофрывпдор фывпдлофырвап ывапываорывтфь.

[12] ывадпрлщор – фывпдлофрывпдор фывпдлофырвап ывапываорывтфь.

Ответить

Номер ответа: 4
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #4
Добавлено: 24.04.08 16:24
Sub Макрос1()

' 24.04.2008 Макрос написал Adam Smith

Dim tmpLng As Long
Dim tmpInt As Integer
Dim tmpStr As String

With ThisDocument
    For tmpLng = 1 To .Words.Count - 1
        If .Words(tmpLng).Text = "[" Then tmpStr = tmpStr & .Words(tmpLng + 1).Text & vbCrLf
    Next
    MsgBox "Результаты поиска:" & vbCrLf & vbCrLf & tmpStr, vbInformation, vbOKOnly
End With

End Sub

Ответить

Номер ответа: 5
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #5
Добавлено: 24.04.08 16:26
Книгу в Эксель новую будеш создавать или использовать уже существующую?

Ответить

Номер ответа: 6
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #6
Добавлено: 24.04.08 16:30
    Не советовал бы через слова — могут отсутствовать пробелы по ошибке. Если нет в тексте чистых цифр в скобках, то более правильно разобрать текст по символам. Заодно и на цифры проконтролтровать.

Ответить

Номер ответа: 7
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #7
Добавлено: 24.04.08 16:35
Мысль правильная, только работать будет на порядок медленнее. Я просто подумал если человек диссертацию пишет то элементарные ошибки в тексте наверное исправил. Пишу как проще :)

Ответить

Номер ответа: 8
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #8
Добавлено: 24.04.08 16:37
Корпорация чё молчиш? Макрос в документ вписать сможеш? Оперативнее ато мне бежать скоро.

Ответить

Номер ответа: 9
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #9
Добавлено: 24.04.08 17:04
Вот те.

Sub Макрос1()

' 24.04.2008 Макрос написал Adam Smith

' код не оптимизирован притензии не принимаются :)

Dim tmpLng As Long
Dim tmpStr As String

With ThisDocument
    For tmpLng = 1 To .Words.Count - 1
        If .Words(tmpLng).Text = "[" Then tmpStr = tmpStr & .Words(tmpLng + 1).Text & vbCrLf
    Next
End With

'MsgBox "Результаты поиска:" & vbCrLf & vbCrLf & tmpStr, vbInformation, vbOKOnly

Dim ObjectExcel As Object
Dim tmpArr() As String
Dim tmpInt As Integer

tmpArr = Split(tmpStr, vbCrLf)

Set ObjectExcel = CreateObject("Excel.Application";)
ObjectExcel.Visible = True
ObjectExcel.Workbooks.Open FileName:=";D:\Мои_документы\Книга1.XLS"

With ObjectExcel.ActiveSheet
    For tmpInt = 0 To UBound(tmpArr)
        .Cells(2 + tmpInt, 2).Value = tmpArr(tmpInt)
    Next
End With

ObjectExcel.ActiveWorkbook.Close Save
ObjectExcel.Quit
Set ObjectExcel = Nothing

End Sub

Ответить

Номер ответа: 10
Автор ответа:
 ibm



Вопросов: 1
Ответов: 4
 Профиль | | #10 Добавлено: 24.04.08 17:17
Ребята, спасибо Вам огромное!!!

Адам Смит, спасибо!

Корпорация..))

Ответить

Номер ответа: 11
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #11
Добавлено: 25.04.08 09:44
Нормальные люди пишут диссерации в TeX и не мучаются с такими вещами, как список литературы, ссылки и т.п.

Ответить

Номер ответа: 12
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #12
Добавлено: 25.04.08 10:21
Жаль что такой УМИЩЕ направлен на унижение окружающих.

Ответить

Номер ответа: 13
Автор ответа:
 ibm



Вопросов: 1
Ответов: 4
 Профиль | | #13 Добавлено: 25.04.08 11:08
Adam Smith, у меня файл экселя пустой получился.. Я не очень понимаю, что такое words в терминах VB? Ссылки сделаны вот так в тексте: "Слава КПСС [100]". А в Вашем коде слово - это "[". Правильно ли я понимаю, что для корректной работы скрипта нужно, чтобы после "[" шел пробел?

2Sharp: а что такое TeX? "Я как бы это сказать первый раз слышу такое слово" (c) Незнайка на луне

Спасибо.

Ответить

Номер ответа: 14
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #14
Добавлено: 25.04.08 11:46
"От оно чё михалыч!"
соберет все "[какие-то числа]" и кинет их в столбик


Вот такбы сразу, надо чтоб в ексель попали не циферки из квард. скоб. а полностью "Слава КПСС [100]", верно?

Эт немного другая история. Самому интересно VBA в памяти освежить. Вообще знаеш создай документ Word с парой страничек из диссертации, и чтобы там ссылок побольше :)
пришли на емайл, я макрос напишу и сюда скину.

Words - эт массив слов документа. Качай, учи VBA еси интересно http://rapidshare.de/files/11204069/VBA_for_dummers.rar.html

Ответить

Номер ответа: 15
Автор ответа:
 ibm



Вопросов: 1
Ответов: 4
 Профиль | | #15 Добавлено: 25.04.08 12:21
Adam Smith, извините, если я вас запарил.. Нет, Вы все правильно сначала поняли, нужно именно содержимое квадратных скобок вытащить, т.е., например, есть такой текст:

Добрый день [100] уважаемые участники форума!
Есть [очень большая] проблема!
Помогите [102, c.100].
Спасибо.

В экселевский файл нужно выкинуть в столбик:

100
очень большая
102, с.100

Я запускаю Вашу программу, но файл xls получается пустой. Может быть версия Excel-я 2007, в этом все дело?

Еще раз большое спасибо.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам