Word文档页数随意变
2008-10-29 20:25:30 来源:WEB开发网PageSetup对象属于Section对象。也就是说,如果一个文档包含多个节(Section),就可以提取出多个PageSetup对象,每一个PageSetup对象可能有不同的边距。所以,如果文档包含多个节且各个节的左边距不同,下面的代码不能得到正确结果,它将返回wdUndefined值(9999999):Debug.Print ActiveDocument.PageSetup.LeftMargin 如果要调整整个文档的边距,就必须分别处理各个节的边距,如下面的例子所示。这段代码首先获取各个节的当前左、右边距,然后把它们缩小20%:Dim ObjSection As SectionFor Each ObjSection In ActiveDocument.Sections With ObjSection.PageSetup .LeftMargin = .LeftMargin * 0.8 .RightMargin = .RightMargin * 0.8 End WithNext
二、实现自动调整功能 前面分析了在VBA中调整文档占用空间的各种途径。利用这些技术可以编写出下面的DocSizer类,实现调整文档页数的核心功能。 DocSizer类主要提供了10个属性和一个Execute方法。10个属性的含义如表一所示。表一 属性 说明 AdjustItems 可选,Long。指定可以通过哪些项目来调整文档占用的空间。允许使用下列枚举常量的任意组合:adjFontSize(1),adjLineSpacing(2),adjMarginLeft(4),adjMarginRight(8),adjMarginTop(16),andadjMarginBottom(32)。如果忽略,则默认是adjAll常量(63),即前面6个选项的组合。 NumTargetPages 必需,Long,可读写。指定目标页数,与现有页数的差距不能超过50%。
MinLeftMargin
MinRightMarginMinTopMarginMinBottomMargin可选,Single。用来指定必须保留的最小边距,可用来防止边距缩小得太多以至于超出打印机允许的范围。如果忽略,默认保留的最小边距是文档第一节边距的70%。 MinFontSize 可选,Single。指定“正文”样式的字体最小可以调整到多少。如果忽略,则默认最小允许的字体是6磅。 MinLineSpacing 可选,Single。指定“正文”样式中的行距最小可以调整到多少。如果忽略,则默认11磅(相当于一行的92%)。如果行距小于11磅,字符可能被切割。 NumCurrentPages 只读,Long。返回文档初始的页数。执行Execute方法之后,返回值将是调整后的页数。 UndoAfterFailure 可选,Boolean。如果设置成True,一旦调整之后未能达到预定的页数要求,则撤销所有对文档格式的修改,恢复文档的原始状态。默认值是True,如果要保留调整后的结果(即使页数不能达到预定的要求),则应当显式地把该属性设置成False。 Execute方法启动调整文档页数的操作,如果能够达到预期的页数要求,返回True;否则返回False。另外,Execute方法还可能返回错误,利用Err.Description可获得错误的描述信息。下面是DocSizer的主要代码:
更多精彩
赞助商链接