Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

Код:

Dim S As String

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

нее...не так..вот код (не весь правда):
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, 19:10   #4
Miha-nikus
 
Регистрация: 10.05.2018
Сообщений: 9
Репутация: 10
По умолчанию

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

Цитата:
Сообщение от 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, 13:47   #6
Miha-nikus
 
Регистрация: 10.05.2018
Сообщений: 9
Репутация: 10
По умолчанию

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

Цитата:
вопрос то в том как мне взять диапазон строк с 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, 14:44   #8
Miha-nikus
 
Регистрация: 10.05.2018
Сообщений: 9
Репутация: 10
По умолчанию

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

Цитата:
Сообщение от 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, 16:22   #10
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,746
Репутация: 2097
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объявление переменной Алексей_2012 Общие вопросы Delphi 1 06.11.2016 03: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 23:16


19:02.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru