Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2428|回复: 8

只提取表格中指定内容到WORD中

[复制链接]
发表于 2019-12-8 12:17 | 显示全部楼层 |阅读模式
只提取表格中指定内容到WORD中

现在的代码是全部人员提取到,WORD中
想修改成,只提取妻子,或者丈夫的信息到WORD表格中,即每个人的配偶

请老师们帮修改下,谢谢老师了!

2.jpg
附件.rar (25.61 KB, 下载次数: 10)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-12-18 20:13 | 显示全部楼层
增加一个选择妻子或丈夫的条件,然后判断数据行是否包含关键字:妻子或者丈夫就可以了.增加代码:
    sel = Val(Application.InputBox("请输入要导出的数据类型:" & vbCrLf & vbCrLf & "妻子:1" & vbCrLf & "丈夫:2", "提示"))
    seltxt = Application.WorksheetFunction.Choose(sel, "妻子", "丈夫")
后面输出数据的代码改为:
                '*************************************************************************
                If Trim(Cells(Target.Row, "E")) <> "" Then
                    renArr = Split(Cells(Target.Row, "E"), vbLf)
                    For hs = 0 To UBound(renArr)
                        If InStr(renArr(hs), seltxt) Then
                        re = Split(renArr(hs), ",")
                        hs = 0
                        .Tables(2).Cell(hs + 5, 2).Range.Text = re(0)
                        .Tables(2).Cell(hs + 5, 3).Range.Text = re(1)
                        .Tables(2).Cell(hs + 5, 4).Range.Text = Format(re(2), "yyyy.mm")
                        .Tables(2).Cell(hs + 5, 5).Range.Text = re(3)
                        .Tables(2).Cell(hs + 5, 6).Range.Text = re(4)
                        Exit For
                        End If
                    Next hs
                End If
                '*************************************************************************
回复

使用道具 举报

 楼主| 发表于 2019-12-18 20:22 | 显示全部楼层
logo28 发表于 2019-12-18 20:13
增加一个选择妻子或丈夫的条件,然后判断数据行是否包含关键字:妻子或者丈夫就可以了.增加代码:
    sel =  ...

老师你好,你那儿修改好的附件发了好吧,我没有修改对呢,谢谢你了老师!
回复

使用道具 举报

发表于 2019-12-18 20:25 | 显示全部楼层
test.zip (15.65 KB, 下载次数: 8)

评分

参与人数 1学分 +2 收起 理由
yjwdjfqb + 2

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2019-12-18 20:41 | 显示全部楼层


把这二句
sel = Val(Application.InputBox("请输入要导出的数据类型:" & vbCrLf & vbCrLf & "妻子:1" & vbCrLf & "丈夫:2", "提示"))
    seltxt = Application.WorksheetFunction.Choose(sel, "妻子", "丈夫")
改成下面这样,怎么改呀老师,谢谢你了!


MyNa = InputBox("请输入要导出的类型,多项类型中间用顿号分隔", "提示", "妻子、丈夫")

回复

使用道具 举报

发表于 2019-12-18 20:43 | 显示全部楼层
你是要同时选择两个类型的话,就用你改的,后面要分割一下
回复

使用道具 举报

 楼主| 发表于 2019-12-18 21:24 | 显示全部楼层
logo28 发表于 2019-12-18 20:43
你是要同时选择两个类型的话,就用你改的,后面要分割一下

    MyNa = InputBox("请输入要导出的类型,多项类型中间用顿号分隔", "提示", "妻子、丈夫")

    seltxt = Split(renArr(MyNa), "、")
我这样,不行呢,老师帮我修改下好吧,谢谢了!

回复

使用道具 举报

发表于 2019-12-18 22:40 | 显示全部楼层
Sub test()
    Dim rng As Range
    Dim xml As Range
    Dim Emp As Range
    Dim Target As Range
    Dim pic As String
    Dim objWord As Object
    Dim strPath$
    Dim hs As Integer
    Dim mbName, renArr
    Dim MyNa As String, seltxt
    Set objWord = CreateObject("word.application")
    strPath = ThisWorkbook.Path & Application.PathSeparator
    Sheets("数据").Select
    Set xml = Worksheets("数据").Range("C:C")
    On Error Resume Next
    Set rng = Application.InputBox("请选择数据" & vbCrLf & vbCrLf & "可按CTRL键选择不连续的人员", "提示", , Type:=8)
    MyNa = InputBox("请输入要导出的类型,多项类型中间用顿号分隔", "提示", "妻子、丈夫")
    seltxt = Split(MyNa, "、")
    If rng Is Nothing Then Exit Sub
    If Application.Intersect(xml, rng).Count <> rng.Count Then MsgBox "非法选区,程序退出!", vbInformation + vbOKOnly, "提示": Exit Sub
    For Each Emp In rng
        If IsEmpty(Emp) Then MsgBox "选择区有空单元格": Exit Sub
    Next Emp
    With objWord
        For Each Target In rng
           'With .Documents.Add(Template:=strPath & "模板-可选择操作.doc")
            With .Documents.Add(Template:=strPath & "模板" & ".doc")
                Application.StatusBar = "正在处理 " & Cells(Target.Row, "c")
                .bookmarks("姓名").Range.Text = Cells(Target.Row, "c")
               
               
               
               
                '*************************************************************************
                If Trim(Cells(Target.Row, "E")) <> "" Then
                    renArr = Split(Cells(Target.Row, "E"), vbLf)
                    For hs = 0 To UBound(renArr)
                        If InStr(renArr(hs), seltxt(0)) Or InStr(renArr(hs), seltxt(1)) Then
                        re = Split(renArr(hs), ",")
                        hs = 0
                        .Tables(2).Cell(hs + 5, 2).Range.Text = re(0)
                        .Tables(2).Cell(hs + 5, 3).Range.Text = re(1)
                        .Tables(2).Cell(hs + 5, 4).Range.Text = Format(re(2), "yyyy.mm")
                        .Tables(2).Cell(hs + 5, 5).Range.Text = re(3)
                        .Tables(2).Cell(hs + 5, 6).Range.Text = re(4)
                        Exit For
                        End If
                    Next hs
                End If
                '*************************************************************************
               
               
               
                .SaveAs strPath & Cells(Target.Row, "c") & ".doc", FileFormat:=0
                '.SaveAs strPath & Cells(Target.Row, "a") & "." & Cells(Target.Row, "c") & ".doc", FileFormat:=0
                .Close True
            End With
        Next
        .Quit
    End With
    Application.StatusBar = ""
    MsgBox "恭喜您!整理完成。", , "提示"
End Sub
回复

使用道具 举报

发表于 2019-12-18 22:41 | 显示全部楼层
完整代码已发,贴进模块里自行调试

评分

参与人数 1学分 +2 收起 理由
yjwdjfqb + 2 谢谢老师了,很好用!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 03:08 , Processed in 0.539198 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表