Excel精英培训网

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

[已解决]将word个人信息表汇总到EXCEL表

[复制链接]
发表于 2017-1-8 15:41 | 显示全部楼层 |阅读模式
本帖最后由 dyzx 于 2017-1-10 15:41 编辑

请各位老师帮忙将word个人信息表汇总到EXCEL表,代码应该怎样写,请指教,多谢。
最佳答案
2017-1-8 17:13
Sub test()
    Dim p As String, f As String
    Dim A(1 To 1000, 1 To 6) As String
    Dim i As Integer

    Application.ScreenUpdating = False
    p = ThisWorkbook.Path & "\"
    f = Dir(p & "*.doc")

    Do While f <> ""
        With GetObject(p & f).Tables(1)
            i = i + 1
            A(i, 1) = delChar(.cell(2, 2))
            A(i, 2) = delChar(.cell(3, 2))
            A(i, 3) = delChar(.cell(8, 2))
            A(i, 4) = delChar(.cell(8, 4))
            A(i, 5) = delChar(.cell(12, 4))
            A(i, 6) = getIP(.cell(17, 2))
        End With
        f = Dir()
    Loop

    Range("a1").CurrentRegion.Offset(1, 0).ClearContents
    [A2].Resize(i, UBound(A, 2)) = A
End Sub

'删除多余的字符
Function delChar(x As String) As String
    delChar = Left(x, Len(x) - 1)
End Function

'获取IP和掩码
Function getIP(str As String) As String
    With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = "(\d+\.){3}\d+"
        If .Execute(str).Count Then getIP = .Execute(str)(0) & "/" & .Execute(str)(1)
    End With
End Function

2.rar (36.96 KB, 下载次数: 26)

word个人分表信息汇总到EXCEL表上.rar

35.81 KB, 下载次数: 15

发表于 2017-1-8 17:13 | 显示全部楼层    本楼为最佳答案   
Sub test()
    Dim p As String, f As String
    Dim A(1 To 1000, 1 To 6) As String
    Dim i As Integer

    Application.ScreenUpdating = False
    p = ThisWorkbook.Path & "\"
    f = Dir(p & "*.doc")

    Do While f <> ""
        With GetObject(p & f).Tables(1)
            i = i + 1
            A(i, 1) = delChar(.cell(2, 2))
            A(i, 2) = delChar(.cell(3, 2))
            A(i, 3) = delChar(.cell(8, 2))
            A(i, 4) = delChar(.cell(8, 4))
            A(i, 5) = delChar(.cell(12, 4))
            A(i, 6) = getIP(.cell(17, 2))
        End With
        f = Dir()
    Loop

    Range("a1").CurrentRegion.Offset(1, 0).ClearContents
    [A2].Resize(i, UBound(A, 2)) = A
End Sub

'删除多余的字符
Function delChar(x As String) As String
    delChar = Left(x, Len(x) - 1)
End Function

'获取IP和掩码
Function getIP(str As String) As String
    With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = "(\d+\.){3}\d+"
        If .Execute(str).Count Then getIP = .Execute(str)(0) & "/" & .Execute(str)(1)
    End With
End Function

2.rar (36.96 KB, 下载次数: 26)

评分

参与人数 1 +3 收起 理由
dyzx + 3 赞一个

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-1-8 19:12 | 显示全部楼层
爱疯 发表于 2017-1-8 17:13
Sub test()
    Dim p As String, f As String
    Dim A(1 To 1000, 1 To 6) As String

爱疯老师:如果我要增加一列“用户类型”,但其中有“五个选项”,应该怎样修改代码,多谢指教。
回复

使用道具 举报

发表于 2017-1-8 19:23 | 显示全部楼层
dyzx 发表于 2017-1-8 19:12
爱疯老师:如果我要增加一列“用户类型”,但其中有“五个选项”,应该怎样修改代码,多谢指 ...

我不大理解3楼的含义。


最好,你手动添加一列,并提供结果。再看能否看懂
回复

使用道具 举报

 楼主| 发表于 2017-1-8 20:28 | 显示全部楼层
爱疯 发表于 2017-1-8 19:23
我不大理解3楼的含义。

爱疯老师:如果我要增加一列“用户类型”,但其中有“五个选项”,应该怎样修改代码,多谢指 ...

word个人分表信息汇总到EXCEL表上.rar

36.8 KB, 下载次数: 2

回复

使用道具 举报

发表于 2017-1-9 08:43 | 显示全部楼层
怎么提问提到一样的内容去了?
回复

使用道具 举报

 楼主| 发表于 2017-1-9 11:28 | 显示全部楼层
爱疯 发表于 2017-1-8 17:13
Sub test()
    Dim p As String, f As String
    Dim A(1 To 1000, 1 To 6) As String

爱疯老师:为什么将你的代码用于其他表格不可用,请指教,多谢。

汇总.rar

30.81 KB, 下载次数: 6

回复

使用道具 举报

 楼主| 发表于 2017-1-10 07:58 | 显示全部楼层
爱疯 发表于 2017-1-8 17:13
Sub test()
    Dim p As String, f As String
    Dim A(1 To 1000, 1 To 6) As String

爱疯老师:多谢你的帮助,多谢。但如果我将个人信息表放入一个文件夹里,应该怎样修改代码,多谢指教。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 00:47 , Processed in 0.374682 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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