Разбивка строки в Word (VBA)

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
shabbiness
Сообщения: 3
Зарегистрирован: 21 июл 2009, 21:26

В открытом документе находится несколько произвольных строк. В каждой строке по три слова, разделенных ;
Подскажите, пожалуйста, как выбрать конкретную строку (например, пятую), закинуть первое слово в один массив, второе слово в другой массив, третье слово в третий массив.
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

shabbiness писал(а):В открытом документе находится несколько произвольных строк. В каждой строке по три слова, разделенных ;
Подскажите, пожалуйста, как выбрать конкретную строку (например, пятую), закинуть первое слово в один массив, второе слово в другой массив, третье слово в третий массив.
Вам сюда...
http://wordexpert.ru
С уважением...
shabbiness
Сообщения: 3
Зарегистрирован: 21 июл 2009, 21:26

спасибо за ссылку, нашёл много чего полезного, но ответа на свой вопрос не нашёл. Нашёл с разделителем пробелом - но код не работает, а как задать вопрос на этом ресурсе - не понятно.
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

shabbiness,
1) Что вы понимаете под строкой? Word оперирует параграфами, cловами, символами но не строками. Термин строка применяется к таблицам.
Имеется ли в виду часть текста ограниченная кодами 10,11,13 (и т.п) и/или началом/концом текста?
2) Что означает "находится произвольная строка" ? n-я ?
Или вы имеете в виду переход к строке по конструкции типа:

Код: Выделить всё

Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=5, Name:=""
?
3) Что означает "закинуть слово в массив" ? Посимвольно записать?

Чётче нужно формулировать вопросы.
Андрей Энтелис,
aentelis.livejournal.com
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

вот ещё хороший ресурс

http://www.citforum.ru/programming/vb/vba_word/
shabbiness
Сообщения: 3
Зарегистрирован: 21 июл 2009, 21:26

1) Что вы понимаете под строкой? Word оперирует параграфами, cловами, символами но не строками. Термин строка применяется к таблицам.
Под строкой я подразумевал последовательность символов, грубо говоря, от home до end. Я думал, что итак будет понятно.
2) Что означает "находится произвольная строка" ? n-я ?
Означает, что в тексте n строк, нужно выбрать от 1 до n.
3) Что означает "закинуть слово в массив" ? Посимвольно записать?
Нет, не посимвольно, целиком.
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

1) Непонятно что означает "от home до end" ? Имеется в виду нажатие клавиш
в активном документе ? Вы уверены что правильно сформулировали вопрос и вас действительно интересуют строки внешнего представления документа (без связи
с данными). Поясню, что я имею в виду.
a) aaaaaaaaaaaaaaaaaaa;bbbbbbbbbbbbbbbb;cccccccccccccccccccccc\n ddddddddd
b) aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;bbbbbbbbbbbbbbbbbbbbbbbbb;ccccccccccccccccccccc
ddddddddddddddddd

в варианте a) переход на новую строку осуществляется поле кода chr(13)
в варианте b) 2-я строка начинается без специального разделителя

2) Если " в тексте n строк, нужно выбрать от 1 до n", то это означает что выбирается весь текст что противоречит
Подскажите, пожалуйста, как выбрать конкретную строку (например, пятую),
Или мы должны догадаться
что обработка вам нужна для каждой строки?

3) Вы имеете в виду a(1) = первое слово , b(1) = второе слово, c(1) = третье слово ?
закинуть первое слово в один массив, второе слово в другой массив, третье слово в третий массив.
Или всё таки не в "другой массив" а в другой элемент массива ?
Резюмируя ещё раз : "нужно чётче формулировать вопрос"

Если предположить, что вам нужно обработать документ каждая строка которого
представляет собой параграф и содержит 3 слова разделённых ";" , то это будет выглядеть так:

Код: Выделить всё

Public Sub Example()
    Dim w As Range
    Dim a(1 To 3) As String
    Dim i As Long
    i = 1
    With ActiveDocument
        For i = 1 To .Words.Count Step 6
            a(1) = .Words(i)
            a(2) = .Words(i + 2)
            a(3) = .Words(i + 4)
            ' выводим очередные 3 слова как элементы массива a
            Debug.Print a(1), a(2), a(3)
        Next i
    End With
End Sub
Андрей Энтелис,
aentelis.livejournal.com
Ответить