Всем привет!
Есть задачка - взять из массива (ранее созданного) текст, его отформатировать (цвет, жирность шрифта) и отправить в буфер обмена.
Пока реализовал через вставку в документ Word с последующим копированием.
Есть ли вариант сделать это без вставки в документ Word?
Задание не понятно, откуда что берётся, куда что вставляется. Если вы создали тему в разделе "Макросы в Word", значит вы работаете в программе Word или вы работаете в другой программе?
Да, нужен макрос в Word VBA.
Задача - отформатировать текст из переменной, после чего отправить его в буфер обмена.
Текущий код (в переменной "str" содержится текст, который нужно отформатировать):
Спойлер
Dim WordDoc2 As Document
Application.ScreenUpdating = False
Set WordDoc2 = Documents.Add
WordDoc2.Activate
Selection.InsertAfter Text:=str
With Selection.ParagraphFormat
.LeftIndent = CentimetersToPoints(0)
.RightIndent = CentimetersToPoints(0)
.SpaceBefore = 0
.SpaceBeforeAuto = False
.SpaceAfter = 0
.SpaceAfterAuto = False
.LineSpacingRule = wdLineSpaceSingle
.Alignment = wdAlignParagraphLeft
.WidowControl = True
.KeepWithNext = False
.KeepTogether = False
.PageBreakBefore = False
.NoLineNumber = False
.Hyphenation = True
.FirstLineIndent = CentimetersToPoints(0)
.OutlineLevel = wdOutlineLevelBodyText
.CharacterUnitLeftIndent = 0
.CharacterUnitRightIndent = 0
.CharacterUnitFirstLineIndent = 0
.LineUnitBefore = 0
.LineUnitAfter = 0
.MirrorIndents = False
.TextboxTightWrap = wdTightNone
.CollapsedByDefault = False
End With
For Each t In Selection.Characters
If t = "[" Then Flag = 1
If t = "{" Then Flag = 2
Select Case Flag
Case 1
t.Font.Italic = True
t.Font.ColorIndex = 6
Case 2
t.Font.Italic = True
t.Font.Color = 12611584
End Select
If t = "]" Then Flag = 0
If t = "}" Then Flag = 0
If t = "{" Or t = "}" Then t.Delete
Next
Selection.Copy
WordDoc2.Close (False)
Application.ScreenUpdating = True
На сколько мне известно, в VBA нет инструментов для помещения форматированного текста в буфер обмена Виндоуса. Есть объект "DataObject", но он работает только с обычным текстом.
Возможно нужно использовать Win32 API-функции (по ним не смогу помочь, т.к. там много информации потребуется читать).
Можете спросить на других форумах, может кто знает.