从VBA中获取MS字:找到Range将打印在纸上的位置

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

考虑到VBA中MS Word的Range对象,我需要找到它将在纸上打印的位置。

上下文

我有大约40个字母的相关单词模板。它们必须被打印并自动发送,因此,地址信息应始终在纸上的同一位置。通过邮件合并将地址插入Field对象中。

为了找出我需要更正的那些,我写了

Sub screen_fields()
    Dim Fld As Field
    For Each Fld In ActiveDocument.Fields
        Debug.Print Fld.Result.Start, Fld.Result.Font.Name, Fld.Result.Font.Size, Fld.Code
    Next
End Sub

但是起始位置似乎是字符,而不是厘米,点或英寸。

Range对象的属性或上面的函数可以告诉我它将在哪里打印?

由于文档大量使用表格,在表格中查找单元格的位置将是部分解决方案。

vba word-vba word
2个回答
0
投票

在执行合并之前测试字段长度并不是很有帮助,因为合并字段通常不反映它们将输出的数据的长度。合并后,没有要测试的字段。

这类问题通常是地址问题。如果将此类字段放在高度和宽度固定的表中,并且该表足够容纳最大的地址,则输出文件的其余页面布局将保持不变,而不管地址的大小如何。

不需要代码。


0
投票

直接回答您的问题是使用Information对象的Range属性。

.Range.Information(wdVerticalPositionRelativeToPage)

但是,正如macropod在他的回答中指出的那样,您的问题可以通过编辑模板来解决。您需要确保,如果地址上方有任何合并字段,它们将无法展开以将地址向下推。仅凭代码无法发现这一点。

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