|
发表于 2017-7-28 08:27
来自手机
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 jiaxinl 于 2017-7-28 08:37 编辑
不知道大家有没有发现 失去联系日期 后面不管有没有数据 提取到的都是 "16."正则表达式入门与提高---VBA平台的正则学习参考资料
http://club.excelhome.net/forum.php?mod=viewthread&tid=1128647&extra=&mobile=2
Sub s()
Dim arr, cx As Object
Dim ex As Object
Set ex = GetObject(, "Excel.application")
Set cx = ex.workbooks("dyxxhzb.xls").sheets(1) 'Excel
Set re = CreateObject("vbscript.regexp")
re.Global = 1
re.Pattern = "姓名[:\\s]*(\\S+).+?性别[:\\s]*(\\S+).+?民族[:\\s]*(\\S+).+?公民身份证号[:\\s]*(\\S+).+?出生日期" & _
"[:\\s]*(\\S+).+?学历(参照《学历代码》填写相应代码)[:\\s]*(\\S+).+?人员类别[:\\s]*(\\S+).+?所在党支部(填写全称)" & _
"[:\\s]*(\\S+).+?加入党组织日期[:\\s]*(\\S+).+?转为正式党员日期" & _
"[:\\s]*(\\S+).+?工作岗位(参照《工作岗位代码》填写相应代码)" & _
"[:\\s]*(\\S+).+?联系电话(手机号)[:\\s]*(\\d+).+?(固定电话)" & _
"[:\\s]*(\\d+).+?家庭住址(具体到门牌号)[:\\s]*(\\S+).+?党籍状态" & _
"[:\\s]*(\\S+).+?是否为失联党员[:\\s]*(\\S+).+?失去联系日期[:\\s]*?(\\S+)是否为流动党员(由流出地党组织负责采集)" & _
"[:\\s]*(\\S+).+?外出流向:(.*?)\\r"
Set Ma = re.Execute(ActiveDocument.Range.Text)
i = 4
For Each g In Ma
i = i + 1
j = 1
cx.Cells(i, j) = i - 4 '填写序号列
For Each sb In g.submatches
j = j + 1
'调整栏位顺序
If j = 3 Then
cx.Cells(i, j + 2) = sb
ElseIf j = 4 Then
cx.Cells(i, j + 2) = sb
ElseIf j = 5 Then
cx.Cells(i, j - 1) = sb
ElseIf j = 6 Then
cx.Cells(i, j + 1) = sb
ElseIf j = 7 Then
cx.Cells(i, j + 1) = sb
ElseIf j = 8 Then
cx.Cells(i, j + 1) = sb
ElseIf j = 9 Then
cx.Cells(i, j - 6) = sb
ElseIf sb = "16." Then
cx.Cells(i, j) = ""
Else
cx.Cells(i, j) = sb
End If
Next sb
Next g
End Sub
|
|