|
楼主 |
发表于 2009-11-12 09:54
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
简化了复制续表代码:- Private Sub CommandButton转换为Word表格_Click()
- Dim Word对象 As New Word.Application, 当前路径, 导出文件名, 导出路径文件名, 最后行号, i, j, 页数, Word续表行号
- 当前路径 = ThisWorkbook.Path
- FileCopy 当前路径 & "\射线检测报告(模板).doc", Sheets("第1页").Range("X2") & "" & Sheets("第1页").Range("J2") & ".doc"
- 导出路径文件名 = Sheets("第1页").Range("X2") & "" & Sheets("第1页").Range("J2") & ".doc"
-
- 最后行号 = Sheets("第2页").Range("A65536").End(xlUp).Row
- If (最后行号 - 4) Mod 26 <> 0 Then
- 页数 = (最后行号 - 4) \ 26 + 2
- Else
- 页数 = (最后行号 - 4) \ 26 + 1
- End If
- With Word对象
- .Documents.Open 导出路径文件名
- .Visible = False
-
- If 页数 > 2 Then '复制粘贴续页
- .Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="2" '定位到第2页
- .Selection.EndKey Unit:=wdStory, Extend:=wdExtend
- .Selection.Copy '复制
- For i = 1 To 页数 - 2 '粘贴
- .Selection.MoveLeft Unit:=wdCharacter, Count:=1
- .Selection.PasteAndFormat (wdPasteDefault)
- .Selection.TypeBackspace
- .Selection.EndKey Unit:=wdStory, Extend:=wdExtend
- Next i
- End If
-
- '第1页表格:Tables(1)
- .ActiveDocument.Tables(1).Cell(1, 2).Range = Sheets("第1页").Range("D2") '施工单位名称
- .ActiveDocument.Tables(1).Cell(1, 4).Range = Sheets("第1页").Range("J2") '报告编号
- .ActiveDocument.Tables(1).Cell(1, 5).Range = "第1页 共" & 页数 & "页" '页码
- .ActiveDocument.Tables(1).Cell(2, 2).Range = Sheets("第1页").Range("D3") '单位工程名称
- .ActiveDocument.Tables(1).Cell(2, 4).Range = Sheets("第1页").Range("S3") '工程编号
- .ActiveDocument.Tables(1).Cell(3, 2).Range = Sheets("第1页").Range("B4") '检测日期
- .ActiveDocument.Tables(1).Cell(3, 4).Range = Sheets("第1页").Range("L4") '桩号
- .ActiveDocument.Tables(1).Cell(3, 6).Range = Sheets("第1页").Range("V4") '规格
- .ActiveDocument.Tables(1).Cell(4, 2).Range = Sheets("第1页").Range("B5") '材质
- .ActiveDocument.Tables(1).Cell(4, 4).Range = Sheets("第1页").Range("L5") '设备名称型号
- .ActiveDocument.Tables(1).Cell(4, 6).Range = Sheets("第1页").Range("V5") '焦点尺寸
- .ActiveDocument.Tables(1).Cell(5, 2).Range = Sheets("第1页").Range("B6") '透照方式
- .ActiveDocument.Tables(1).Cell(6, 2).Range = Sheets("第1页").Range("B7") '源的种类
- .ActiveDocument.Tables(1).Cell(6, 4).Range = Sheets("第1页").Range("O7") '焦距
- .ActiveDocument.Tables(1).Cell(6, 6).Range = Sheets("第1页").Range("V7") '胶片型号
- .ActiveDocument.Tables(1).Cell(7, 2).Range = Sheets("第1页").Range("B8") '胶片尺寸
- .ActiveDocument.Tables(1).Cell(7, 4).Range = Sheets("第1页").Range("M8") '像质计型号
- .ActiveDocument.Tables(1).Cell(7, 6).Range = Sheets("第1页").Range("U8") '像质计位置
- .ActiveDocument.Tables(1).Cell(8, 1).Range = Sheets("第1页").Range("A9") '管电压
- .ActiveDocument.Tables(1).Cell(8, 2).Range = Sheets("第1页").Range("E9") '管电流
- .ActiveDocument.Tables(1).Cell(8, 3).Range = Sheets("第1页").Range("N9") '源强
- .ActiveDocument.Tables(1).Cell(8, 4).Range = Sheets("第1页").Range("T9") '曝光时间
- .ActiveDocument.Tables(1).Cell(9, 2).Range = Sheets("第1页").Range("C10") '胶片处理
- .ActiveDocument.Tables(1).Cell(9, 3).Range = Sheets("第1页").Range("K10") '显影时间
- .ActiveDocument.Tables(1).Cell(9, 4).Range = Sheets("第1页").Range("S10") '显影温度
- .ActiveDocument.Tables(1).Cell(10, 2).Range = Sheets("第1页").Range("C11") '增感屏
- .ActiveDocument.Tables(1).Cell(10, 4).Range = Sheets("第1页").Range("R11") '显影配方
- .ActiveDocument.Tables(1).Cell(11, 2).Range = Sheets("第1页").Range("D12") '底片黑度
- .ActiveDocument.Tables(1).Cell(11, 4).Range = Sheets("第1页").Range("R12") '标准级别
- .ActiveDocument.Tables(1).Cell(12, 2).Range = Sheets("第1页").Range("C13") '检测数量
- .ActiveDocument.Tables(1).Cell(12, 4).Range = Sheets("第1页").Range("L13") '返修数量
- .ActiveDocument.Tables(1).Cell(12, 6).Range = Sheets("第1页").Range("U13") '一次合格率
-
- For j = 2 To 页数 '第j页表格:Tables(j)
- .ActiveDocument.Tables(j).Cell(1, 2).Range = Sheets("第2页").Range("B2") '报告编号
- .ActiveDocument.Tables(j).Cell(1, 3).Range = "第" & j & "页 共" & 页数 & "页" '页码
- Word续表行号 = 3
- For i = (j - 2) * 26 + 5 To (j - 2) * 26 + 30 '最后行号
- .ActiveDocument.Tables(j).Cell(Word续表行号, 1).Range = Sheets("第2页").Range("A" & i) '焊口编号
- If Len(Sheets("第2页").Range("A" & i)) > 31 Then
- .ActiveDocument.Tables(j).Cell(Word续表行号, 1).Range.Font.Size = 7 '改变字号
- End If
- .ActiveDocument.Tables(j).Cell(Word续表行号, 2).Range = Sheets("第2页").Range("B" & i) '透照长度
- .ActiveDocument.Tables(j).Cell(Word续表行号, 3).Range = Sheets("第2页").Range("C" & i) '缺欠性质
- .ActiveDocument.Tables(j).Cell(Word续表行号, 4).Range = Sheets("第2页").Range("D" & i) '缺欠尺寸及当量
- .ActiveDocument.Tables(j).Cell(Word续表行号, 5).Range = Sheets("第2页").Range("E" & i) '缺欠位置
- .ActiveDocument.Tables(j).Cell(Word续表行号, 6).Range = Sheets("第2页").Range("F" & i) '评定结果
- .ActiveDocument.Tables(j).Cell(Word续表行号, 7).Range = Sheets("第2页").Range("G" & i) '备注
- If Len(Sheets("第2页").Range("G" & i)) > 4 Then
- .ActiveDocument.Tables(j).Cell(Word续表行号, 7).Range.Font.Size = 8 '改变字号
- End If
- Word续表行号 = Word续表行号 + 1
- Next i
- Next j
- End With
- Word对象.Documents.Save
- Word对象.Quit
- Set Word对象 = Nothing
- i = MsgBox("已转换为 " & 导出路径文件名 & " 文件!", 0 + 48 + 256 + 0, "提示:")
- End Sub
复制代码 |
|