ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5992|回复: 26

[求助] 如何提取学籍卡的内容和提取照片重命名

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-2-26 18:58 | 显示全部楼层 |阅读模式
求助:提取学籍卡的内容到及照片,内容提取到EXCEL,照片用学籍号重命名

提取学籍卡的内容和提取照片重命名.zip

65.7 KB, 下载次数: 86

TA的精华主题

TA的得分主题

发表于 2019-2-27 14:13 | 显示全部楼层
本帖最后由 未忘初心 于 2019-2-27 17:51 编辑
  1. Sub Main()
  2.    'Date:2019/2/27 正月廿三 Wednesday
  3.    '标签:word导出图片
  4.    '备注:
  5.     Dim DiaFile As FileDialog, i As Integer, wordPath As String
  6.     Dim arr2(1 To 3000, 1 To 14)
  7.     Dim wordApp As Object, wdDoc As Object, Table As Object
  8.     Dim myshape As Object, k As Long
  9.     Set DiaFile = Application.FileDialog(msoFileDialogFilePicker)
  10.     With DiaFile
  11.         .AllowMultiSelect = False
  12.         .Filters.Clear
  13.         .InitialFileName = ThisWorkbook.path
  14.         .Filters.Add "word Files", "*.doc*"
  15.         .Title = "请选择Word 文件"
  16.         If .Show() = -1 Then
  17.             wordPath = .SelectedItems(1)
  18.         End If
  19.     End With

  20.     If Len(wordPath) > 0 Then

  21.         Set wordApp = CreateObject("Word.Application")

  22.         GetObject(wordPath).Close 0

  23.         Set wdDoc = wordApp.Documents.Open(wordPath)
  24.         For i = 1 To wdDoc.Tables.Count
  25.             '----------------处理表格-----------------------------
  26.             Set Table = wdDoc.Tables(i)
  27.             k = k + 1
  28.             arr2(i, 1) = Replace(Table.Cell(2, 2).Range.Text, Chr(13) & Chr(7), "")        '姓名
  29.             arr2(i, 2) = Replace(Table.Cell(2, 4).Range.Text, Chr(13) & Chr(7), "")        '性别
  30.             arr2(i, 3) = Replace(Table.Cell(3, 2).Range.Text, Chr(13) & Chr(7), "")        '学籍号
  31.             arr2(i, 4) = Replace(Table.Cell(3, 6).Range.Text, Chr(13) & Chr(7), "")        '出生日期
  32.             arr2(i, 5) = "'" & Replace(Table.Cell(4, 4).Range.Text, Chr(13) & Chr(7), "")        'sfz
  33.             arr2(i, 6) = Replace(Table.Cell(5, 2).Range.Text, Chr(13) & Chr(7), "")        '所在学校
  34.             arr2(i, 7) = Replace(Table.Cell(6, 6).Range.Text, Chr(13) & Chr(7), "")        '所在学校
  35.             arr2(i, 8) = Replace(Table.Cell(7, 2).Range.Text, Chr(13) & Chr(7), "")        '所在学校
  36.             arr2(i, 9) = Replace(Table.Cell(10, 2).Tables(1).Cell(2, 2).Range.Text, Chr(13) & Chr(7), "")
  37.             arr2(i, 10) = Replace(Table.Cell(10, 2).Tables(1).Cell(2, 3).Range.Text, Chr(13) & Chr(7), "")
  38.             arr2(i, 11) = Replace(Table.Cell(10, 2).Tables(1).Cell(3, 2).Range.Text, Chr(13) & Chr(7), "")
  39.             arr2(i, 12) = Replace(Table.Cell(10, 2).Tables(1).Cell(3, 3).Range.Text, Chr(13) & Chr(7), "")
  40.             arr2(i, 13) = Replace(Table.Cell(13, 1).Range.Text, Chr(13) & Chr(7), "")        '学籍变动时间
  41.             arr2(i, 14) = Replace(Table.Cell(13, 2).Range.Text, Chr(13) & Chr(7), "")        '学籍变动情况
  42.             Set Table = Nothing
  43.             '----------------处理图片-----------------------------
  44.             Set myshape = wdDoc.InlineShapes(i)
  45.             If myshape.Type = 3 Then
  46.                 myshape.Select
  47.                 Set myshape = myshape.ConvertToShape
  48.                 With myshape
  49.                     .ScaleHeight 1, True, msoScaleFromMiddle
  50.                     .ScaleWidth 1, True, msoScaleFromMiddle
  51.                 End With

  52.                 wdDoc.ActiveWindow.Selection.Copy
  53.                 With Sheet1.ChartObjects.Add(0, 0, myshape.Width, myshape.Height).Chart
  54.                     .Paste
  55.                     .Export wdDoc.path & "\提取后重命名的照片" & arr2(i, 3) & ".jpg"
  56.                     .Parent.Delete
  57.                 End With
  58.                 '还原
  59.                 Set myshape = myshape.ConvertToInlineShape
  60.                 With myshape
  61.                     .Height = 83.9
  62.                     .Width = 54.15
  63.                 End With
  64.             End If
  65.         Next
  66.         wdDoc.Close 0
  67.         wordApp.Quit
  68.         Set wdDoc = Nothing
  69.         Set wordApp = Nothing
  70.         If k > 0 Then
  71.             Sheet1.Range("A2").Resize(k, 14) = arr2
  72.             MsgBox "完成"
  73.         End If
  74.     End If
  75. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-2-27 14:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 未忘初心 于 2019-2-27 14:22 编辑

