|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
原帖由 weiguoyin868 于 2009-6-24 20:19 发表
这两天,经过研究分析,WORD文档中,文本框自动编号已经初步解决。我使用录制宏的方法,把基本的对象结构理解清楚了。WORD文档中每一个文本框就是一个Document.Shapes对象,该对象有名称,也有编号,名称每个都不同, ...
处理类似问题,偶还是喜欢用VBA,花点时间与代码并调试,接下来的所有事就交给电脑了。
结合楼主的例子,写了两个过程,第一个是负责把文档里所有的编号按顺序重写的,填入起始序号后会自动更新所有文本框。
第二个就是批量打印的,可以指定如“1-800”这样的范围,按下确定后就由打印机负责下面的工作了。(友情提醒:测试时把默认打印机设置成虚拟的,以便看效果,要不然浪费很多张纸我可负不了这个责任
-
- Option Explicit
-
- Sub 自动添加编号()
- On Error GoTo 0
- Application.ScreenUpdating = False
- Dim shpTemp As Shape, intStart%
- intStart = Val(InputBox("请输入编号的起始数,默认为“1”:", "输入数值", 1))
- For Each shpTemp In ThisDocument.Shapes
- shpTemp.TextFrame.TextRange.Paragraphs(3).Range = "有效期至2009年5月31日 编号:" & Format(intStart, "000")
- intStart = intStart + 1
- Next
- Application.ScreenUpdating = True
- End Sub
-
- Sub 批量打印餐券()
- On Error GoTo 0
- Application.ScreenUpdating = False
- Dim shpTemp As Shape, i%, j%, k%, arrNum
- arrNum = Split(InputBox("请输入编号的范围,如“1-125”:", "输入数值", "-"), "-")
- j = Val(arrNum(0))
- k = Val(arrNum(1))
- For i = j To k
- If (i - j) Mod 8 = 0 Then
- For Each shpTemp In ThisDocument.Shapes
- shpTemp.TextFrame.TextRange.Paragraphs(3).Range = "有效期至2009年5月31日 编号:" & IIf(j > k, "", Format(j, "000"))
- j = j + 1
- Next
- ThisDocument.PrintOut
- End If
- Next
- Application.ScreenUpdating = True
- End Sub
复制代码 |
评分
-
1
查看全部评分
-
|