ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 在邮件合并完成文字内容后的word中每小节第7段插入表格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-3-20 16:28 | 显示全部楼层 |阅读模式
没辙了。。自己挑战自己结果失败了。
现在要打印一套通知给各下属单位,所有文字内容已经经过邮件合并完成,现在需要在每封邮件的固定位置插入各单位相应的表格。
初步设想word内每一个单位的提示函为一小节(进行分页),在每小节(每页)的第7段定位插入表格,但是完全找不到相应的vba代码,特来求大大们帮助。

TA的精华主题

TA的得分主题

发表于 2018-3-20 16:49 | 显示全部楼层
VBA是可以做,但是需要附件,另外有空再做。当然手动也可以做,只是慢一点而已!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-20 17:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
duquancai 发表于 2018-3-20 16:49
VBA是可以做,但是需要附件,另外有空再做。当然手动也可以做,只是慢一点而已!

单位不允许上传一些东西,其实就是邮件合并之后生成几页大致文字内容相同的通知,在每页通知的第7段插入表格,只求怎么定位某节某段。

TA的精华主题

TA的得分主题

发表于 2018-3-20 17:45 | 显示全部楼层
  1. Sub 第7段落前面插入表格()
  2.     Dim s As Section
  3.     With ActiveDocument
  4.         For Each s In .Sections
  5.             If s.Range.Paragraphs.Count = 1 Then Exit For
  6.             If s.Range.Paragraphs.Count > 6 Then
  7.                 s.Range.Paragraphs(7).Range.Select '选定每节每7段落
  8.                 Selection.HomeKey unit:=wdLine
  9.                 '插入2行3列表格
  10.                 ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:= _
  11.                     3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
  12.                 Selection.Tables(1).Style = "网格型"
  13.             End If
  14.         Next
  15.     End With
  16. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-21 09:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 newenergy 于 2018-3-21 10:05 编辑

学习了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-21 10:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-3-21 13:57 | 显示全部楼层
楼主,你楼上的话还是说得不明白。——假设第1节复制A表格,第2节复制B表格,第3节复制C表格……,(还是只复制一张存在一个文档中的固定表格?)恐怕得手动了。——另外,楼主你可以上传一张图片,当然是专门处理过的,不要有你们单位名称(保密)。——请把话说透。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-21 14:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2018-3-21 13:57
楼主,你楼上的话还是说得不明白。——假设第1节复制A表格,第2节复制B表格,第3节复制C表格……,(还是只 ...

目前的任务是这样的:(1)在excel中,根据数据有效性,分别筛选每个单位的相关数据,表现在同一个表格区域内,比如A1:G20。(2)word文件内有这些单位分别对应的提示函内容,每个单位为一页或一节,具体内容由邮件合并产生。(3)最后一步,每次筛选一个单位,就复制A1:G20的表格粘贴到这个单位在word中对应页的第7段。现在只有第3步无法实现。目前我的代码是这样的:
Sub 生成()
Dim dpath, Filename As String
Dim wdapp As Object, wrddoc
Dim ws As Worksheet, arr
Dim rng As Range
Dim s As Section
On Error Resume Next
Set ws = Worksheets("选择")
Set wdapp = CreateObject("Word.Application")
  wdapp.Visible = 0
Application.ScreenUpdating = False
arr = ws.Range("B31:B" & ws.Range("B65536").End(xlUp).Row)
dpath = ThisWorkbook.Path
  Filename = Dir(dpath & "\正面.doc")
Set wrddoc = wdapp.Documents.Open(dpath & "\" & Filename) '打开word
i = 1
With ActiveDocument '调测
  For Each s In .Sections
    If s.Range.Paragraphs.Count = 1 Then Exit For
    If s.Range.Paragraphs.Count > 6 Then
      Do While i <= UBound(arr)
        Excel.Application.Sheets("选择").Activate
        [K4] = arr(i, 1)
        Sheets("处理").Columns("A:G").AdvancedFilter Action:=xlFilterCopy, _
          CriteriaRange:=Range("K3:K4"), CopyToRange:=Range("A2:G20"), Unique:= _
        False
        
        ActiveWindow.SmallScroll Down:=3
        Range("B3:G20").Select
        ActiveWorkbook.Worksheets("选择").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("选择").Sort.SortFields.Add Key:=Range( _
           "B3:B20"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
        With ActiveWorkbook.Worksheets("选择").Sort
          .SetRange Range("B3:G20")
          .Header = xlGuess
          .MatchCase = False
          .Orientation = xlTopToBottom
          .SortMethod = xlPinYin
          .Apply
        End With

        
        Sheets("选择").Range("B1:G" & Sheets("选择").Range("G65536").End(xlUp).Row).Copy
        
        wdapp.Application.Activate
          s.Range.Paragraphs(7).Range.Paste
        i = i + 1
      Exit Do
  Next
End With

wdapp.Application.Activate '保存word文件
wdapp.Saved = True
wdapp.ActiveDocument.SaveAs "D:\使用文件.doc"
wdapp.Application.Quit
Set wdapp = Nothing
   
Application.ScreenUpdating = True
End Sub


TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-21 14:17 | 显示全部楼层
413191246se 发表于 2018-3-21 13:57
楼主,你楼上的话还是说得不明白。——假设第1节复制A表格,第2节复制B表格,第3节复制C表格……,(还是只 ...

有底色的部分属于表格操作部分,可以无视,最后出来的效果就是筛选后填充到表格固定区域内

TA的精华主题

TA的得分主题

发表于 2018-3-21 17:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好麻烦!还得EXCEL和WORD联合通讯,这个我一点儿也不会。我一般是把数据放在WORD表格中,这样全在WORD中处理没有什么障碍。——有不会的话继续发问,坐等 杜先生 或其他各位高人来回复。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 04:54 , Processed in 0.043777 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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