ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 通用Word表格导入工具_Doc2Xls

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2018-11-6 17:50 | 显示全部楼层
请问怎么下载软件?下载下来后是Excel表格~~~

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-6 17:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lyz10252827145 发表于 2018-11-6 17:50
请问怎么下载软件?下载下来后是Excel表格~~~

打开的时候选择 启用宏  或者 启用活动内容 ,然后点击表中的按钮 Doc2Xls

TA的精华主题

TA的得分主题

发表于 2018-11-7 09:54 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-7 12:03 | 显示全部楼层
lyz10252827145 发表于 2018-11-7 09:54
我下载完就是个图片  点不开

那算了吧,这个工具不适合你

TA的精华主题

TA的得分主题

发表于 2018-11-7 19:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个咋解决
微信图片_20181107192033.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-7 19:30 | 显示全部楼层

可能的原因:
电脑中存在多个不同版本的office
系统的中office是精简版或者绿色版
系统中安装过wps,或者现在存在wps

解决方法:这个问题比较难解决,大体来说如下,卸载wps,卸载office并清理office(微软有官方工具),安装完整版的office

祝你好运!

TA的精华主题

TA的得分主题

发表于 2018-12-3 15:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
大神,可以请教下从word提取数据到excel的问题么
word中内嵌有一个表格,想将表格转换成html代码存至excel中的一个字段,该字段数据最终会入到数据库表,最终用于页面展示出原有表格

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-3 18:24 | 显示全部楼层
本帖最后由 Moneky 于 2018-12-3 18:43 编辑

借助剪贴板和正则达成
原理:在word中选中表格→复制→读取剪贴板HTML格式→提取table代码→清洗冗余代码

  1. Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
  2. Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
  3. Declare Function CloseClipboard Lib "user32" () As Long
  4. Declare Function RegisterClipboardFormat Lib "user32" Alias "RegisterClipboardFormatA" (ByVal lpString As String) As Long
  5. Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  6. Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
  7. Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
  8. Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long

  9. Private Function GetTable2Html(bXXHtml As Boolean) As String
  10.     Dim hMem As Long
  11.     Dim lpData As Long
  12.     Dim nClipSize As Long
  13.     Dim bytClipData() As Byte
  14.     Dim sClipString As String
  15.     CF_HTML = RegisterClipboardFormat("HTML Format")                '注册HTML Format
  16.     If OpenClipboard(ByVal 0&) Then                                 '如果OpenClipboard函数返回非0值,说明成功打开剪贴板
  17.         hMem = GetClipboardData(CF_HTML)                            '获取剪贴板中以文本格式存在的内存对象的句柄
  18.         If CBool(hMem) Then                                         '如果剪贴板中对应的格式不存在,此时的hMem会是0(Null),这里用CBool把它转换成Boolean类型加以判断
  19.             lpData = GlobalLock(hMem)                               '获取内存对象第一个字节的内存地址
  20.             nClipSize = GlobalSize(hMem)                            '获取内存对象的字节长度
  21.             ReDim bytClipData(1 To nClipSize)                       '修改缓冲字节数组的长度,确保能够容纳内存对象的全部数据
  22.             CopyMemory bytClipData(1), ByVal lpData, nClipSize      '复制内存对象的数据到字节数组中,注意Byval的用法
  23.             sClipString = StrConv(bytClipData, vbUnicode)           '将字节转化成字符串
  24.             GetTable2Html = IIf(bXXHtml, xxHTML(sClipString), sClipString)
  25.         Else
  26.             GetTable2Html = "None"
  27.         End If
  28.         CloseClipboard
  29.     End If
  30. End Function
  31. Private Function xxHTML(sHtml As String) As String '正则清洗
  32.     Dim oReg As New RegExp, tmp As String
  33.     With oReg
  34.         .Pattern = "<table[\w\W]*/table>"
  35.         .Global = True
  36.         .MultiLine = True
  37.          tmp = .Execute(sHtml)(0).Value
  38.          .Pattern = "<span.*?>|</span>|<o:p>|</o:p>|style='[\s\S]*?'|class=[a-zA-Z]*"
  39.          tmp = .Replace(tmp, "")
  40.          xxHTML = tmp
  41.     End With
  42. End Function
  43. Private Function Table2Html(vDoc As Document, id As Long, bXHtml As Boolean) As String
  44. '                           document          表格id        是否清洗
  45.     Dim vTable As Table
  46.     Set vTable = vDoc.Tables(id)
  47.     vTable.Select
  48.     Selection.Copy
  49.     Table2Html = GetTable2Html(bXHtml)
  50. End Function
  51. Sub test()
  52.     Dim sHtml As String
  53.     sHtml = Table2Html(ActiveDocument, 1, True)
  54.     MsgBox sHtml
  55.     Debug.Print sHtml
  56. End Sub

复制代码

TA的精华主题

TA的得分主题

发表于 2019-1-3 16:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-1-17 12:15 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-28 18:12 , Processed in 0.044364 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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