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

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

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


Ответ
 
Опции темы
Старый 22.03.2020, 21:55   #1
Smagin1982
Новичок
Джуниор
 
Регистрация: 24.04.2017
Сообщений: 1
По умолчанию Как скопировать объект VBA

Добрый день, нужна помощь. Создаю макрос, который добавляет текстовое поле (надпись) из текста, который содержится на данной странице с удалением каждого 3 слова в тексте. Проблема в том, что переменная типа Range - Stext принимает диапазон выделенной страницы, при этом манипуляции в данном диапазоне влияют на основной текст в документе, хотя по идее должно изменяться свойство Selection.Text и основной текст не должен меняться.

Как правильно скопировать объект или как разделить эти переменные ? Спасибо.

'===========Макрос
Sub InsertTextBox()
Dim aShape As Shape
Dim counter As Long, y As Long
Dim Stext As Range

NumPages = ActiveDocument.ComputeStatistics(wd StatisticPages)

For i = 1 To NumPages Step 1

Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:=i
Selection.GoTo What:=wdGoToBookmark, Name:="\page"
Set Stext = Selection.Range.Duplicate

Dim w As word.Range
For Each w In Stext.Words

If Not w.text Like "[А-Яа-яЁёA-Za-z]*" Then
GoTo metka_NextWord
End If

If counter = 3 Then
w.Delete
counter = 0
End If
counter = counter + 1
metka_NextWord:
Next

Set aShape = ActiveDocument.Shapes.AddTextbox _
(Orientation:=msoTextOrientationHor izontal, _
Left:=0, Top:=0, Width:=200, Height:=200)

With aShape
.TextFrame.TextRange = Stext.text
End With
Next i
End Sub
Smagin1982 вне форума Ответить с цитированием
Старый 05.04.2020, 00:15   #2
Ecosasha
Форумчанин
 
Регистрация: 22.05.2009
Сообщений: 240
По умолчанию

Если так попробовать?
Код:
Dim R As Range
Set R = ActiveDocument.Range
'либо 
'Dim R As Range
'Set R = ActiveDocument.Range(0, 0)
Ecosasha вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JSON положить объект в объект Dozent Общие вопросы Delphi 7 30.03.2015 12:57
Как один динамический объект скопировать в другой? i-programmer Visual C++ 1 22.03.2015 16:12
Как сделать так, чтобы при наведении мышкой на объект, который находится под другим, этот объект выходил на первый план? Zaza7 HTML и CSS 3 17.01.2013 09:23
Шаблоны - нужно создать объект класса abc в котором вместо aa использовался бы объект класса fff? Farrel Общие вопросы C/C++ 2 13.11.2010 17:37
добавить в объект объект. the_deer_one Общие вопросы C/C++ 7 10.09.2010 11:17


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840