看看是不是这样 O(∩_∩)O


1.rar (67.52 KB, 下载次数: 126)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-2-27 15:44 | 显示全部楼层
  1. Sub Mian()
  2. Application.ScreenUpdating = False
  3. Application.DisplayAlerts = False
  4. Application.EnableEvents = False
  5. Application.StatusBar = True
  6. Dim Path$, File$, WordApp, Dic, Br(1 To 10000, 1 To 14)
  7.     Path = ThisWorkbook.Path & ""
  8.     File = Dir(Path & "学生学籍卡.doc*")
  9.     Set Dic = Data()
  10.     Set WordApp = CreateObject("Word.Application")
  11.     WordApp.Visible = False
  12.     Dim Table, Doc, RKey, Ckey, K&, KK&, eTable

  13.     '=遍历Word的table
  14.     Set Doc = WordApp.Documents.Open(Path & File)
  15.     For Each Table In Doc.Tables
  16.     K = K + 1
  17.         With Table
  18.          Set eTable = Table.cell(10, 2).Tables(1)
  19.          Br(K, 9) = Replace(eTable.cell(2, 2).Range.Text, "", "")
  20.          Br(K, 10) = Replace(eTable.cell(2, 3).Range.Text, "", "")
  21.          Br(K, 11) = Replace(eTable.cell(3, 2).Range.Text, "", "")
  22.          Br(K, 12) = Replace(eTable.cell(3, 3).Range.Text, "", "")
  23.         KK = 0
  24.             For Each RKey In Dic.keys
  25.                 For Each Ckey In Dic(RKey).keys
  26.                 KK = KK + 1
  27.                     Br(K, KK) = Replace(.cell(RKey, Ckey).Range.Text, "", "")
  28.                     If KK = 8 Then KK = KK + 4
  29.                 Next
  30.             Next
  31.         End With
  32.         Doc.InlineShapes(I).Copy
  33.     Next
  34.     Doc.Close
  35.     WordApp.Visible = True
  36.     WordApp.Quit
  37.     Set WordApp = Nothing
  38.     Range("a2").Resize(K, 14) = Br
  39.     MsgBox "读取数据成功"
  40.     Application.StatusBar = False
  41.     Application.EnableEvents = True
  42.     Application.ScreenUpdating = True
  43.     Application.DisplayAlerts = True
  44. End Sub


  45. Private Function Data()
  46. Dim Ar, Dic, I&, J&
  47.     Ar = Sheets("取数规则").Range("a1").CurrentRegion
  48.     Set Dic = CreateObject("Scripting.Dictionary")
  49.     For I = 2 To UBound(Ar)
  50.     Set Dic(Ar(I, 1)) = CreateObject("Scripting.Dictionary")
  51.         For J = 2 To UBound(Ar, 2)
  52.             If Ar(I, J) <> "" Then
  53.                 Dic(Ar(I, 1))(Ar(I, J)) = True
  54.             End If
  55.         Next J
  56.     Next
  57.     Set Data = Dic
  58. End Function
复制代码

TA的精华主题

TA的得分主题

发表于 2019-2-27 16:40 | 显示全部楼层
发现个小问题 :
With Sheet1.ChartObjects.Add(0, 0, myshape.Width, myshape.Height).Chart
                     .Parent.Select'16版测试不过
                    .Paste
                    .Export wdDoc.path & "\提取后重命名的照片" & arr2(i, 3) & ".jpg"
                    .Parent.Delete
                End With

TA的精华主题

TA的得分主题

发表于 2019-2-27 16:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
未忘初心 发表于 2019-2-27 14:18
看看是不是这样 O(∩_∩)O

老师:非常好用,无问题

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-27 17:08 | 显示全部楼层
二楼大神,谢谢,正是我想要的结果

TA的精华主题

TA的得分主题

发表于 2019-2-27 17:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
提取的图片是白板,难道是我版本的问题?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-27 17:52 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-2-27 19:31 | 显示全部楼层
中和无忌 发表于 2019-2-27 17:52
呵,我点开图片查看也是白板,还请大神完善下

你的什么版本呢

评分

1

查看全部评分

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-27 22:18 , Processed in 0.046875 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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