Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2018, 14:52   #1
Miha-nikus
 
Регистрация: 10.05.2018
Сообщений: 9
По умолчанию Объявление переменной

Добрый день! уж помогите плиз, нужно объявить строку в переменную и работать только с 5 строки по 50 (дальше будет происходить поиск и замена слов только в этом диапазоне). Как правильно описать объявление переменной для строк?
Miha-nikus вне форума Ответить с цитированием
Старый 16.10.2018, 15:13   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Код:
Dim S As String
Так?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.10.2018, 17:59   #3
Miha-nikus
 
Регистрация: 10.05.2018
Сообщений: 9
По умолчанию

нее...не так..вот код (не весь правда):
Dim x, i&
Dim j As String

For j = 5 To 50
With ActiveDocument.Range.Find
.ClearFormatting
...
...
...
End With
Do
Selection.Find.Execute
If Not Selection.Find.Found Then Exit Do
Selection.Delete
Loop
Next
End Sub


Пишет что "J" - type mismatch....
Miha-nikus вне форума Ответить с цитированием
Старый 17.10.2018, 18:10   #4
Miha-nikus
 
Регистрация: 10.05.2018
Сообщений: 9
По умолчанию

В идеале то конечно нужно чтобы брался диапазон текста с 5-й по 50-ю строку, заносился этот кусок в массив в оперативную память, далее происходили действия по поиску и замене слов и выводился получившийся текст, допустим, в окно формы, не меняя при этом изначальный текст на странице самого документа....как то так...хотелось бы услышать подсказку...спасибо.
Miha-nikus вне форума Ответить с цитированием
Старый 17.10.2018, 22:37   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Miha-nikus Посмотреть сообщение
Пишет что "J" - type mismatch....
и правильно пишет.

Цитата:
Сообщение от Miha-nikus Посмотреть сообщение
For j = 5 To 50
ну Вы же переменную j используете как параметр цикла, присваиваете целочисленное значение, откуда же тут String, тут нужно использовать целые типы.
например,
Код:
Dim j As Integer
или
Код:
Dim j As Long
или
Код:
Dim j&
(это тоже самое, что и As Long

рекомендую ознакомиться Переменные, константы и типы данных

а чем Вас не устроила объявленная у Вас целочисленная переменная i?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.10.2018, 12:47   #6
Miha-nikus
 
Регистрация: 10.05.2018
Сообщений: 9
По умолчанию

Да меня то в принципе то все переменные устраивают вопрос то в том как мне взять диапазон строк с 5 по 50 и дальше работать с этим диапазоном?
Miha-nikus вне форума Ответить с цитированием
Старый 18.10.2018, 13:16   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
вопрос то в том как мне взять диапазон строк с 5 по 50
VBA F1 MoveStart
Цитата:
This example moves the start position of the selection to the beginning of the line (the selection is extended to the start of the line).

Код:
Selection.MoveStart Unit:=wdLine, Count:=-1
Код:
selection.MoveStart unit := wdLine ,count:=5
selection.End:=range.Start;
selection.MoveEnd ..., count:=50-5;

r:=selection.Range;
selection.Find.Execute ...
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 18.10.2018, 13:44   #8
Miha-nikus
 
Регистрация: 10.05.2018
Сообщений: 9
По умолчанию

мммм...спасибо! все понятно...вопросик, а без selection VB не работает? ведь selection он же будет "выделять" текст визуально и визуально с ним работать? или нет?
Miha-nikus вне форума Ответить с цитированием
Старый 18.10.2018, 13:48   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Miha-nikus Посмотреть сообщение
вопрос то в том как мне взять диапазон строк с 5 по 50 и дальше работать с этим диапазоном?
ну, насколько я в курсе, в Word понятие "строка" - вторично, зависит от того, как распределился текст на странице. В отличие от, например, понятия абзац (параграф).

Но раз Word оперирирует строчками, то Вы всё равно можете взять все строки от 5 до 50.
Код:
Sub Макрос12()
    Dim s As String
    ActiveWindow.ActivePane.View.Zoom.PageFit = wdPageFitBestFit
    
    Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=5, Name:=""
    Selection.Find.ClearFormatting

    Selection.MoveDown Unit:=wdLine, Count:=45, Extend:=wdExtend
    s = Selection.Text
    
    MsgBox s 'выведем полученный текст
End Sub
ну, разумеется, весь выделенный текст в MSgBox не поместится, это просто для иллюстрации.

p.s. а вообще, я рискну предположить, что Вы решаете совсем не ту задачу и не так.
ознакомьтесь - Сага о X, Y и Z...

p.p.s. программирование VBA в MS Word я знаю чуть меньше, чем никак. Да и вообще, в отличие от MS Excel внутреннюю объектную модель в Word делали не совсем адекватные люди, поэтому она получилась не очень удобная, понятная и приемлемая. имхо, разумеется. Поэтому людей, которые в этом разбираются и пишут годные макросы для MS Word намного меньше, чем специалистов по VBA MS Excel. Это я к тому, что помощь по макросам ждать дольше, а шансы получить ответ - меньше.

update
извините, пока писал пример, уже опоздал.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.10.2018, 15:22   #10
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
а без selection VB не работает
range.Start MoveStart
range.End MoveEnd
НО...
VBA MoveStart F1
00.JPG
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 18.10.2018 в 15:28.
evg_m на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объявление переменной Алексей_2012 Общие вопросы Delphi 1 06.11.2016 02:13
Определение типа переменной и объявление функции spectrum988 Помощь студентам 8 20.04.2014 22:27
непонятное объявление переменной monolit111 Общие вопросы C/C++ 5 08.10.2011 20:34
Объявление переменной Palomnik1096 Microsoft Office Excel 2 27.03.2011 17:43
Объявление глобальной переменной Grom48 Общие вопросы Delphi 3 19.12.2009 22:16