以下问题:
我在VBA中将tbl声明为Table。我想在 PowerPoint 中显示一些表格。
如果单元格的文本太长,单元格就会变大并且超出幻灯片限制。我想避免这种情况。我只想调整文本大小,这意味着,我只是希望文本变小,以便适合单元格。这意味着单元格表大小不应更改!
你会怎么做?我试过了:
ppPres.Slides(NumSlide).Shapes(NumShape).Table.Columns(col).Cells(1).Shape.TextFrame2.AutoSize = msoAutoSizeTextToFitShape
没有成功。您能告诉我出了什么问题以及您将如何处理吗?
错误信息如下:
运行时错误“2147024809 (80070057)”
指定值超出范围。
这是 PowerPoint OM 的奇怪之处之一。 Shape 对象具有 IntelliSense 列出的所有属性,包括 AutoSize 属性,但在表中引用时,某些属性不可用。自动调整大小就是其中之一。例如,如果您将光标放在单元格内并打开 PowerPoint 中的“设置形状格式”窗格,您可以看到 3 个“自动调整大小”单选按钮以及“形状中的文本换行”复选框均呈灰色显示:
在上面的示例中,该示例是通过 PowerPoint UI 添加表格而不是以编程方式创建的,然后我使用此代码将文本从单元格 2,1 复制到 1,2,并且单元格没有更改宽度,但确实更改了高度,可能会迫使桌子离开幻灯片底部:
ActiveWindow.Selection.ShapeRange(1).Table.Cell(1,2).Shape.TextFrame.TextRange.Text=_
ActiveWindow.Selection.ShapeRange(1).Table.Cell(2,1).Shape.TextFrame.TextRange.Text
如果您想要控制这一点,则需要在代码中手动执行此操作,方法是在插入文本并迭代减小字体大小后检查表格单元格和/或表格高度,并重新检查每个缩小级别以查看是否桌子仍然在滑动区域之外。
此代码可以为您做到这一点:
Option Explicit
' =======================================================================
' PowerPoint Subroutine to iteratively reduce the font size of text
' in a table until the table does not flow off the bottom of the slide.
' Written By : Jamie Garroch of YOUpresent Ltd. http://youpresent.co.uk/
' Date : 05DEC2016
' Inputs : Table object e.g. ActiveWindow.Selection.ShapeRange(1).Table
' Outputs : None
' Dependencies : None
' =======================================================================
Sub FitTextToTable(oTable As Table)
Dim lRow As Long, lCol As Long
Dim sFontSize As Single
Const MinFontSize = 8
With oTable
Do While .Parent.Top + .Parent.Height > ActivePresentation.PageSetup.SlideHeight
For lRow = 1 To .Rows.Count
For lCol = 1 To .Columns.Count
With .Cell(lRow, lCol).Shape
sFontSize = .TextFrame.TextRange.Font.Size
If sFontSize > MinFontSize Then
.TextFrame.TextRange.Font.Size = sFontSize - 1
Else
MsgBox "Table font size limit of " & sFontSize & " reached", vbCritical + vbOKOnly, "Minimum Font Size"
Exit Sub
End If
End With
' Resize the table (effectively like dragging the bottom edge and allowing PowerPoint to set the table size to the text.
.Parent.Height = 0
Next
Next
Loop
End With
End Sub
有见地!最近,我一直在编辑一个相当广泛的表格,然后偶然发现了这篇关于如何在 PowerPoint 中调整表格大小