В Word мы можем выделить один фрагмент текста, зажать Ctrl, выделить другой и дальше делать с ними что-нибудь (раскрасить или скопировать-вставить). А как сделать то же самое в коде макроса?
При таком коде копируется только второй фрагмент (между "р2" и "р3")
[vba]
Код
Sub Выписка() Dim r Set r = ActiveDocument.Range With r.Find .ClearFormatting .Text = "ОАО*р1" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True If .Execute Then ActiveDocument.Range(r.Start + 0, r.End - 2).Select Selection.Copy Else MsgBox "Текст не найден!", vbExclamation End If End With
With r.Find .ClearFormatting .Text = "р2*р3" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True If .Execute Then ActiveDocument.Range(r.Start + 3, r.End - 3).Select Selection.Copy Else MsgBox "Текст не найден!", vbExclamation End If End With
В Word мы можем выделить один фрагмент текста, зажать Ctrl, выделить другой и дальше делать с ними что-нибудь (раскрасить или скопировать-вставить). А как сделать то же самое в коде макроса?
При таком коде копируется только второй фрагмент (между "р2" и "р3")
[vba]
Код
Sub Выписка() Dim r Set r = ActiveDocument.Range With r.Find .ClearFormatting .Text = "ОАО*р1" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True If .Execute Then ActiveDocument.Range(r.Start + 0, r.End - 2).Select Selection.Copy Else MsgBox "Текст не найден!", vbExclamation End If End With
With r.Find .ClearFormatting .Text = "р2*р3" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True If .Execute Then ActiveDocument.Range(r.Start + 3, r.End - 3).Select Selection.Copy Else MsgBox "Текст не найден!", vbExclamation End If End With
В Word мы можем выделить один фрагмент текста, зажать Ctrl, выделить другой и дальше делать с ними что-нибудь (раскрасить или скопировать-вставить). А как сделать то же самое в коде макроса?
В частности, как раз нельзя программно выделить несколько диапазонов, только через пользовательский интерфейс и только при помощи мышки и Ctrl (только одной клавиатурой тоже нельзя). При этом диапазон Selection.Range будет ссылаться только на один последний выделенный фрагмент. С самим же Selection, выделенным заранее вручную, можно программно выполнить ряд привычных действий: изменение шрифта, копирование, поиск и т.п.
В Word мы можем выделить один фрагмент текста, зажать Ctrl, выделить другой и дальше делать с ними что-нибудь (раскрасить или скопировать-вставить). А как сделать то же самое в коде макроса?
В частности, как раз нельзя программно выделить несколько диапазонов, только через пользовательский интерфейс и только при помощи мышки и Ctrl (только одной клавиатурой тоже нельзя). При этом диапазон Selection.Range будет ссылаться только на один последний выделенный фрагмент. С самим же Selection, выделенным заранее вручную, можно программно выполнить ряд привычных действий: изменение шрифта, копирование, поиск и т.п.Gustav