2009-06-08 59 views
5

Tôi cố gắng để sử dụng VBA để chèn một số văn bản vào một PowerPoint TextRange, tôi sử dụng một cái gì đó như thế này:Áp dụng Font Định dạng Text PowerPoint Programatically

ActiveWindow.Selection.SlideRange.Shapes("rec1").TextFrame.TextRange.Text = "Hi" 

Tuy nhiên, tôi không thể tìm ra cách để áp dụng đậm , in nghiêng và gạch chân theo chương trình (tôi không thấy thuộc tính .RichText hoặc thứ gì đó tương tự).

Những gì tôi có là một số văn bản HTML đơn giản với văn bản in đậm, in nghiêng và gạch chân tôi muốn chuyển đổi.

Có ai biết cách thực hiện việc này không?

+0

Tôi nghĩ rằng tôi đã giải quyết tất cả các thắc mắc của bạn trong câu trả lời được chỉnh sửa bên dưới. –

+0

cố gắng tìm ra cách để ví dụ của bạn hoạt động trong tập lệnh. Tôi nghĩ rằng (Start: = 2, Length: = 3) là ném ra VBScript, mặc dù nó xuất hiện để làm việc trong VBA (lỗi của tôi - nên có quy định tôi đã sử dụng VBScript). Có vẻ như nó sẽ hoạt động, mặc dù đau là gì - tôi ước họ thực hiện một cách tốt hơn thế này. Sẽ đăng lại sau khi tôi có thể làm cho nó hoạt động khi cần thiết. Cảm ơn - – OneNerd

+0

Tôi đã gắn thẻ lại bài đăng của bạn để phản ánh rằng bạn đang sử dụng VBScript. Tôi muốn biết cách bạn giải quyết vấn đề này. –

Trả lời

7

này có thể dễ dàng thực hiện bằng cách sử dụng Characters, Words, Sentences, RunsParagraphs đối tượng các 's TextRange và sau đó nó Font đối tượng để thiết lập Bold, Underline và Nghiêng (trong số tài sản khác). Ví dụ:

Sub setTextDetails() 
    Dim tr As TextRange 
    Set tr = ActiveWindow.Selection.SlideRange.Shapes(1).TextFrame.TextRange 
     With tr 
      .Text = "Hi There Buddy!" 
      .Words(1).Font.Bold = msoTrue 
      .Runs(1).Font.Italic = msoTrue 
      .Paragraphs(1).Font.Underline = msoTrue 
     End With 
End Sub 
4

Hãy thử xem MSDN's documentation trên TextRange object. Nó chứa các mẫu về cách truy cập các thuộc tính Phông chữ của đối tượng TextRange.

EDIT: Bạn có thể truy cập vào những thứ như Bold và In nghiêng lập trình theo cách này:

TextRange.Font.Bold = msoTrue 

EDIT EDIT: Có một số phương pháp mà bạn có thể chọn chỉ văn bản nhất định trong một phạm vi văn bản. Xem bảng sau đây:

Theo sames từ this link, bạn có thể chọn một phần của văn bản bằng một trong những phương pháp và đặt phông chữ theo lập trình. Ví dụ:

Application.ActiveDocument.Pages(1).Shapes(2) _ 
.TextFrame.TextRange.Words(Start:=2, Length:=3) _ 
.Font.Bold = True 

Ví dụ đó được lấy từ liên kết Phương pháp từ.

+1

theo như tôi có thể nói, địa chỉ phạm vi văn bản ENTIRE, không phải từ riêng lẻ trong phạm vi văn bản. – OneNerd

3

Ngoài câu trả lời ở trên, bạn nên cố gắng đặt tên cho các đối tượng bạn sẽ thay đổi, vì chọn chúng ở giữa bản trình bày có thể làm cho PowerPoint hoạt động kỳ quặc. Tạo một đối tượng TextRange mới và thiết lập nó như thế này.

dim mytextrange As TextRange 
Set mytextrange = ActiveDocument.Pages(1).Shapes(2).TextFrame.TextRange 
mytextrange.Words... 
+0

Vâng - tôi đã làm điều đó (làm cho nó dễ dàng hơn để làm việc với các đối tượng). Cảm ơn - – OneNerd

Các vấn đề liên quan