ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 邮件合并后,用 VBA 删除分节符

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-12-20 20:56 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
    有些朋友在进行邮件合并时,由于域文件是表格形式的,合并后,合并结果文件中,每个表格后面直接就是分节符,用正常的“查找与替换”功能不能删除分节符!
    前几天我提供了网上别人介绍的一个方法:查找^b,再勾选“突出显示所有在该范围显示的项目“一项,再关闭查找对话框,按删除键(DELETE)删除分节符,这样,虽然能删除分节符,但表格之间都是连在一起了,未完全达到目的。
    我试着用 VBA 编程的方法,达到了删除分节符,并且使各个表格之间有一个空行(回车符)间隔,这样,就可以具体地编辑合并结果文档了(如:分栏等,表格之间的空行可以先选中一个,再右键选择:选择相似的文本)。

*** 删除分节符(邮件合并后,删除表格后的分节符,使之有一个空行相隔):

Sub 删除分节符()
'取消网格
    If Selection.Type = wdSelectionIP Then Selection.WholeStory
    With Selection.Font
        .Kerning = 0
        .DisableCharacterSpaceGrid = True
    End With
    With Selection.ParagraphFormat
        .AutoAdjustRightIndent = False
        .DisableLineHeightGrid = True
    End With

'表格后加回车
    Dim t As Table
    For Each t In ActiveDocument.Tables
        t.Select
        Selection.MoveRight Unit:=wdCharacter, Count:=1
        Selection.TypeParagraph
    Next

'删除分节符
    Dim i As Paragraph
    For Each i In ActiveDocument.Paragraphs
        If i.Range Like "*" & Chr(12) Then i.Range.Characters.Last.Delete
    Next

'分3栏
    Selection.WholeStory
    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type <> wdPrintView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
    With Selection.PageSetup.TextColumns
        .SetCount NumColumns:=3
        .EvenlySpaced = True
        .LineBetween = False
        .Width = CentimetersToPoints(7.57)
        .Spacing = CentimetersToPoints(0.99)
    End With
    Selection.HomeKey Unit:=wdStory

    MsgBox "处理完毕!"
End Sub

TA的精华主题

TA的得分主题

发表于 2013-12-21 13:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
留个记号,,,,

TA的精华主题

TA的得分主题

发表于 2013-12-21 22:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习,谢谢{:soso_e179:}

TA的精华主题

TA的得分主题

发表于 2013-12-23 07:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢了,这几天在急用啊

TA的精华主题

TA的得分主题

发表于 2013-12-23 08:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
{:soso_e154:}谢谢啊,如果在贵州,一定请你吃饭啊!!!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-12-23 09:23 | 显示全部楼层
各位朋友,不必客气,虽然编程水平较低,但如果能对各位有所帮助,我也很高兴!——请各位下载我的 Word 2003 通用模板(预览版),认真读一读使用帮助,有不少功能哩,对日常简单排版很有好处。

TA的精华主题

TA的得分主题

发表于 2019-9-17 10:42 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-17 19:41 | 显示全部楼层
楼上朋友,请试试下面的代码:(本帖最初代码可能不适合)
  1. Sub 删除分节符_表格邮件合并()
  2.     Dim t As Table
  3.     For Each t In ActiveDocument.Tables
  4.         t.Range.Next.InsertParagraphBefore
  5.     Next
  6.     Dim i As Paragraph
  7.     For Each i In ActiveDocument.Paragraphs
  8.         If i.Range Like "*" & Chr(12) Then i.Range.Characters.Last.Delete
  9.     Next
  10. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 17:56 , Processed in 0.031929 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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