Excel精英培训网

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

[已解决]数据读取

[复制链接]
发表于 2017-6-2 14:59 | 显示全部楼层 |阅读模式
本帖最后由 dyzx 于 2017-6-5 14:50 编辑

请各位老师帮忙写个代码,从WORD文档中(黄色字体)数据读取到EXCEL中,多谢。
最佳答案
2017-6-5 12:11
  1. Private Sub CommandButton1_Click()

  2. Dim doc As Object
  3. Dim p As String, f As String
  4. Dim s As Integer
  5. Dim arr(1 To 30000, 1 To 6) As String    '如果文件数超过,再改

  6. Application.ScreenUpdating = False
  7. Application.DisplayAlerts = False

  8. p = ThisWorkbook.Path & ""
  9. f = Dir(p & "*.doc")
  10. i = 1
  11. Do While Len(f) > 0
  12.     Set doc = GetObject(p & f)
  13.         For i = 1 To doc.tables.Count Step 1
  14.         On Error Resume Next
  15.         With doc.tables(i)
  16.             A1 = zh(.cell(1, 1))
  17.                 If A1 Like "姓名*" Then
  18.                     s = s + 1
  19.                     arr(s, 1) = zh(.cell(2, 2))    '班级
  20.                     arr(s, 2) = zh(.cell(1, 2))    '姓名
  21.                     arr(s, 3) = zh(.cell(1, 6))    '学号
  22.                 End If
  23.         End With
  24.         With doc.tables(i + 1)
  25.             A1 = zh(.cell(1, 1))
  26.                 If A1 Like "年级*" Then
  27.                     arr(s, 4) = zh(.cell(15, 2))    '初一
  28.                     arr(s, 5) = zh(.cell(15, 3))    '初二
  29.                     arr(s, 6) = zh(.cell(15, 4))    '初三
  30.                 End If
  31.         End With
  32.         Next
  33.             doc.Close False
  34.             f = Dir()
  35. Loop
  36. Range("a3").Resize(s, 6) = arr

  37. Application.ScreenUpdating = True
  38. Application.DisplayAlerts = True

  39. End Sub

  40. Function zh(str As String) As String   '去除字符
  41.     zh = Replace(str, Chr(13), "")
  42.     zh = Replace(str, Chr(7), "")
  43. End Function
复制代码

读取数据.rar

25.18 KB, 下载次数: 8

发表于 2017-6-2 15:51 | 显示全部楼层
  1. Private Sub CommandButton1_Click()

  2. Dim doc As Object
  3. Dim p As String, f As String
  4. Dim s As Integer
  5. Dim arr(1 To 30000, 1 To 6) As String    '如果文件数超过,再改

  6. Application.ScreenUpdating = False

  7. p = ThisWorkbook.Path & ""
  8. f = Dir(p & "*.doc")
  9. Do While Len(f) > 0
  10.     Set doc = GetObject(p & f)
  11.     With doc.Tables(1)
  12.         s = s + 1
  13.         arr(s, 1) = zh(.cell(2, 2))    '班级
  14.         arr(s, 2) = zh(.cell(1, 2))    '姓名
  15.         arr(s, 3) = zh(.cell(1, 6))    '学号
  16.     End With
  17.     With doc.Tables(2)
  18.         arr(s, 4) = zh(.cell(15, 2))    '初一
  19.         arr(s, 5) = zh(.cell(15, 3))    '初二
  20.         arr(s, 6) = zh(.cell(15, 4))    '初三
  21.         doc.Close False
  22.     End With
  23.     f = Dir()
  24. Loop

  25.     '输出结果
  26.     Range("a3").Resize(s, 6) = arr
  27. End Sub

  28. Function zh(str As String) As String   '去除字符
  29.     zh = Replace(str, Chr(13), "")
  30.     zh = Replace(str, Chr(7), "")
  31. End Function


复制代码

读取数据.zip

50.49 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2017-6-4 11:22 | 显示全部楼层

[size=11.666666030883789px]chart888老师:我每个WORD文档中有几个分表,应该怎样读取各个人的数据,多谢指教。
回复

使用道具 举报

 楼主| 发表于 2017-6-5 08:07 | 显示全部楼层

chart888老师:我每个WORD文档中有几个分表,应该怎样读取各个人的数据,多谢指教。
回复

使用道具 举报

发表于 2017-6-5 09:17 | 显示全部楼层
dyzx 发表于 2017-6-5 08:07
chart888老师:我每个WORD文档中有几个分表,应该怎样读取各个人的数据,多谢指教。

教你一个笨办法你把word里面的图表复制到excel里面
然后你就看到了。。。。

希望能帮到你
给个最佳答案哈

例.zip

8.35 KB, 下载次数: 1

回复

使用道具 举报

 楼主| 发表于 2017-6-5 09:39 | 显示全部楼层
chart888老师:把word里面的图表复制到excel里面,然后怎样就看到了,不明。你能否将2楼代码改一下吗,多谢。

读取数据0.rar

32.87 KB, 下载次数: 13

回复

使用道具 举报

发表于 2017-6-5 12:11 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub CommandButton1_Click()

  2. Dim doc As Object
  3. Dim p As String, f As String
  4. Dim s As Integer
  5. Dim arr(1 To 30000, 1 To 6) As String    '如果文件数超过,再改

  6. Application.ScreenUpdating = False
  7. Application.DisplayAlerts = False

  8. p = ThisWorkbook.Path & ""
  9. f = Dir(p & "*.doc")
  10. i = 1
  11. Do While Len(f) > 0
  12.     Set doc = GetObject(p & f)
  13.         For i = 1 To doc.tables.Count Step 1
  14.         On Error Resume Next
  15.         With doc.tables(i)
  16.             A1 = zh(.cell(1, 1))
  17.                 If A1 Like "姓名*" Then
  18.                     s = s + 1
  19.                     arr(s, 1) = zh(.cell(2, 2))    '班级
  20.                     arr(s, 2) = zh(.cell(1, 2))    '姓名
  21.                     arr(s, 3) = zh(.cell(1, 6))    '学号
  22.                 End If
  23.         End With
  24.         With doc.tables(i + 1)
  25.             A1 = zh(.cell(1, 1))
  26.                 If A1 Like "年级*" Then
  27.                     arr(s, 4) = zh(.cell(15, 2))    '初一
  28.                     arr(s, 5) = zh(.cell(15, 3))    '初二
  29.                     arr(s, 6) = zh(.cell(15, 4))    '初三
  30.                 End If
  31.         End With
  32.         Next
  33.             doc.Close False
  34.             f = Dir()
  35. Loop
  36. Range("a3").Resize(s, 6) = arr

  37. Application.ScreenUpdating = True
  38. Application.DisplayAlerts = True

  39. End Sub

  40. Function zh(str As String) As String   '去除字符
  41.     zh = Replace(str, Chr(13), "")
  42.     zh = Replace(str, Chr(7), "")
  43. End Function
复制代码

读取数据0.zip

32.79 KB, 下载次数: 5

评分

参与人数 1 +3 收起 理由
dyzx + 3 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-6-5 14:49 | 显示全部楼层

chart888老师:多谢你的指教,多谢
回复

使用道具 举报

发表于 2017-6-5 15:02 | 显示全部楼层
dyzx 发表于 2017-6-5 14:49
chart888老师:多谢你的指教,多谢

不客气
一起学习
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 20:13 , Processed in 0.427607 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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