ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 用WORD VBA 定位提取文字,代码如何写,请大师们指教?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-11-27 20:39 | 显示全部楼层
楼主,我已经把 微软官方免费的 Word-VBA 帮助文档发给你了,好好学习学习吧!
你说的 三栏文字 变成 一栏文字,录制一个宏就解决了。但关键是怎么找到它。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-28 10:37 | 显示全部楼层
关键是转换后的WORD不是纯文档格式,有的内容是一行一行的纯文档,有的内容在文本框里,还有的是在表里,看上去都是在那个位置,可一旦复制粘贴到EXCEL表里就不霍规则了,现在的问题是怎样把三栏的文字很规律的复制到一个新的文档里,复制后的文档是一栏很规则的纯文字内容,这样复制到EXCEL表里就很规则了,还请老师指教。

TA的精华主题

TA的得分主题

发表于 2022-11-28 12:03 | 显示全部楼层
* 楼主,请重新测试,代码仅供参考。粉红文字为表格文字。六个星号“******”后面的文字取自文本框。
  1. Sub DocInfo()
  2.     With ActiveDocument
  3.         MsgBox "Pages = " & .ComputeStatistics(wdStatisticPages) & vbCr & _
  4.             "Characters = " & .ComputeStatistics(wdStatisticCharacters) & vbCr & vbCr & _
  5.             "Sections = " & .Sections.Count & vbCr & _
  6.             "Tables = " & .Tables.Count & vbCr & vbCr & _
  7.             "Shapes = " & .Shapes.Count & vbCr & _
  8.             "InlineShapes = " & .InlineShapes.Count, 0 + 48, "DocInfo"
  9.     End With
  10. End Sub

  11. Sub a_1128_DeleteShapes_Update()
  12. '删除图形
  13.     Dim r As Range, iShape As InlineShape, n&

  14.     With ActiveDocument
  15.         .Content.InsertParagraphBefore

  16.         Set r = .Range(0, .Paragraphs(1).Range.End)

  17.         For Each iShape In .InlineShapes
  18.             iShape.Delete
  19.         Next

  20.         For n = .Shapes.Count To 1 Step -1
  21.             With .Shapes(n)
  22.                 If .TextFrame.HasText <> 0 Then r.InsertBefore Text:=.TextFrame.TextRange.Text
  23.                 .Delete
  24.             End With
  25.         Next

  26.         .Content.InsertAfter Text:=vbCr & "******" & vbCr & r.Text
  27.         r.Delete
  28.     End With
  29. End Sub

  30. Sub a_a1128_Cancel_Columns()

  31.     With ActiveDocument
  32.         .Fields.Unlink
  33.         .ConvertNumbersToText
  34.         .Content.Find.Execute "^l", , , 0, , , , , , "^p", 2
  35.         
  36.         Dim t As Table
  37.         For Each t In .Tables
  38.             t.Range.Rows.WrapAroundText = False
  39.             t.Range.Font.ColorIndex = wdPink
  40.         Next
  41.         
  42.         Dim Sec As Section
  43.         For Each Sec In .Sections
  44.             Sec.PageSetup.TextColumns.SetCount NumColumns:=1
  45.         Next
  46.         
  47.         .Content.Find.Execute "^12", , , 0, , , , , , "", 2
  48.         
  49.         a_1128_DeleteShapes_Update
  50.         
  51.         With Selection
  52.             .HomeKey 6
  53.             With .Find
  54.                 .ClearFormatting
  55.                 .Text = "^13^12"
  56.                 .Replacement.Text = ""
  57.                 .Forward = True
  58.                 .MatchWildcards = True
  59.                 Do While .Execute
  60.                     With .Parent
  61.                         .HomeKey
  62.                         .Move
  63.                         .Delete
  64.                     End With
  65.                 Loop
  66.             End With
  67.         End With
  68.         
  69.         With .Content.Find
  70.             .Execute "^n", , , 0, , , , , , "", 2
  71.             .Execute "^t", , , 0, , , , , , "", 2
  72.             .Execute "([ ]@)([0-9]@)", , , 1, , , , , , "^p\2", 2
  73.         End With
  74.         
  75.         For Each t In .Tables
  76.             With t
  77.                 .Select
  78.                 Selection.Rows.ConvertToText Separator:=wdSeparateByTabs, NestedTables:=True
  79.                 Selection.Find.Execute "^t", , , 0, , , , , , "^p", 2
  80.             End With
  81.         Next
  82.         
  83.         With .Content.ParagraphFormat
  84.             .LeftIndent = CentimetersToPoints(0)
  85.             .RightIndent = CentimetersToPoints(0)
  86.             .SpaceBefore = 0
  87.             .SpaceBeforeAuto = False
  88.             .SpaceAfter = 0
  89.             .SpaceAfterAuto = False
  90.             .LineSpacingRule = wdLineSpaceSingle
  91.             .Alignment = wdAlignParagraphJustify
  92.             .WidowControl = False
  93.             .KeepWithNext = False
  94.             .KeepTogether = False
  95.             .PageBreakBefore = False
  96.             .NoLineNumber = False
  97.             .Hyphenation = True
  98.             .FirstLineIndent = CentimetersToPoints(0)
  99.             .OutlineLevel = wdOutlineLevelBodyText
  100.             .CharacterUnitLeftIndent = 0
  101.             .CharacterUnitRightIndent = 0
  102.             .CharacterUnitFirstLineIndent = 0
  103.             .LineUnitBefore = 0
  104.             .LineUnitAfter = 0
  105.             .AutoAdjustRightIndent = False
  106.             .DisableLineHeightGrid = True
  107.         End With
  108.     End With
  109.    
  110.     Selection.HomeKey 6
  111.     DocInfo
  112. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-28 14:23 | 显示全部楼层
老师的宏代码很好!学生非常感谢。还需要再加上一些控制位置的代码,有个别位置没有处理好,造成了学校的专业错位,还需加上点代码,谢谢老师的指教。王雪峰13838087988

TA的精华主题

TA的得分主题

发表于 2022-11-29 18:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不需要代码

转换的WORD文档.rar

130.39 KB, 下载次数: 8

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-29 19:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
老师转换的也是有错位的,不规范,谢谢老师们的指导。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 21:24 , Processed in 0.041305 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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