首页 > 代码库 > 20170612xlVBA含方框文档填表
20170612xlVBA含方框文档填表
Sub mainProc() Application.ScreenUpdating = False Application.DisplayAlerts = wdAlertsNone ‘Dim xlApp As Excel.Application ‘Dim Wb As Excel.Workbook ‘Dim Sht As Excel.Worksheet Dim xlApp As Object Dim Wb As Object Dim sht As Object Dim EndRow As Long Dim Arr As Variant Dim xlRng As Object ‘Excel.Range Dim TmpDoc As Document Dim NewName As String Dim NewPath As String ‘Set xlApp = New Excel.Application Set xlApp = CreateObject("Excel.Application") Set Wb = xlApp.Workbooks.Open(ActiveDocument.Path & "\附件4 党员基本信息汇总表.xls") Set sht = Wb.Worksheets(1) With sht For i = 21 To 5 Step -1 If .Cells(i, 2).Value <> "" Then EndRow = i Exit For End If Next i Set xlRng = .Range("A5:T" & EndRow) Arr = xlRng.Value End With Wb.Close False xlApp.Quit Const TmpName As String = "采集表.doc" For i = LBound(Arr) To UBound(Arr) Set TmpDoc = Application.Documents.Open(ActiveDocument.Path & "\" & TmpName) TmpDoc.Activate ‘姓名 FindReplace "Name", Arr(i, 2) ‘性别 If Arr(i, 5) = "男" Then FindTrue = "nan" FindFalse = "nv" FindTrueAndFalse FindTrue, FindFalse Else FindTrue = "nv" FindFalse = "nan" FindTrueAndFalse FindTrue, FindFalse End If ‘民族 FindReplace "mz", Split(Arr(i, 6), " ")(1) ‘身份证加框 FindText = "id" InputText = Arr(i, 4) FindAndInput FindText, InputText ‘出生日期 bir = Format(Arr(i, 7), "yyyy/mm/dd") FindReplace "yyy1", Split(bir, "/")(0) FindReplace "m1", Split(bir, "/")(1) FindReplace "d1", Split(bir, "/")(2) ‘学历代码加框 FindText = "XL" InputText = Split(Arr(i, 8), " ")(0) FindAndInput FindText, InputText ‘正式预备 If Arr(i, 9) = "正式党员" Then FindTrue = "zs" FindFalse = "yb" FindTrueAndFalse FindTrue, FindFalse Else FindTrue = "yb" FindFalse = "zs" FindTrueAndFalse FindTrue, FindFalse End If ‘党支部 FindReplace "dzb", Arr(i, 3) ‘加入日期 bir = Format(Arr(i, 10), "yyyy/mm/dd") FindReplace "yyy2", Split(bir, "/")(0) FindReplace "m2", Split(bir, "/")(1) FindReplace "d2", Split(bir, "/")(2) ‘转正日期 bir = Format(Arr(i, 11), "yyyy/mm/dd") FindReplace "yyy3", Split(bir, "/")(0) FindReplace "m3", Split(bir, "/")(1) FindReplace "d3", Split(bir, "/")(2) ‘工作岗位代号加框 FindText = "gzgw" InputText = Split(Arr(i, 12), " ")(0) FindAndInput FindText, InputText ‘手机号码加框 FindText = "cell" InputText = Arr(i, 13) FindAndInput FindText, InputText ‘区号加框 FindText = "zone" InputText = Split(Arr(i, 14), "-")(0) FindAndInput FindText, InputText ‘固话加框 FindText = "phone" InputText = Split(Arr(i, 14), "-")(1) FindAndInput FindText, InputText ‘家庭地址 FindReplace "adr", Arr(i, 15) ‘正常停止 If Arr(i, 16) = "正常" Then FindTrue = "zc" FindFalse = "tz" FindTrueAndFalse FindTrue, FindFalse Else FindTrue = "tz" FindFalse = "zc" FindTrueAndFalse FindTrue, FindFalse End If ‘是否失联 If Arr(i, 17) = "是" Then FindTrue = "yes1" FindFalse = "no1" FindTrueAndFalse FindTrue, FindFalse Else FindTrue = "no1" FindFalse = "yes1" FindTrueAndFalse FindTrue, FindFalse End If ‘失恋日期 If Arr(i, 17) = "是" Then bir = Format(Arr(i, 18), "yyyy/mm") FindReplace "yyy4", Split(bir, "/")(0) FindReplace "m4", Split(bir, "/")(1) Else FindReplace "yyy4", "" FindReplace "m4", "" End If ‘是否流出 If Arr(i, 19) = "是" Then FindTrue = "yes2" FindFalse = "no2" FindTrueAndFalse FindTrue, FindFalse Else FindTrue = "no2" FindFalse = "yes2" FindTrueAndFalse FindTrue, FindFalse End If ‘流出省市县 If Arr(i, 19) = "是" Then FindReplace "sheng", Split(Arr(i, 20), "-")(0) FindReplace "shi", Split(Arr(i, 20), "-")(1) FindReplace "xian", Split(Arr(i, 20), "-")(2) Else FindReplace "sheng", "" FindReplace "shi", "" FindReplace "xian", "" End If NewName = Arr(i, 2) & "-" & TmpName NewPath = ActiveDocument.Path & "\批量生成文件\" & NewName On Error Resume Next Kill NewPath On Error GoTo 0 TmpDoc.SaveAs2 NewPath TmpDoc.Close Next i MsgBox "Done!" Application.ScreenUpdating = True Application.DisplayAlerts = wdAlertsAll End Sub Sub FindTrueAndFalse(ByVal FindTrue As String, ByVal FindFalse As String) Selection.HomeKey wdStory With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = FindTrue .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Execute Replace:=wdReplaceOne Selection.InsertSymbol Font:="Wingdings 2", CharacterNumber:=-4014, Unicode:=True End With Selection.HomeKey wdStory With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = FindFalse .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Execute Replace:=wdReplaceOne Selection.InsertSymbol Font:="宋体", CharacterNumber:=9633, Unicode:=True End With End Sub Public Sub FindAndInput(ByVal FindText As String, ByVal InputText As String) Dim Rng As Range Dim RngStart As Long, RngEnd As Long Selection.HomeKey wdStory With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = FindText .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Execute Replace:=wdReplaceOne RngStart = Selection.Start For i = 1 To Len(InputText) Selection.Collapse wdCollapseEnd Selection.Range.ModifyEnclosure Style:=wdEncloseStyleSmall, Symbol:= _ wdEnclosureSquare, EnclosedText:=Mid(InputText, i, 1) Selection.MoveRight wdCharacter, 1 Next i RngEnd = Selection.Start Set Rng = ActiveDocument.Range(RngStart, RngEnd) SetFont Rng End With Set Rng = Nothing End Sub Public Sub SetFont(ByVal Rng As Range) With Rng.Font .Name = "黑体" .Size = 14 End With End Sub Public Sub FindReplace(ByVal FindText As String, ByVal RepText As String) Selection.HomeKey wdStory With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = FindText .Replacement.Text = RepText .Forward = True .Wrap = wdFindStop .Execute Replace:=wdReplaceOne End With End Sub
20170612xlVBA含方框文档填表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。