2016-06-27 53 views
-1

我有一個大的宏,它基於excel值生成和填充powerpoint中的表格。我根據特定參數手動調整行的大小,但是我遇到了非常煩人的問題,如果文本會從特定單元溢出,我似乎無法阻止自動調整行的行。我試過使用textframetextframe2「autosize」屬性,但是在第一次調用時出現錯誤,說明指定的值超出範圍。錯誤編號是-2147024809(80070057),雖然我懷疑這將有什麼用處。有沒有辦法來防止這種自動調整超出編寫代碼手動縮短文本溢出時?防止vba生成的PowerPoint表格自動調整行的大小

回答

1

RGA,

您的問題的答案是肯定的;你可以這樣做。本主題將在以下主題中討論:Understanding format of tables in PowerPoint (VBA 2010) (resize text to cell)


但是,我不知道這種技術是否仍適用於ppt 2016.我已經實現了此類代碼,然後「升級」到了office 2016;現在它不起作用。

有了這樣說,這我的代碼(調整文字,直到它「適合」):

... 
Do Until (table.rows(1).height + table.rows(2).height < TABLE_HEIGHT) or (table.Cell(2, 2).Shape.TextFrame.TextRange.Font.size = 1) 
    If table.Cell(1, 1).Shape.TextFrame.TextRange.Font.size = 1 Then 
     table.Cell(1, 1).Shape.TextFrame.TextRange.Font.size = 27 
     table.Cell(2, 2).Shape.TextFrame.TextRange.Font.size = table.Cell(2, 2).Shape.TextFrame.TextRange.Font.size - 1 
     table.Cell(2, 3).Shape.TextFrame.TextRange.Font.size = table.Cell(2, 2).Shape.TextFrame.TextRange.Font.size 
    Else 
     table.Cell(1, 1).Shape.TextFrame.TextRange.Font.size = table.Cell(1, 1).Shape.TextFrame.TextRange.Font.size - 1 
    End If 
Loop 

爲了以ppt 2016年恢復了一些功能,我決定把我的代碼重寫限制顯示,以防止「調整大小」表調用行數:

... 
table.Cell(1, 1).Shape.TextFrame.TextRange = table.Cell(1, 1).Shape.TextFrame.TextRange.lines(1,2) 
table.Cell(2, 2).Shape.TextFrame.TextRange = table.Cell(2,2).Shape.TextFrame.TextRange.lines(1,1) 
table.Cell(2, 3).Shape.TextFrame.TextRange = table.Cell(2, 3).Shape.TextFrame.TextRange.lines(1,1) 

從理論上講,你可以使用.height; .Textrange;和你的字體的高度來確定你需要的字體大小,以便縮小文本的大小。

+0

老實說,我很久以前就問過這個問題,甚至不記得它提到的是什麼程序。但是,鑑於您是一位新用戶並給出了一個非常全面的答案,我會接受它作爲解決方案,因爲我懷疑它可以解決我所遇到的問題。歡迎來到社區! – RGA

0

如果文字太多以致無法放入單元格中,您希望發生什麼? PowerPoint中沒有UI概念來防止基於單元格溢出的行自動調整大小,因爲沒有地方可以通過在PowerPoint中鍵入單元格來演示其他文本。因此沒有API可以做同樣的事情。我會在插入文本之前和之後記錄行,並像您說的一樣逐字截取,直到行高恢復爲原始值。

相關問題