1

Тема: Копировать строки в массив

Здраствуйте.
Юрий М(с этого сайта: внешняя ссылка)
посоветовал этот сайт: http://wordexpert.ru/

Вот мой вопрос:
Как можно скопировать все строки файла docx
в 1-мерный массив MyArray()???

Должно получиться так:

MyArray(1)="Это 1-ая строка"
MyArray(2)="Это 2-ая строка"
...
MyArray(10)="Это последняя строка"

wink

2

Re: Копировать строки в массив

строка или параграф(абзац)

3

Re: Копировать строки в массив

В чём разница?
Например дан текст:

      Это 1-ая строка
Это 2-ая строка, да.
Это последняя строка, да.

А должно получится так:

MyArray(1)="      Это 1-ая строка"
MyArray(2)="Это 2-ая строка, да"
...
MyArray(10)="Это последняя строка, да"

Думаю сейчас прояснилось.
Если нет, то Вы мне объясните в чём разница, пожалуйста. wink

4

Re: Копировать строки в массив

Перед фрагментом текста с новой ориентацией страниц и после него будут автоматически вставлены разрывы раздела . Если документ уже разбит на разделы, можно щелкнуть в любом месте нужного раздела (либо выделить несколько разделов), а затем изменить ориентацию страниц только в выбранных разделах.
===
ПАРАГРАФ=1
строк-5

5

Re: Копировать строки в массив

shanemac51, извините я старался, но Вас не понял.При чём тут ориентация, разрывы и разделы smile
Дело в том, что я работал всегда с excel vba.
А о word vba ничего не знаю.
Можете дать хоть какой-нибудь примерчик???Чтобы было ясно о чём идет речь.
Спасибо за внимание!

6

Re: Копировать строки в массив

Вот мой файл. Там есть (переходы на следующую строку)- простой случай smile
Можете туда положить макрос?

Post's attachments

1.docm 10.04 Кб, 4 скачиваний с 2013-12-06 

You don't have the permssions to download the attachments of this post.

7

Re: Копировать строки в массив

Вот мой вопрос:
Как можно скопировать все строки файла docx
в 1-мерный массив MyArray()???

Должно получиться так:
MyArray(1)="Это 1-ая строка"
MyArray(2)="Это 2-ая строка"
MyArray(10)="Это последняя строка"

Примечание: Новая Строка начинается после (перехода на следующую строку)(или на жатия "enter")

Ответьте пожалуйста! smile

8

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).

9

Re: Копировать строки в массив

UserSuperPupsik, если возникают вопросы пишите.

10

Re: Копировать строки в массив

aap77, Даже и не знаю что сказать, Вы весьма проницательный человек, Спасибо, за Ваш труд!!! big_smile
Я немного изменил код под собственные нужды:

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

wink