ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 删除图形(宏)——更新 2022.11.30

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-11-28 12:13 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 413191246se 于 2022-11-30 23:37 编辑

* 图片(InlineShapes):不包含文字,全部删除(如果包含文字,将变得复杂了,要 OCR 识别,此处不谈)。
* 图形(包含文本框)(Shapes):有的不含文字,有的含有文字,根据 .HasText 属性提取后默认粘贴到文首,我将其剪切到文尾,放在六个星号“*”后面。
* 图文框(Frames):可能由文本框转换而来,也可能由表格(文字环绕)转换而来。删除后会自动提取文字到所在段落的前面或后面。
      
* 不知各位朋友们有何高见?请探讨及赐教,谢谢大家!
     
* 请试用最新更新的代码《删除图形》宏:(示例文档请自行建立)
  1. Sub a1130_DeleteShapes()
  2. '删除图形
  3. '红色文字提取自图文框/六个星号"*"后面文字提取自文本框/表格环绕将变成图文框

  4.     Dim r As Range, t As Table, iShape As InlineShape, Frm As Frame, n&, m&

  5.     With ActiveDocument
  6.         If .Shapes.Count <> 0 Then .Content.InsertParagraphBefore: m = 1

  7.         Set r = .Paragraphs(1).Range

  8.         '表格取消文字环绕
  9.         For Each t In .Tables
  10.             t.Range.Rows.WrapAroundText = False
  11.         Next

  12.         '删除图片(InlineShape)
  13.         For Each iShape In .InlineShapes
  14.             iShape.Delete
  15.         Next

  16.         '删除图形(Shape)/文本框
  17.         For n = .Shapes.Count To 1 Step -1
  18.             With .Shapes(n)
  19.                 If .TextFrame.HasText <> 0 Then r.InsertBefore Text:=.TextFrame.TextRange.Text
  20.                 .Delete
  21.             End With
  22.         Next

  23.         '删除图文框(Frame)
  24.         For Each Frm In .Frames
  25.             With Frm
  26.                 .Select
  27.                 .Delete
  28.                 Selection.ClearFormatting
  29.                 Selection.Font.Color = wdColorRed
  30.             End With
  31.         Next

  32.         If m = 1 Then .Content.InsertAfter Text:=vbCr & "******" & vbCr & r.Text: r.Delete
  33.     End With

  34.     Selection.HomeKey 6
  35.     DocInfo
  36. End Sub

  37. Sub DocInfo()
  38.     With ActiveDocument
  39.         MsgBox "页数/Pages = " & .ComputeStatistics(wdStatisticPages) & vbCr & _
  40.             "字数/Characters = " & .ComputeStatistics(wdStatisticCharacters) & vbCr & vbCr & _
  41.             "分节/Sections = " & .Sections.Count & vbCr & _
  42.             "表格/Tables = " & .Tables.Count & vbCr & vbCr & _
  43.             "图片/InlineShapes = " & .InlineShapes.Count & vbCr & _
  44.             "图形/文本框/Shapes = " & .Shapes.Count & vbCr & _
  45.             "图文框/Frames = " & .Frames.Count, 0 + 48, "文档信息"
  46.     End With
  47. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-30 12:47 | 显示全部楼层
本帖最后由 413191246se 于 2022-11-30 23:42 编辑

经过探索,VBA 的确能使部分文本框转换为图文框!但尚有很多文本框不能转换为图文框,所以,文本框转换为图文框没有太大意义。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-30 23:45 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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