2014-09-29 84 views
1

我自動通過VBA,用戶窗體和Excel生成幻燈片幻燈片。您在Excel中運行VBA腳本,填寫數據,數據放入Excel中的單元格中,然後VBA腳本將數據拖放到幻燈片中的文本框形狀中。更改形狀內的字體ppt

我的問題是我想在不同的時間使用不同的字體大小,所以例如一個部分的28磅字體和其餘14磅的字體。問題是我對文本框所做的任何屬性更改都適用於形狀內的所有文本。

我目前的解決方法是草率的,只是在原件上生成另一個文本框並在原件中插入間距,因此它看起來像較大的文本是「在」文本框中,而實際上它只是坐在一些預留的空行上。

回答

0

可以將字符串內格式化特定子串,但它是非常麻煩的,例如假設shp是代表你的文本框對象變量:

Sub foo() 
Dim shp As Shape 
Set shp = ActivePresentation.Slides(1).Shapes("TextBox 3") 
    shp.TextFrame.TextRange.Text = "Hello, world!" 
    shp.TextFrame.TextRange.Characters.Font.Size = 14 'applies uniform font to entire shape 
    shp.TextFrame.TextRange.Characters(1, 5).Characters.Font.Size = 28 

End Sub 

輸出示例:

enter image description here

的難點當然是混合格式,我不認爲有任何的解決方案易於。您需要確定需要「捕獲」哪些格式,以及隨後實施適當的條件邏輯以將這些格式轉換爲PowerPoint圖形。

一種可能的選擇 - 如果我是你,我會走的路線是從Excel複製單元格,並使用此方法粘貼到PowerPoint中。我相信這會在PowerPoint幻燈片中創建一個由單個單元格組成的。你將不得不作出的大小/位置的調整,但是這應該是更加的簡單爲了比試圖捕捉字體格式的每一個可能的變化:

Sub foo2() 
Dim shp As Shape 
Dim xl As Object 

    'Get Excel and copy a specific cell 
    Set xl = GetObject(, "Excel.Application") 
    xl.Workbooks("Book35").Sheets("Sheet2").Range("B4").Copy 

    'Paste that cell in to PowerPoint as a table, preserving formats: 
    ActivePresentation.Slides(1).Select 
    Application.CommandBars.ExecuteMso "PasteSourceFormatting" 

End Sub 

示例輸出,從Excel單元格複製:

enter image description here

+0

看到第一個單詞如何始終出現文本框的字符串,這絕對是一個可行的解決方案!非常感謝!現在我可以刪除那些令人討厭的假形狀:) – user2533406 2014-09-29 17:36:41

-1

無需在Excel中更改字體以反映在Word中。你可以直接做。只需在Word VBA中粘貼下面的字線: - Activedocument.Shapes(「sam」).TextFrame.TextRange.Words(1).Font.Size = 28

+0

謝謝你試圖回答我的問題,但也許你誤解了大衛的答案?我沒有用詞,我正在使用Powerpoint,特別是一個文本框。在文本框上編輯字體屬性適用於所有的文本,所以他的字符顯式解決方法沒有問題。謝謝你試圖幫助,但! – user2533406 2014-09-30 16:17:40