В открытом документе находится несколько произвольных строк. В каждой строке по три слова, разделенных ;
Подскажите, пожалуйста, как выбрать конкретную строку (например, пятую), закинуть первое слово в один массив, второе слово в другой массив, третье слово в третий массив.
Разбивка строки в Word (VBA)
Модератор: Naeel Maqsudov
Вам сюда...shabbiness писал(а):В открытом документе находится несколько произвольных строк. В каждой строке по три слова, разделенных ;
Подскажите, пожалуйста, как выбрать конкретную строку (например, пятую), закинуть первое слово в один массив, второе слово в другой массив, третье слово в третий массив.
http://wordexpert.ru
С уважением...
-
- Сообщения: 3
- Зарегистрирован: 21 июл 2009, 21:26
спасибо за ссылку, нашёл много чего полезного, но ответа на свой вопрос не нашёл. Нашёл с разделителем пробелом - но код не работает, а как задать вопрос на этом ресурсе - не понятно.
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
shabbiness,
1) Что вы понимаете под строкой? Word оперирует параграфами, cловами, символами но не строками. Термин строка применяется к таблицам.
Имеется ли в виду часть текста ограниченная кодами 10,11,13 (и т.п) и/или началом/концом текста?
2) Что означает "находится произвольная строка" ? n-я ?
Или вы имеете в виду переход к строке по конструкции типа: ?
3) Что означает "закинуть слово в массив" ? Посимвольно записать?
Чётче нужно формулировать вопросы.
1) Что вы понимаете под строкой? Word оперирует параграфами, cловами, символами но не строками. Термин строка применяется к таблицам.
Имеется ли в виду часть текста ограниченная кодами 10,11,13 (и т.п) и/или началом/концом текста?
2) Что означает "находится произвольная строка" ? n-я ?
Или вы имеете в виду переход к строке по конструкции типа:
Код: Выделить всё
Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=5, Name:=""
3) Что означает "закинуть слово в массив" ? Посимвольно записать?
Чётче нужно формулировать вопросы.
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com
-
- Сообщения: 3
- Зарегистрирован: 21 июл 2009, 21:26
Под строкой я подразумевал последовательность символов, грубо говоря, от home до end. Я думал, что итак будет понятно.1) Что вы понимаете под строкой? Word оперирует параграфами, cловами, символами но не строками. Термин строка применяется к таблицам.
Означает, что в тексте n строк, нужно выбрать от 1 до n.2) Что означает "находится произвольная строка" ? 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 слова разделённых ";" , то это будет выглядеть так:
в активном документе ? Вы уверены что правильно сформулировали вопрос и вас действительно интересуют строки внешнего представления документа (без связи
с данными). Поясню, что я имею в виду.
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
aentelis.livejournal.com