Sub OutlineToFillColor()
Dim s As Shape
Dim fillColor As Color
Dim outlineColor As Color
' Ïðîâåðÿåì, åñòü ëè âûäåëåííûå îáúåêòû
If ActiveSelection.Shapes.Count = 0 Then
MsgBox "Ïîæàëóéñòà, âûäåëèòå îáúåêòû ñíà÷àëà.", vbExclamation, "Íåò âûäåëåíèÿ"
Exit Sub
End If
' Íà÷èíàåì îïåðàöèþ, êîòîðóþ ìîæíî îòìåíèòü
ActiveDocument.BeginCommandGroup "Outline to Fill Color"
' Ïåðåáèðàåì âñå âûäåëåííûå îáúåêòû
For Each s In ActiveSelection.Shapes
' Ïðîâåðÿåì, åñòü ëè ó îáúåêòà çàëèâêà
If s.Fill.Type <> cdrNoFill Then
' Ïîëó÷àåì öâåò çàëèâêè
Set fillColor = s.Fill.UniformColor
' Óñòàíàâëèâàåì ýòîò æå öâåò äëÿ àáðèñà
Set outlineColor = fillColor
s.Outline.SetProperties Color:=outlineColor
End If
Next s
' Çàâåðøàåì îïåðàöèþ
ActiveDocument.EndCommandGroup
End Sub
спасибоКод:Sub OutlineToFillColor() Dim s As Shape Dim fillColor As Color Dim outlineColor As Color ' Ïðîâåðÿåì, åñòü ëè âûäåëåííûå îáúåêòû If ActiveSelection.Shapes.Count = 0 Then MsgBox "Ïîæàëóéñòà, âûäåëèòå îáúåêòû ñíà÷àëà.", vbExclamation, "Íåò âûäåëåíèÿ" Exit Sub End If ' Íà÷èíàåì îïåðàöèþ, êîòîðóþ ìîæíî îòìåíèòü ActiveDocument.BeginCommandGroup "Outline to Fill Color" ' Ïåðåáèðàåì âñå âûäåëåííûå îáúåêòû For Each s In ActiveSelection.Shapes ' Ïðîâåðÿåì, åñòü ëè ó îáúåêòà çàëèâêà If s.Fill.Type <> cdrNoFill Then ' Ïîëó÷àåì öâåò çàëèâêè Set fillColor = s.Fill.UniformColor ' Óñòàíàâëèâàåì ýòîò æå öâåò äëÿ àáðèñà Set outlineColor = fillColor s.Outline.SetProperties Color:=outlineColor End If Next s ' Çàâåðøàåì îïåðàöèþ ActiveDocument.EndCommandGroup End Sub
Sub OutlineToFillColor()
Dim s As Shape
Dim fillColor As Color
Dim outlineColor As Color
' Проверяем, есть ли выделенные объекты
If ActiveSelection.Shapes.Count = 0 Then
MsgBox "Пожалуйста, выделите объекты сначала.", vbExclamation, "Нет выделения"
Exit Sub
End If
' Начинаем операцию, которую можно отменить
ActiveDocument.BeginCommandGroup "Outline to Fill Color"
' Перебираем все выделенные объекты
For Each s In ActiveSelection.Shapes
' Проверяем, есть ли у объекта заливка
If s.Fill.Type <> cdrNoFill Then
' Получаем цвет заливки
Set fillColor = s.Fill.UniformColor
' Устанавливаем этот же цвет для абриса
Set outlineColor = fillColor
s.Outline.SetProperties Color:=outlineColor
End If
Next s
' Завершаем операцию
ActiveDocument.EndCommandGroup
End Sub
Почему-то в какой то момент редактор VBA стал странно работать с кодировками. Это скопировано из редактора VBA, править мне было, честно говоря, лень.просто тарабарщина какая-то ...
лучше так
Код:Sub OutlineToFillColor() Dim s As Shape Dim fillColor As Color Dim outlineColor As Color ' Проверяем, есть ли выделенные объекты If ActiveSelection.Shapes.Count = 0 Then MsgBox "Пожалуйста, выделите объекты сначала.", vbExclamation, "Нет выделения" Exit Sub End If ' Начинаем операцию, которую можно отменить ActiveDocument.BeginCommandGroup "Outline to Fill Color" ' Перебираем все выделенные объекты For Each s In ActiveSelection.Shapes ' Проверяем, есть ли у объекта заливка If s.Fill.Type <> cdrNoFill Then ' Получаем цвет заливки Set fillColor = s.Fill.UniformColor ' Устанавливаем этот же цвет для абриса Set outlineColor = fillColor s.Outline.SetProperties Color:=outlineColor End If Next s ' Завершаем операцию ActiveDocument.EndCommandGroup End Sub
Перед копированием надо было переключиться на русский язык. Не?редактор VBA стал странно работать с кодировками. Это скопировано из редактора VBA
В смысле? В редакторе все по-русски. Там с кодировками что-то, а ничего вроде notepad++ под рукой не было. Кракозябры вклеились уже здесь, в сообщении, в редакторе VBA все норм.
Не по теме:
Перед копированием надо было переключиться на русский язык. Не?
ЧатГПТ хорохо справляется с кореловскими макросами. Рабочие варианты предлагает, которые можно доводить до ума...просто тарабарщина какая-то ...
лучше так
Код:Sub OutlineToFillColor() Dim s As Shape Dim fillColor As Color Dim outlineColor As Color ' Проверяем, есть ли выделенные объекты If ActiveSelection.Shapes.Count = 0 Then MsgBox "Пожалуйста, выделите объекты сначала.", vbExclamation, "Нет выделения" Exit Sub End If ' Начинаем операцию, которую можно отменить ActiveDocument.BeginCommandGroup "Outline to Fill Color" ' Перебираем все выделенные объекты For Each s In ActiveSelection.Shapes ' Проверяем, есть ли у объекта заливка If s.Fill.Type <> cdrNoFill Then ' Получаем цвет заливки Set fillColor = s.Fill.UniformColor ' Устанавливаем этот же цвет для абриса Set outlineColor = fillColor s.Outline.SetProperties Color:=outlineColor End If Next s ' Завершаем операцию ActiveDocument.EndCommandGroup End Sub
подождёт ... лучше свою голову греть ... ей-ей, это полезнейЧатГПТ
1251 улетает в 1252 - а там персы со своими письменамиТам с кодировками что-то
да. Особенно забавно начать набирать кириллицу в редакторе vba. Причем в более ранних версиях все было нормально1251 улетает в 1252 - а там персы со своими письменами
самое простое начни не в редакторе, а на странице макета - а уже потом копируй в редактор ... и используй как шаблонОсобенно забавно начать набирать кириллицу в редакторе vba
Я точно нет, а про deeppseek не скажу.у wOxxOma спёр небось
Да ойсамое простое начни не в редакторе, а на странице макета - а уже потом копируй в редактор ... и используй как шаблон
в моём докере есть такой функционал. как заливку по абрису, так и наоборот. абрис по заливке.Бодрый день, коллеги!
Собственно, ищу макрос покраски абриса в цвет заливки. Знаю точно такой есть. Писать сейчас некогда.
Поделитесь, пожалуйста