Sub GetEntries()
'Dim Sl$(1000) [COLOR="DarkGreen"]заремил, т.к. пока не пишется[/COLOR]
Dim Pos$
Selection.Find.ClearFormatting
With Selection.Find
.Text = "^d": .Replacement.Text = "": .Forward = True: .Wrap = wdFindContinue: .Format = True [COLOR="DarkGreen"]'Вордовский спецсимвол кода поля (чтобы находилось то, что нужно) [/COLOR]
End With
Selection.Find.Execute
i = 0
Open "D:\Entries.txt" For Append As #1
While Selection.Find.Found
Pos$ = Selection.Text [COLOR="DarkGreen"]'найденная строка[/COLOR]
rem Sl(i) = Pos$ [COLOR="DarkGreen"]'заремил, т.к. пока не пишется[/COLOR]
Print #1, Pos$
i = i + 1
Selection.Find.Execute
Wend
rem Open "D:\Down\CPK\Slovar_Macros\Entries.txt" For Output As #1
rem Print #1, Sl$() [COLOR="DarkGreen"]''''' в этом месте ругается, т.к. не понимает запись[/COLOR]
Close #1
End Sub
Можно ли объявить документ массивом?
И есть процедура, которая должна обращаться к этому словарю как к массиву данных. Как мне указать идентификатор этого словаря/массива? Или надо считывать построчно и формировать массив из строк словаря уже в процессе выполнения макроса, загоняя каждую строчку в элемент массива?
Спасибо.
Цитата: Dmitry2064
... Или надо считывать построчно и формировать массив из строк словаря уже в процессе выполнения макроса, загоняя каждую строчку в элемент массива?...
Да, так и придётся делать. Только использовать для такой работы удобнее не массив, а специальный объект из состава WSH, который именуется [color=blue]Dictionary[/color].
Поищите на форуме темы по этому ключевому слову.
Цитата: Dmitrii
Да, так и придётся делать. Только использовать для такой работы удобнее не массив, а специальный объект из состава WSH, который именуется [color=blue]Dictionary[/color].
Поищите на форуме темы по этому ключевому слову.
Поищите на форуме темы по этому ключевому слову.
Интересно, надо будет почитать, какие там скрываются возможности. Спасибо.
Я собираю "избранные" строчки (As String) из исходного файла и потом их пишу в новый файл то мере нахождения.
А можно ли из этих нахождений сначала сформировать массив, а потом уже его (массив) сразу записать в файл?
Вот как у меня сделано на данном этапе:
Код:
Т.е. имеет ли смысл пытаться сначала загонять в массив, а потом скопом писать в файл? Станет ли от этого код более оптимальным? Или можно оставить и так?
Код:
Sub Example()
Dim strDict As String
Dim hFile As Long
Const strFile = "C:\Temp\Test.txt"
strDict = vbNullString
i = 1
Do
strDict = strDict & CStr(i) & vbCrLf
i = i + 1
Loop While i < 11
hFile = FreeFile
Open strFile For Output Access Write As hFile
Print #hFile, strDict
Close hFile
End Sub
Dim strDict As String
Dim hFile As Long
Const strFile = "C:\Temp\Test.txt"
strDict = vbNullString
i = 1
Do
strDict = strDict & CStr(i) & vbCrLf
i = i + 1
Loop While i < 11
hFile = FreeFile
Open strFile For Output Access Write As hFile
Print #hFile, strDict
Close hFile
End Sub