2015-08-06 3 views
0

Мне срочно нужно переместить положение текста во все текстовые поля (1 текстовое поле на слайд). Первый язык субтитров - белый, а желтый - английский. Теперь я хочу, чтобы желтый был сверху, белый внизу. Поэтому сначала я хотел бы выбрать белый, скопировать, стереть, перейти к концу желтого цвета и вставить (с разрывом строки между белым/желтым). Это можно сделать?текст смены текста в текстовом поле Power Point 2007 vba

Возможно, какое-то изменение в таком скрипте поможет? Извините, что я далеко от своего ноутбука, и мой друг спросил меня, могу ли я спасти ситуацию.

Sub RemoveWhiteText() 

    Dim oSl As Slide 
    Dim oSh As Shape 


    With ActivePresentation 

For Each oSl In .Slides 
    For Each oSh In oSl.Shapes 
     With oSh 
      If .HasTextFrame Then 
       If .TextFrame.HasText Then 
        If TextRange.Font.Color = vbWhite Then 
         oSh.TextFrame.Text 
        End If 
       End If 
      End If 
     End With 
    Next 
Next 

    End With 
End Sub 

ответ

0

Это приведет к перемещению первого пробега с белым цветом шрифта в конец текстового поля. Попробуйте это:

Sub MoveWhiteTextToEnd(oSh As Shape) With oSh With oSh.TextFrame.TextRange.Runs(1) If .Font.Color.RGB = vbWhite Then .Cut oSh.TextFrame.TextRange.InsertAfter (vbCrLf) oSh.TextFrame.TextRange.Characters(oSh.TextFrame.TextRange.Length + 1).Paste End If End With End With End Sub

Обновление кода с этим вызовом:

If .TextFrame.HasText Then Call MoveWhiteTextToEnd(oSh) End If

+0

Спасибо за ответ. Он отлично справляется с 1 строкой предложения, но с двумя строками белого текста он разрезает только половину его. Кажется, он останавливается в некоторых дополнительных местах. –

+0

Он должен работать независимо от количества строк текста, если он является непрерывным блоком с тем же форматированием. Похоже, что форматирование может отличаться в двух строках белого. –

+0

Я думал о том же. Да, когда я снова выбрал белый цвет и запустил макрос, он сработал. Благодаря :) –

Смежные вопросы