ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求段代码:删去指定段落的表格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-5-11 08:42 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
如提供的文档中有三个表格,我只想删去第六段中插入的表格,该怎样实现。
我想用.information来锚定目标表格,可是没有相应的表达。

删去指定位置的表格.rar

33.64 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2021-5-11 14:41 | 显示全部楼层
魏教师:第6段落确实在表格中,第7段落也在表格中。但我不认为,表格是在第6段落中。对付表格,首先一点是取消其文字环绕,然后再对表格进行相应处理。比如下面的代码:
Sub LoopTables()
    Dim t As Table
    For Each t In ActiveDocument.Tables
        With t
            .Rows.WrapAroundText = False
            .Range.Font.Color = wdColorRed
        End With
    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2021-5-11 18:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ActiveDocument.Paragraphs(6).Range.Tables(1).Delete

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-11 21:12 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-11 21:16 | 显示全部楼层
tcdatongye 发表于 2021-5-11 18:01
ActiveDocument.Paragraphs(6).Range.Tables(1).Delete

经测试,并不能锚定该位置上的表格。
也就是说,ActiveDocument.Paragraphs(6).Range.Tables(1).Delete和
ActiveDocument.Tables(1).Delete的效果是一样的。

TA的精华主题

TA的得分主题

发表于 2021-5-12 08:39 | 显示全部楼层
并不是删去第五段中内嵌式表格,而是第6段所在表格,故仅在第6段才能锚定。不知你这样定法有何意义?可以先找选择题答题卡所在段,然后到下个段就是所需定位表格了。
  1. Sub 删去第五段中内嵌式表格()
  2. Dim par As Paragraph, tbs As Tables
  3. For Each par In ActiveDocument.Paragraphs
  4.     n = n + 1
  5.       If par.Range.Information(wdWithInTable) = True Then
  6.         If n = 6 Then par.Range.Tables(1).Delete
  7.       End If
  8. Next
  9. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-12 20:58 | 显示全部楼层
413191246se 发表于 2021-5-11 14:41
魏教师:第6段落确实在表格中,第7段落也在表格中。但我不认为,表格是在第6段落中。对付表格,首先一点是 ...

谢谢帮助,不能设置为环绕型,只能设置为嵌入型,因为,其他类型会导致版面的混乱。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-12 21:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
tcdatongye 发表于 2021-5-12 08:39
并不是删去第五段中内嵌式表格,而是第6段所在表格,故仅在第6段才能锚定。不知你这样定法有何意义?可以先 ...

这是我试卷模板的一段代码,我是想自动格式,期中必须更新答案卡,而在更新答案卡是首先要删除。
而我的答案卡通常在第六段(或第五段)以表格形式插入。
另外,为了确保其通用性,使他也适用于没有答案卡的试卷的格式整理,故必须锚定指定位置的表格;若是不锚定位置,当这种没有答案卡的试卷中出现表格形式的题目,在格式试卷的时候,可能会将这种题目当答案卡给删除了。

TA的精华主题

TA的得分主题

发表于 2021-5-12 21:32 | 显示全部楼层
魏老师:我认为表格不属于某个段落,某个段落会属于表格。在使用表格前,要先循环设置其不环绕。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-12 21:34 | 显示全部楼层
tcdatongye 发表于 2021-5-12 08:39
并不是删去第五段中内嵌式表格,而是第6段所在表格,故仅在第6段才能锚定。不知你这样定法有何意义?可以先 ...

发现这段代码是可行的。
其实,我在发帖前也写了一个通用过程。如下
Public Sub 删去指定位置的表格(ParNub As Integer)
Dim par As Paragraph
For Each par In ActiveDocument.Paragraphs
    n = n + 1
      If n = ParNub Then
         If par.Range.Information(wdWithInTable) = True Then ActiveDocument.Tables(1).Delete
         Exit For
      End If
Next
End Sub
我也没有测试,相当然的以为tables(N)中的N会以先后建立的顺序,事实上,我测试的时候竟发觉,N是以文档中的位置为依据的。
谢谢你。
我若是先测试一下,免得麻烦你了。
再次谢谢你的帮助。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-27 13:36 , Processed in 0.049164 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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