了解 PowerPoint 中表格的格式 (VBA 2010)(调整文本大小至单元格)

问题描述 投票:0回答:2

以下问题:

我在VBA中将tbl声明为Table。我想在 PowerPoint 中显示一些表格。

如果单元格的文本太长,单元格就会变大并且超出幻灯片限制。我想避免这种情况。我只想调整文本大小,这意味着,我只是希望文本变小,以便适合单元格。这意味着单元格表大小不应更改!

你会怎么做?我试过了:

ppPres.Slides(NumSlide).Shapes(NumShape).Table.Columns(col).Cells(1).Shape.TextFrame2.AutoSize = msoAutoSizeTextToFitShape

没有成功。您能告诉我出了什么问题以及您将如何处理吗?

错误信息如下:

运行时错误“2147024809 (80070057)”

指定值超出范围。

vba powerpoint
2个回答
1
投票

这是 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 enter image description here 如果您想要控制这一点,则需要在代码中手动执行此操作,方法是在插入文本并迭代减小字体大小后检查表格单元格和/或表格高度,并重新检查每个缩小级别以查看是否桌子仍然在滑动区域之外。

此代码可以为您做到这一点:

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 中调整表格大小

0
投票

© www.soinside.com 2019 - 2024. All rights reserved.