ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何将固定格式的word文档快速转为表格形式?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-7-31 11:01 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本人经常有固定格式的文档,需要同时转换为表格形式(word表格或者excel表格都可以)。由于有多页文字,如果一个个复制粘贴,耗时较长。请教各位看看有没有快速办法将word文档格式转为表格形式?谢谢

如何快速将word文档转为表格形式?.zip

19.47 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2024-7-31 21:48 | 显示全部楼层
楼主,你附件第二段落缺少“督导单位”,请将真实的附件上传(当然为了保密,可以将单位虚拟一下)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-6 16:04 | 显示全部楼层
413191246se 发表于 2024-7-31 21:48
楼主,你附件第二段落缺少“督导单位”,请将真实的附件上传(当然为了保密,可以将单位虚拟一下)。

麻烦你按统一没有“督导单位”的来操作,谢谢。期待你的解决!

TA的精华主题

TA的得分主题

发表于 2024-8-7 12:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
* 楼主,请将代码复制到空白文档后,全选,剪切,再粘贴到 VBE 中,这样不会乱码。
* 基本达到目的,但并非完美!未做字段检查,如果文档不规范,将会出错,请自行检查!
* 表格是 Word 格式并未保存,也可以将其复制到 Excel 中保存。
  1. Sub a0807_Txt2Tab()
  2.     Const s As String = "^13[一二三四五六七八九十百千零〇○Oo00Oo]@、*^13"
  3.     Dim doc As Document, i As Paragraph, j&, k&, r As Range, n&, oLines&, c As Cell
  4.    
  5.     Set doc = ActiveDocument
  6.    
  7.     For Each i In doc.Paragraphs
  8.         With i.Range
  9.             If Asc(.Text) = 13 Then .Delete
  10.         End With
  11.     Next
  12.    
  13.     With doc.Content
  14.         .InsertParagraphBefore
  15.         .InsertParagraphAfter
  16.         With .Find
  17.             .Execute "(", , , 0, , , , , , "(", 2
  18.             .Execute ")", , , 0, , , , , , ")", 2
  19.             .Execute ":", , , 0, , , , , , ":", 2
  20.         End With
  21.     End With
  22.    
  23.     With Selection
  24.         .WholeStory
  25.         .Font.ColorIndex = wdAuto
  26.         
  27.         .HomeKey 6
  28.         With .Find
  29.             .ClearFormatting
  30.             .Text = "^13整改措施?^13"
  31.             .Replacement.Text = ""
  32.             .Forward = True
  33.             .MatchWildcards = True
  34.             Do While .Execute
  35.                 With .Parent
  36.                     .MoveStart
  37.                     Do While .Next(4, 1) Like "(*"
  38.                         .Paragraphs(1).Range.Characters.Last.Text = "`"
  39.                     Loop
  40.                     .Paragraphs(1).Range.Font.Color = wdColorPink
  41.                     .Start = .End
  42.                 End With
  43.             Loop
  44.         End With
  45.         .Move 4
  46.         .EndKey 6, 1
  47.         .Delete
  48.    
  49.         .HomeKey 6
  50.         With .Find
  51.             .ClearFormatting
  52.             .Text = s
  53.             .Replacement.Text = ""
  54.             .Forward = True
  55.             .MatchWildcards = True
  56.             Do While .Execute
  57.                 With .Parent
  58.                     .MoveStart
  59.                     .InsertBefore Text:="问题:"
  60.                     .Font.Color = wdColorRed
  61.                     If j = 0 Then
  62.                         j = 1
  63.                         .HomeKey 6, 1
  64.                         .Delete
  65.                     End If
  66.                     .Start = .End
  67.                 End With
  68.             Loop
  69.         End With
  70.             
  71.         k = doc.Paragraphs.Count
  72.         oLines = k / 5
  73.         .EndKey 6
  74.         doc.Tables.Add Range:=Selection.Range, NumRows:=oLines, NumColumns:= _
  75.         5, DefaultTableBehavior:=wdWord9TableBehavior

  76.         For Each c In doc.Tables(1).Range.Cells
  77.             With c.Range
  78.                 n = n + 1
  79.                 c.Range.Text = doc.Paragraphs(n).Range.Text
  80.             End With
  81.         Next
  82.     End With
  83.    
  84.     doc.Tables(1).Range.Cut
  85.     doc.Close 0
  86.    
  87.     Documents.Add.Content.Paste
  88.    
  89.     With ActiveDocument.Tables(1)
  90.         With .Columns(1)
  91.             .Select
  92.             Selection.Find.Execute "问题:", , , 0, , , , , , "", 2
  93.         End With
  94.         
  95.         With .Columns(2)
  96.             .Select
  97.             Selection.Find.Execute "责任单位:", , , 0, , , , , , "", 2
  98.         End With
  99.         
  100.         With .Columns(3)
  101.             .Select
  102.             Selection.Find.Execute "整改目标:", , , 0, , , , , , "", 2
  103.         End With
  104.         
  105.         With .Columns(4)
  106.             .Select
  107.             Selection.Find.Execute "整改时限:", , , 0, , , , , , "", 2
  108.         End With
  109.         
  110.         With .Columns(5)
  111.             .Select
  112.             Selection.Find.Execute "`", , , 0, , , , , , "^p", 2
  113.         End With
  114.         
  115.         With .Columns(5)
  116.             .Select
  117.             Selection.Find.Execute "整改措施:^p", , , 0, , , , , , "", 2
  118.         End With
  119.         
  120.         .Columns(1).Select
  121.         Selection.InsertColumns
  122.         n = 0
  123.         
  124.         For Each c In Selection.Cells
  125.             n = n + 1
  126.             c.Range.Text = n
  127.         Next
  128.         
  129.         .Rows(1).Select
  130.         Selection.InsertRows
  131.         
  132.         With .Rows(1)
  133.             .Cells(1).Range = "序号"
  134.             .Cells(2).Range = "问题"
  135.             .Cells(3).Range = "责任单位"
  136.             .Cells(4).Range = "整改目标"
  137.             .Cells(5).Range = "整改时限"
  138.             .Cells(6).Range = "整改措施"
  139.         End With
  140.         
  141.         .AutoFitBehavior (wdAutoFitContent)
  142.         .Select
  143.         .AutoFitBehavior (wdAutoFitWindow)
  144.    
  145.         'delete-space
  146.         For Each c In .Range.Cells
  147.             For Each i In c.Range.Paragraphs
  148.                 If Asc(i.Range) = 13 And Len(i.Range) = 1 Then i.Range.Delete
  149.             Next
  150.             With c.Range.Paragraphs
  151.                 If .Count > 1 And Len(.Last.Range) = 2 Then .Last.Previous.Range.Characters.Last.Delete
  152.             End With
  153.         Next
  154.         
  155.         .Columns(1).Select
  156.         Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
  157.    
  158.         'head-bold
  159.         .Cell(1, 1).Select
  160.         With Selection
  161.             .SelectRow
  162.             .Font.Bold = True
  163.             .ParagraphFormat.Alignment = wdAlignParagraphCenter
  164.         End With
  165.         
  166.         With .Range.Font
  167.             .Size = 10.5
  168.             .ColorIndex = wdAuto
  169.         End With
  170.         .Rows.Alignment = wdAlignRowCenter
  171.         .Range.Cells.VerticalAlignment = wdCellAlignVerticalCenter
  172.     End With
  173.    
  174.     Selection.HomeKey 6
  175.     MsgBox "Complete!", 0 + 48
  176. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-25 15:35 , Processed in 0.042438 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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