动态Fittext一个单元格

问题描述 投票:3回答:1

我正在使用perl中的OLE自动化在Word中创建一个表。我正在以编程方式填充表内容。指定行高和列宽。我正在努力实现以下目标。

如果单元格内容大于单元格的宽度,我想设置FitText属性,以便行高不变。但是,我无法识别出这种情况的细胞。将所有单元格的Fittext属性设置为True,拉伸小于单元格宽度的单元格内容。因此,我更喜欢将FitText属性设置为True,以用于比单元格更宽的单元格内容。

我尝试了以下内容

# set row height
$rowheight=20; 
...
...
$table1->Cell($rowindex,$colindex)->{WordWrap}="True";
$table1->Cell($rowindex,$colindex)->Range->{Text}=$text;
$cellheight = $table1->Rows($rowindex)->{Height};
if ($cellheight > $rowheight){
$table1->Cell($rowindex,$colindex)->{FitText}="True";
}

但是,单元格高度属性不会更改,因为高度设置为wdRowHeightAtLeast并且返回的单元格高度与原始行高度保持不变。

我也在word中手动看到这种行为。当wordwrap被转换并且单元格内容更大时,相应的行变得更大。

有人能指出我如何实现这个目标吗?

谢谢SR

vba word-vba ole
1个回答
0
投票

你可能会想到AutoFit,而不是FitText

来源:FitText(MSDN)

如果FitText属性设置为True,则不会更改文本的字体大小,但会调整字符的可视宽度以使所有键入的文本适合单元格。 (Source

来自:Table.AutoFitBehavior方法(MSDN)

确定在使用AutoFit功能时Microsoft Word如何调整表的大小。 (Source

你应该有更多的运气与AutoFit及其相关的方法。

但要注意,如果你不熟悉使用VBA操作Word Objects,那就不容易了。

控制表相当复杂。 Word以其认为合适的方式完成大部分工作,但如果您使用VBA,则必须采取控制措施。通过调用Selection对象,你真的不应该让自己的生活变得更加悲惨。

有关更多信息,请参阅this sourcethis link

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