【问题标题】:How to fit column width in macro?如何在宏中适应列宽?
【发布时间】:2020-04-23 10:21:51
【问题描述】:

我编写了一个将表格从 excel 复制到 word 的宏。在excel中,所有列都有不同的宽度。在 Word 中,我想将我的表格调整为一页 - Word 中的边距是左右各 1.5 厘米。我的表中的行数发生变化,列数稳定(这是 14)。如何将列宽设置为相等?我想知道无论标题中的文本数量如何,是否可以设置相同的列宽。我创建了 swdth 变量,然后将其除以 14(我的所有列),我的表格在一页上......

此代码无法正常工作。我在一页中有所有行,但列的宽度不同。

Table.Rows.SetHeight RowHeight:=InchesToPoints(0.17), HeightRule:=wdRowHeightExactly
Table.Rows(1).SetHeight RowHeight:=InchesToPoints(0.59), HeightRule:=wdRowHeightExactly
sWdth = InchesToPoints(6.22)
WordTable.PreferredWidthType = wdPreferredWidthPoints
WordTable.PreferredWidth = sWdth
sWdth = sWdth / 14

【问题讨论】:

  • 我认为解决方案将取决于字体大小和每个单元格中生成的字符的总宽度(在 Word 中)。如果字符宽于列宽,则字符将在单元格中换行并增加行高——可能会将表格推到一页之外。
  • «如何设置列宽以将所有表格放在一页中?我的表格有标题和文字,所以第一行有不同的宽度。»请清楚您的要求。您谈论的是列宽,但您的代码只关注关于行高的差异。 不能跨越分页符 - 只有 可以。
  • @macropod 我不知道如何设置相同的列宽,例如 14 列。他们每个人都有一个带有文本(更短或更长)的标题,我认为这就是列宽不同的原因。我想知道无论标题中的文本数量如何,是否可以设置相同的列宽。我创建了 swdth 变量,然后将其除以 14(我的所有列),然后我的表格在一页上......也许这不是解决我的问题的正确方法。
  • 那是微不足道的——但你在你的问题中没有问任何关于这个的问题。请更新它。无论如何,这与将表格高度拟合到页面有什么关系?您已经固定了行高,因此您对列宽所做的任何操作都不会改变表格是否适合页面。
  • @macropod 是否可以为所有列设置相同的列宽?我该怎么做?

标签: vba ms-word


【解决方案1】:

为所有列赋予相同的内容很简单:

Table.Columns.DistributeWidth

但不清楚这与将表格保持在一页上有何关系。

【讨论】:

    【解决方案2】:

    我最近看到了类似的问题。一如既往……

    #1)  Turn on the Macro Recorder
    #2)  Click through the steps you need to perform
    #3)  Turn off the Macro Recorder
    

    按 Alt+F11,您应该会看到执行您想做的任何事情所需的所有代码。请记住,宏录制器是您的朋友!

    【讨论】:

      猜你喜欢
      • 2020-06-01
      • 2015-11-25
      • 1970-01-01
      • 2012-01-23
      • 2015-01-07
      • 2017-04-21
      • 1970-01-01
      相关资源
      最近更新 更多