ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 想法能实现吗,word跳过图片表格和相对应的行VBA

[复制链接]

TA的精华主题

TA的得分主题

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

Windows 10;
word 2016;代码
Dim Para As Paragraph
  For Each  Para In ActiveDocument.Paragraphs
    With  Para.Range
If .ParagraphFormat.OutlineLevel = wdOutlineLevelBodyText Then
with.Font
       .NameFarEast = "宋体"
        .Name= "Times New Roman"
        .Size =12
        .Bold = False
end with
with .ParagraphFormat
       .LineSpacingRule = wdLineSpace1pt5          '行距
       .CharacterUnitFirstLineIndent = 2                '首行缩进2ch
        .LeftIndent = CentimetersToPoints(0)
       .RightIndent = CentimetersToPoints(0)
        .SpaceBefore =0
使用以上代码,结果图片,表格内容,全部首行缩进,图标,表格标题也全部首行缩进。
图中所示,如何在处理word正文的时候,将图片以及图片的下一行;表格的内容以及表格的上一行文字排除在外。只对其他的正文部分进行处理。也就是遍历的时候,对表格和图片以及对应一行跳过。图片标题,表格标题另行设置字体字号,求高人的VBA代码???

008.jpg


TA的精华主题

TA的得分主题

发表于 2020-11-29 12:23 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-1 23:53 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-2 21:05 | 显示全部楼层

with para.range
If .InlineShapes.Count = 0 And .Tables.Count > 0 And Para.Next.Range.Tables.Count = 0 And .ParagraphFormat.OutlineLevel = wdOutlineLevelBodyText Then
、、、、内容
上面这一句总是报错

TA的精华主题

TA的得分主题

发表于 2020-12-4 00:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主,下面代码仅供参考(不过我建议:应该先整体排版,再单独处理表格和图片的缩进问题):
  1. Sub aaaa_Skip_Pic_Table()
  2.     Dim i&
  3.     With Selection
  4.         .HomeKey 6
  5.         Do
  6.             .Paragraphs(1).Range.Select
  7.             If .End = ActiveDocument.Content.End Then Exit Do
  8.             If .Information(12) Then .Tables(1).Range.Next(4, 1).Select
  9.             If .Next(4, 1).Information(12) Then GoTo sk
  10.             
  11.             If .InlineShapes.Count = 0 Then
  12.                 If i = 1 And .Text Like "*[!??????????????????.:;,!?]?" Then i = 0: GoTo sk
  13.                 .Font.ColorIndex = wdBlue
  14.                 .ParagraphFormat.CharacterUnitFirstLineIndent = 2
  15.             Else
  16.                 i = 1
  17.             End If
  18. sk:
  19.             .Move 4
  20.         Loop
  21.         .HomeKey 6
  22.     End With
  23. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-5 19:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
413191246se 发表于 2020-12-4 00:33
楼主,下面代码仅供参考(不过我建议:应该先整体排版,再单独处理表格和图片的缩进问题):

大哥和我的想法像极了,我也是这么做的,整体排版是第一步,图,表标题是第二部,我这样弄的呢,我试下你的代码,灰常感谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-5 19:20 | 显示全部楼层
413191246se 发表于 2020-12-4 00:33
楼主,下面代码仅供参考(不过我建议:应该先整体排版,再单独处理表格和图片的缩进问题):

弱弱的问一句,这句是啥意思呢
If i = 1 And .Text Like "*[!??????????????????.:;,!?]?" Then

TA的精华主题

TA的得分主题

发表于 2020-12-5 22:16 | 显示全部楼层
楼主,整体排版,可以试试我的自动排版宏;I=1意思是本段落含有图片,但该段落的下一段落,如果是不含标点的话,则。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-5 23:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2020-12-5 22:16
楼主,整体排版,可以试试我的自动排版宏;I=1意思是本段落含有图片,但该段落的下一段落,如果是不含标点 ...

win 10;
word 2016,
我想排版图片,图片初始格式是图一,目标格式是图2,最终格式是图三,请问怎么写代码呀?我的代码如下,如需要重复执行2次才可以完成,不知道撒情况
Sub FormatPics()
Dim iSha As InlineShape
For Each iSha In ActiveDocument.InlineShapes
Application.ScreenUpdating = False
If iSha.Type = wdInlineShapePicture Then
iSha.LockAspectRatio = msoTrue         '锁定纵横比
iSha.Width = CentimetersToPoints(6)         '宽5CM,以宽度为基准,定义高度
With iSha.Range.ParagraphFormat
    .LineSpacingRule = wdLineSpaceSingle        '行距
    .FirstLineIndent = CentimetersToPoints(0)
    .CharacterUnitFirstLineIndent = 0
        .LeftIndent = CentimetersToPoints(0)
       .RightIndent = CentimetersToPoints(0)
       .Alignment = wdAlignParagraphLeft
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 0
       .SpaceAfterAuto = False
End With
iSha.Select
Selection.MoveDown unit:=wdLine, Count:=1 '将光标移到表格上一行
   Selection.HomeKey unit:=wdLine
   Selection.EndKey unit:=wdLine, Extend:=wdExtend
   With Selection.Font
       .NameFarEast = "宋体"
        .Name = "Times New Roman"
        .Size = 8
        .Bold = False
End With
With Selection.ParagraphFormat
       .LineSpacingRule = wdLineSpace1pt5    '行距
       .FirstLineIndent = CentimetersToPoints(0)
       .Alignment = wdAlignParagraphCenter
       .CharacterUnitFirstLineIndent = 0
        .LeftIndent = CentimetersToPoints(0)
       .RightIndent = CentimetersToPoints(0)
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 0
       .SpaceAfterAuto = False
End With
End If
Next
Application.ScreenUpdating =true
End Sub

02.jpg 图1
03.jpg
图2
04.jpg

图3

TA的精华主题

TA的得分主题

发表于 2020-12-6 13:31 | 显示全部楼层
楼主,使用我的公文排版宏后,再应用下面的宏(仅供参考,可自行修改):
  1. Sub aaaa_Pic_Table_TypeSetting()
  2.     Dim i&
  3.     With Selection
  4.         .HomeKey 6
  5.         Do
  6.             .Paragraphs(1).Range.Select
  7.             If .End = ActiveDocument.Content.End Then Exit Do
  8.             If .Information(12) Then .Tables(1).Range.Next(4, 1).Select
  9.             If .Next(4, 1).Information(12) Then GoTo sk
  10.             
  11.             If .InlineShapes.Count = 0 Then
  12.                 If i = 1 And .Text Like "*[!。:;,、!?…—.:;,!?]?" Then
  13.                     i = 0
  14.                     With .Font
  15.                         .NameFarEast = "楷体"
  16.                         .NameAscii = "Times New Roman"
  17.                         .ColorIndex = wdRed
  18.                         .Bold = True
  19.                     End With
  20.                     GoTo sk
  21.                 End If
  22.                 .Font.ColorIndex = wdBlue
  23.                 .ParagraphFormat.CharacterUnitFirstLineIndent = 2
  24.             Else
  25.                 i = 1
  26.                 With .ParagraphFormat
  27.                     .CharacterUnitFirstLineIndent = 0
  28.                     .FirstLineIndent = CentimetersToPoints(0)
  29.                     .Space1
  30.                 End With
  31.             End If
  32. sk:
  33.             .Move 4
  34.         Loop
  35.         .HomeKey 6
  36.     End With
  37. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-27 19:52 , Processed in 0.047997 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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