Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 10 ]
- UserSuperPupsik
- рядовой
- Неактивен
- Зарегистрирован: 05.12.2013
- Сообщений: 6
Тема: Копировать строки в массив
Здраствуйте.
Юрий М(с этого сайта: внешняя ссылка)
посоветовал этот сайт: http://wordexpert.ru/
Вот мой вопрос:
Как можно скопировать все строки файла docx
в 1-мерный массив MyArray()???
Должно получиться так:
MyArray(1)="Это 1-ая строка"
MyArray(2)="Это 2-ая строка"
...
MyArray(10)="Это последняя строка"

- shanemac51
- генерал-полковник
- Неактивен
- Зарегистрирован: 05.03.2012
- Сообщений: 467
- Поблагодарили: 119
Re: Копировать строки в массив
строка или параграф(абзац)
- UserSuperPupsik
- рядовой
- Неактивен
- Зарегистрирован: 05.12.2013
- Сообщений: 6
Re: Копировать строки в массив
В чём разница?
Например дан текст:
Это 1-ая строка
Это 2-ая строка, да.
Это последняя строка, да.
А должно получится так:
MyArray(1)=" Это 1-ая строка"
MyArray(2)="Это 2-ая строка, да"
...
MyArray(10)="Это последняя строка, да"
Думаю сейчас прояснилось.
Если нет, то Вы мне объясните в чём разница, пожалуйста. 
- shanemac51
- генерал-полковник
- Неактивен
- Зарегистрирован: 05.03.2012
- Сообщений: 467
- Поблагодарили: 119
Re: Копировать строки в массив
Перед фрагментом текста с новой ориентацией страниц и после него будут автоматически вставлены разрывы раздела . Если документ уже разбит на разделы, можно щелкнуть в любом месте нужного раздела (либо выделить несколько разделов), а затем изменить ориентацию страниц только в выбранных разделах.
===
ПАРАГРАФ=1
строк-5
- UserSuperPupsik
- рядовой
- Неактивен
- Зарегистрирован: 05.12.2013
- Сообщений: 6
Re: Копировать строки в массив
shanemac51, извините я старался, но Вас не понял.При чём тут ориентация, разрывы и разделы
Дело в том, что я работал всегда с excel vba.
А о word vba ничего не знаю.
Можете дать хоть какой-нибудь примерчик???Чтобы было ясно о чём идет речь.
Спасибо за внимание!
- UserSuperPupsik
- рядовой
- Неактивен
- Зарегистрирован: 05.12.2013
- Сообщений: 6
Re: Копировать строки в массив
Вот мой файл. Там есть (переходы на следующую строку)- простой случай
Можете туда положить макрос?
Post's attachments1.docm 10.04 Кб, 4 скачиваний с 2013-12-06
You don't have the permssions to download the attachments of this post.
- UserSuperPupsik
- рядовой
- Неактивен
- Зарегистрирован: 05.12.2013
- Сообщений: 6
Re: Копировать строки в массив
Вот мой вопрос:
Как можно скопировать все строки файла docx
в 1-мерный массив MyArray()???
Должно получиться так:
MyArray(1)="Это 1-ая строка"
MyArray(2)="Это 2-ая строка"
MyArray(10)="Это последняя строка"
Примечание: Новая Строка начинается после (перехода на следующую строку)(или на жатия "enter")
Ответьте пожалуйста! 
- aap77
- генерал-полковник
- Неактивен
- Зарегистрирован: 12.09.2011
- Сообщений: 925
- Поблагодарили: 243
Re: Копировать строки в массив
Вот функция для записи одномерного массива строк документа.
Public Function AllStroke_inArray() As Variant
Dim AWind As Window
Dim APane As Pane
Dim Pages As Pages
Dim Page As Page
Dim Rect As Rectangle
Dim LineCount As Long
Dim lst() As Variant
Dim Line As Line
Set AWind = Application.ActiveWindow
Set APane = AWind.ActivePane
Set Pages = APane.Pages
'---------------------------------------------------------------------
For Each Page In Pages
If Page.Rectangles.Count = 1 Then
Set Rect = Page.Rectangles(1)
Else
Set Rect = Page.Rectangles(2)
End If
LineCount = LineCount + Rect.Lines.Count
Next Page
LineCount = LineCount - 1
'---------------------------------------------------------------------
ReDim Preserve lst(0 To LineCount)
'---------------------------------------------------------------------
i = -1
For Each Page In Pages
If Page.Rectangles.Count = 1 Then
Set Rect = Page.Rectangles(1)
Else
Set Rect = Page.Rectangles(2)
End If
For Each Line In Rect.Lines
i = i + 1
lst(i) = Line.Range.Text
Next Line
Next Page
'---------------------------------------------------------------------
AllStroke_inArray = lst
End Function
Учтите что массив это область хранения информации, поэтому может быть функцией (Function) для присвоения ее другим переменным в других процедурах, либо свойством какого-либо класса (Property).
- aap77
- генерал-полковник
- Неактивен
- Зарегистрирован: 12.09.2011
- Сообщений: 925
- Поблагодарили: 243
Re: Копировать строки в массив
UserSuperPupsik, если возникают вопросы пишите.
- UserSuperPupsik
- рядовой
- Неактивен
- Зарегистрирован: 05.12.2013
- Сообщений: 6
Re: Копировать строки в массив
aap77, Даже и не знаю что сказать, Вы весьма проницательный человек, Спасибо, за Ваш труд!!!
Я немного изменил код под собственные нужды:
Public lst() As Variant
Public Function CopyToArray() As Variant
Dim AWind As Window
Dim APane As Pane
Dim Pages As Pages
Dim Page As Page
Dim Rect As Rectangle
Dim LineCount As Long
'Dim lst() As Variant
Dim Line As Line
Set AWind = Application.ActiveWindow
Set APane = AWind.ActivePane
Set Pages = APane.Pages
'---------------------------------------------------------------------
For Each Page In Pages
If Page.Rectangles.Count = 1 Then
Set Rect = Page.Rectangles(1)
Else
Set Rect = Page.Rectangles(2)
End If
LineCount = LineCount + Rect.Lines.Count
Next Page
LineCount = LineCount - 1
'---------------------------------------------------------------------
ReDim Preserve lst(0 To LineCount)
'---------------------------------------------------------------------
i = -1
For Each Page In Pages
If Page.Rectangles.Count = 1 Then
Set Rect = Page.Rectangles(1)
Else
Set Rect = Page.Rectangles(2)
End If
For Each Line In Rect.Lines
i = i + 1
lst(i) = Line.Range.Text
Next Line
Next Page
'---------------------------------------------------------------------
'CopyToArray = lst
End Function
Public Sub Macros1()
CopyToArray 'копировать все строки в массив lst, внимание индексация начинается с 0
MsgBox (lst(2)) 'вывести на экран 3-ю строку
End Sub

