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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 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
Сообщений: 248
По умолчанию

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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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 10:23
Шаблоны - нужно создать объект класса abc в котором вместо aa использовался бы объект класса fff? Farrel Общие вопросы C/C++ 2 13.11.2010 17:37
добавить в объект объект. the_deer_one Общие вопросы C/C++ 7 10.09.2010 12:17