ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 批量筛选数据并按顺序以表格形式插入word每小节第7段

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-3-23 12:58 | 显示全部楼层 |阅读模式
word文件就是一个简单的模板,每节10段,需要在每节的第7段插入筛选后的非空表格。
表格形式为:基础数据表("处理"),筛选结果表("选择")
表大致样式为:
信息1 信息2 信息3 信息4 信息5信息6 信息 7
筛选条件
  结果1
  结果2
  结果3
...
...
...
...
共20行
目前代码为:(问题,表格可以排序,但word文件另存为后不显示粘贴内容,不清楚是粘贴部分出问题还是保存部分有问题,异或是屏幕刷新的问题?)
  1. Sub 生成()
  2. On Error Resume Next

  3. Dim ws As Worksheet, arr
  4.   Set ws = Worksheets("选择")
  5. arr = Worksheets("选择").Range("B31:B" & ws.Range("B65536").End(xlUp).Row)

  6. Dim dpath, Filename As String
  7. Dim wdapp As Object
  8. Set wdapp = CreateObject("Word.Application") '打开word
  9.   wdapp.Visible = True
  10. dpath = ThisWorkbook.Path
  11.   Filename = Dir(dpath & "\正面.doc")
  12. wdapp.Documents.Open (dpath & "" & Filename)

  13. Dim s As Section
  14. Dim i As Integer
  15. i = 1
  16. wdapp.Application.Activate
  17. With ActiveDocument '调测
  18.   For Each s In .Sections
  19.     If s.Range.Paragraphs.Count < 2 Then Exit For
  20.     If s.Range.Paragraphs.Count > 6 Then
  21.       Excel.Application.Sheets("选择").Activate '激活excel
  22.       If i <= UBound(arr) Then
  23.         Application.ScreenUpdating = False
  24.         [K4] = arr(i, 1)
  25.         Sheets("处理").Columns("A:G").AdvancedFilter Action:=xlFilterCopy, _
  26.           CriteriaRange:=Range("K3:K4"), CopyToRange:=Range("A2:G20"), Unique:= _
  27.         False
  28.         
  29.         ActiveWindow.SmallScroll Down:=3
  30.         Range("B3:G20").Select
  31.         ActiveWorkbook.Worksheets("选择").Sort.SortFields.Clear
  32.         ActiveWorkbook.Worksheets("选择").Sort.SortFields.Add Key:=Range( _
  33.            "B3:B20"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
  34.         xlSortNormal
  35.         
  36.         With ActiveWorkbook.Worksheets("选择").Sort
  37.           .SetRange Range("B3:G20")
  38.           .Header = xlGuess
  39.           .MatchCase = False
  40.           .Orientation = xlTopToBottom
  41.           .SortMethod = xlPinYin
  42.           .Apply
  43.         End With
  44.         Sheets("选择").Range("B1:G" & Sheets("选择").Range("G65536").End(xlUp).Row).Copy
  45.         
  46.         '回到word粘贴.
  47.         s.Range.Paragraphs(7).Range.Paste
  48.         i = i + 1
  49.         Application.ScreenUpdating = True
  50.       End If
  51.       Else
  52.         Exit For
  53.     End If
  54.   Next
  55. End With


  56. wdapp.Application.Activate '保存word文件
  57. wdapp.Saved = True
  58. wdapp.ActiveDocument.SaveAs "D:\插入后文件.doc"
  59. wdapp.Application.Quit
  60. Set wdapp = Nothing

  61. End Sub
复制代码



您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-5 06:25 , Processed in 0.033382 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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