Сообщений [ 10 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Копировать строки в массив
Постоянно работая с теми либо иными инструментами и выполняя однотипные задачи, пользователь любой программы вырабатывает со временем способы наиболее рационального их исполнения. Наш сайт о Microsoft Office Word даст ответ про: как нумеровать страницы в ворде.
Но, сталкиваясь с задачей другого типа, часто оказывается в тупике и вынужден обращаться за помощью. Наш сайт о Microsoft Office Word даст ответ про: применить формулу умножения в ворде.
На форуме сайта Ворд Эксперт пользователи различных версий Ворда делятся друг с другом вариантами решений привычных для них операций. Наш сайт о Microsoft Office Word даст ответ про: комбинация клавиш открытие буфера обмена в word.
При этом то, что кажется вам самим собой разумеющимся может быть неизвестно другому участнику и наоборот, поэтому обмен получается очень взаимовыгодным. На портале о Microsoft Office Word вы узнаете про: как проставить нумерацию в таблице.
Здесь обсуждаются настройки, форматирование документов, например, удаление лишних пробелов, оформление содержания и придания требуемых стилей разделам автоматически и так далее. Наш сайт о Microsoft Office Word даст ответ про: word а1.
Очень много внимания уделено принципам написания макросов и шаблонов, изложенным очень доступно, приведены готовые варианты. На портале о Microsoft Office Word вы узнаете про: скопировать таблицу из word.
Информацию можно отыскать по всем версиям приложения. Также можно оставить заявку на выполнение любой работы, связанный с Вордом. На портале о Microsoft Office Word вы узнаете про: убрать в word колонтитулы раздел.
Найдете на форуме и ответы на базовые вопросы, и дополнительный список источников. Обсудить проблемы, прямо не касающиеся Ворда, и оставить отзыв можно в разделе «Общение». На портале о Microsoft Office Word вы узнаете про: вставить кнопку в ворде 2007.