从VBA for MS word:查找纸张上的位置将打印一个范围
在VBA for MS Word中给定一个从VBA for MS word:查找纸张上的位置将打印一个范围,vba,ms-word,Vba,Ms Word,在VBA for MS Word中给定一个范围对象,我需要找到它将打印在纸上的位置 上下文 我有大约40个字母的相关单词模板。它们必须打印并自动发送,因此,所有模板的地址信息应在纸张上的同一位置。地址通过邮件合并插入到字段对象中 为了找出我需要改正的地方,我写了 Sub screen_fields() Dim Fld As Field For Each Fld In ActiveDocument.Fields Debug.Print Fld.Result.Star
范围
对象,我需要找到它将打印在纸上的位置
上下文
我有大约40个字母的相关单词模板。它们必须打印并自动发送,因此,所有模板的地址信息应在纸张上的同一位置。地址通过邮件合并插入到字段
对象中
为了找出我需要改正的地方,我写了
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.Information(wdVerticalPositionRelativeToPage)
然而,正如Macrood在他的回答中指出的那样,您的问题可以通过编辑模板来解决。您需要确保,如果地址上方有任何合并字段,则它们无法展开以向下推送地址。这不是你可以通过代码单独发现的。通常测量值在
点
。。。出于好奇,你是如何确定它是以字符测量的呢?因为Fld.Result.Start
和Fld.Result.End
是Fld.Result.Text
的长度与我的问题有关吗?“因为我没看到。”迪克霍斯滕,你问了一个XY问题。我有症状X我该如何处理它。每个人都看着你的症状,说你有问题X,这就是你解决问题X(因此Y)的方法,但你不听,因为你只对Y感兴趣。不过,我清楚地说我有问题Y。我的问题不是文本不适合表格单元格,就像你显然理解的那样。这是关于找出纸上的坐标。啊哈!也许你没有像我预期的那样始终在同一个位置上进行onderstand,所以我将其替换为同一位置上的所有模板的onderstand。不过,这仍然不会使其成为XY问题。