ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] EXECL数据生成到WORD文档是否可以自定义页边距,上3.7,下3.5,左右各2.7 呢?...

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-10-15 11:38 | 显示全部楼层 |阅读模式
以下此条代码是根据EXECL数据生成到WORD文档,是否生成的过程中能增加自定义页边距,上3.7,下3.5,左右各2.7 呢?谢谢
  1. Sub test()
  2.   Dim r%, i%
  3.   Dim arr, brr
  4.   Dim d As Object
  5.   Dim wordapp As New Word.Application
  6.   Dim mydoc As Word.Document
  7.   Dim myname$, mypath$
  8.   Set d = CreateObject("scripting.dictionary")
  9.   Application.ScreenUpdating = False
  10.   Application.DisplayAlerts = False
  11.   
  12.   With Worksheets("2017年年度考核汇总")
  13.     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  14.     arr = .Range("a3:g" & r)
  15.     For i = 1 To UBound(arr)
  16.       If Not d.Exists(arr(i, 2)) Then
  17.         Set d(arr(i, 2)) = CreateObject("scripting.dictionary")
  18.       End If
  19.       If Not d(arr(i, 2)).Exists(arr(i, 3)) Then
  20.         Set d(arr(i, 2))(arr(i, 3)) = CreateObject("scripting.dictionary")
  21.       End If
  22.       If Not d(arr(i, 2))(arr(i, 3)).Exists(arr(i, 7)) Then
  23.         m = 1
  24.         ReDim brr(1 To m)
  25.       Else
  26.         brr = d(arr(i, 2))(arr(i, 3))(arr(i, 7))
  27.         m = UBound(brr) + 1
  28.         ReDim Preserve brr(1 To m)
  29.       End If
  30.       brr(m) = arr(i, 4)
  31.       d(arr(i, 2))(arr(i, 3))(arr(i, 7)) = brr
  32.     Next
  33.   End With
  34.   
  35.   For Each aa In d.keys
  36.     xh = 0
  37.     With wordapp
  38.       Set mydoc = .Documents.Add
  39.       .Visible = True
  40.       With .Selection
  41.         .ParagraphFormat.Alignment = wdAlignParagraphCenter
  42.         .TypeParagraph '隔一行
  43.         .TypeParagraph '隔一行
  44.         .ParagraphFormat.LineSpacingRule = wdLineSpaceExactly '行距固定值33
  45.         .ParagraphFormat.LineSpacing = 45 '行距固定值29
  46.         With .Font
  47.               .Name = "方正小标宋简体"
  48.               .Size = 31.5
  49.               .Bold = wdToggle
  50.               .Color = wdColorRed '字体颜色为红色
  51.         End With
  52. '        With .ParagraphFormat
  53. '          .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
  54. '          .Borders(wdBorderRight).LineStyle = wdLineStyleNone
  55. '          .Borders(wdBorderTop).LineStyle = wdLineStyleNone
  56. '        With .Borders(wdBorderBottom)
  57. '          .LineStyle = wdLineStyleThickThinSmallGap
  58. '          .LineWidth = wdLineWidth225pt
  59. '          .Color = wdColorRed
  60. '        End With
  61. '        With .Borders
  62. '          .DistanceFromTop = 1
  63. '          .DistanceFromLeft = 3.7
  64. '          .DistanceFromBottom = 1
  65. '          .DistanceFromRight = 3.7
  66. '          .Shadow = False
  67. '        End With
  68. '        End With
  69.         With Options
  70.           .DefaultBorderLineStyle = wdLineStyleThinThickSmallGap
  71.           .DefaultBorderLineWidth = wdLineWidth225pt
  72.           .DefaultBorderColor = wdColorRed
  73.         End With
  74.         .TypeText Text:="桂南市人力资源和社会保障局"
  75.         .TypeParagraph
  76. '        .TypeParagraph

  77. '        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  78. '        With .ParagraphFormat '生成红色粗横线条
  79. '          .Borders(wdBorderBottom).LineStyle = wdLineStyleNone '生成粗横线条'先禁用,用WORD生成
  80. '        End With
  81.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

  82.         .TypeParagraph '隔一行
  83.         .ParagraphFormat.LineSpacingRule = wdLineSpaceExactly '行距固定值33
  84.         .ParagraphFormat.LineSpacing = 29 '行距固定值29
  85.         With .Font
  86.               .Name = "方正小标宋简体"
  87.               .Size = 22
  88. '              .Bold = wdToggle'加粗
  89.               .Color = wdColorAutomatic '旁边体颜色自动
  90.         End With
  91.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  92. '
  93.         ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  94.         
  95.         
  96.         .TypeText Text:="桂南市政府系统机关、事业单位"
  97.         .TypeParagraph
  98.         .TypeText Text:="科级以下工作人员2017年年度考核结果"
  99.         With .Font
  100.           .Name = "仿宋_GB2312"
  101.           .Size = 14
  102.         End With
  103.         .TypeParagraph
  104.         .TypeParagraph
  105.         .ParagraphFormat.Alignment = wdAlignParagraphLeft
  106.         .ParagraphFormat.LineSpacingRule = wdLineSpaceSingle '单倍行距
  107.         With .Font
  108.               .Name = "仿宋_GB2312"
  109.               .Bold = wdToggle
  110.             End With
  111.         .TypeText Text:=aa & ":"
  112.         .TypeParagraph
  113.         With .ParagraphFormat
  114.           .Alignment = wdAlignParagraphJustify '居中
  115.           .CharacterUnitFirstLineIndent = 2 '空2个字符
  116.         End With
  117.         .TypeText Text:="根据《公务员考核规定(试行)》和中共桂南市委组织部  桂南市人力资源和社会保障局  桂南市绩效考评领导小组办公室《印发<关于开展2017年度全市机关、事业单位科级以下工作人员年度考核工作的实施意见>的通知》的有关规定,经审核,你单位科级以下工作人员2017年年度考核结果为:"
  118.         .TypeParagraph
  119.         With .ParagraphFormat
  120.           .Alignment = wdAlignParagraphJustify '居中
  121.           .CharacterUnitFirstLineIndent = 0 '空2个字符
  122. '          .FirstLineIndent = CentimetersToPoints(0)
  123.           .CharacterUnitFirstLineIndent = 0
  124.         End With
  125.         With .Font
  126.           .Name = "仿宋_GB2312"
  127.           .Bold = wdToggle
  128.         End With
  129.         With .ParagraphFormat
  130.           .FirstLineIndent = Application.CentimetersToPoints(0)
  131.           .CharacterUnitFirstLineIndent = 0
  132.         End With
  133.         
  134.         For Each bb In d(aa).keys
  135.           xh = xh + 1
  136.           With .Font
  137.             .Name = "黑体" '字体
  138.             .Bold = True
  139.           End With
  140.           If d(aa).Count > 1 Then
  141.             .TypeText Text:=Application.Text(xh, "[Dbnum1]") & "、" & bb
  142.             .TypeParagraph
  143.           End If
  144.           For Each x In Array("优秀", "称职", "基本称职", "不称职", "不定等次", "不参加考核", "待查")
  145.             If d(aa)(bb).Exists(x) Then
  146.               brr = d(aa)(bb)(x)
  147.               With .Font
  148.                 .Name = "黑体" '字体
  149.                 .Bold = True
  150.               End With
  151.               .TypeText Text:=x & "(" & UBound(brr) & "人):"
  152.               .TypeParagraph
  153.               With .Font
  154.                 .Name = "仿宋_GB2312"
  155.                 .Bold = False
  156.               End With
  157.               ss = ""
  158.               For i = 1 To UBound(brr)
  159.                 ss = ss & Space(2) & brr(i)
  160.                 If i Mod 7 = 0 Or i = UBound(brr) Then
  161.                   .TypeText Text:=Mid(ss, 3)
  162.                   .TypeParagraph
  163.                   ss = ""
  164.                 End If
  165.               Next
  166.             End If
  167.           Next
  168.         Next
  169.         .TypeParagraph
  170.         .TypeParagraph
  171.         With .Font
  172.               .Name = "仿宋_GB2312"
  173.               .Bold = False
  174.             End With
  175.         .TypeText Text:=Space(40) & "2017年12月12日"
  176. '        .TypeParagraph'回车键
  177.       End With
  178.       With mydoc
  179.         .SaveAs Filename:=ThisWorkbook.Path & "" & aa
  180.         .Close
  181.       End With
  182.     End With
  183. '    Exit For '如果连续生成必须禁此行
  184.   Next
  185.   wordapp.Quit
  186.   Set wordapp = Nothing
  187.   Application.ScreenUpdating = True
  188.   Application.DisplayAlerts = True
  189. End Sub
复制代码



TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-15 11:47 | 显示全部楼层
在WORD内写的VBA代码可以执行
  1. Sub test()
  2.     Dim s As Section
  3.     For Each s In ActiveDocument.Sections
  4.         With s.PageSetup
  5.             .TopMargin = CentimetersToPoints(3.7)      '顶端边距
  6.             .BottomMargin = CentimetersToPoints(3.5)   '底端边距
  7.             .LeftMargin = CentimetersToPoints(2.7)     '左边距
  8.             .RightMargin = CentimetersToPoints(2.7)    '右边距
  9.             .HeaderDistance = CentimetersToPoints(1.5)
  10.             .FooterDistance = CentimetersToPoints(1.5)
  11.         End With
  12.     Next
  13. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-17 03:05 , Processed in 0.032628 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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