ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请教如何通过VBA代码将指定自动图文集插入到文档的页眉处?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-8-31 21:01 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
能否请各位帮解决下面的问题或部分问题?
1、做了一个“密封线”样式的文本框,将其存为自动图文集(该自动图文集保存在normal中),请教如何编写VBA代码,能将该自动图文集插入到在“页眉和页脚”状态下的文档左侧,该文本框距文档页边距左侧为1cm,距页边距上、下位置相等(居中),并将该文档的左边距修改为3.5cm,右边距修改为1.5cm后,插入后光标恢复到插入前的位置?
如果该自动图文集保存于“C:\Documents and Settings\Administrator\Application Data\Microsoft\Word\STARTUP”下名为“学科工具”模板中,又该如何编写代码?
2、做两个密封线,名称分别为“密封线1”和“密封线2”样式的文本框,将其分别存为自动图文集(两个自动图文集保存在normal中),如何将文档的页面设置修改为“奇偶页不同”、页边距中的上下边距分别设置2.5cm、内侧为3.5cm、外侧为1.5cm,并一次性添加两部分的密封线,奇数页页眉和页脚中插入的密封线为密封线1(密封线1内填有学校,姓名,班级及密封线等),偶数页页眉和页脚中插入的密封线为密封线2(偶数页的密封线内不用填写奇数页要求的内容如学校、班级、姓名等,只要密封线即可),让两部分的密封线与边距分别相等(重合),插入后光标恢复到插入前的位置?
如果两个自动图文集保存于“C:\Documents and Settings\Administrator\Application Data\Microsoft\Word\STARTUP”下名为“学科工具”模板中,又该如何编写代码?

密封线样式如下(附件):

[ 本帖最后由 tangqingfu 于 2010-8-31 23:53 编辑 ]

单面试卷模板.rar

10.28 KB, 下载次数: 114

双面试卷模板.rar

12.38 KB, 下载次数: 74

TA的精华主题

TA的得分主题

发表于 2010-9-1 06:21 | 显示全部楼层
问题2同问题1基本相似。
仅作一个问题1的解决方案示例,供参考,希望楼主能够静心揣摩,以期举一反二。
Sub Example()
    Dim aTemp As Template
    Dim mySection As Section
    Dim myRange As Range
    Dim myShape As Shape
    Dim sngHeight As Single
    Dim blnTempExitsts As Boolean
    Dim strTempName As String
    strTempName = "NORMAL.DOT"    '''需加载"学科工具.dot",此处请自行修改为"学科工具.DOT"
    '''并确保其具有一个含有文本框(图形)的"密封线"自动图文集,此处不作判断了
    For Each aTemp In Templates
        If UCase$(aTemp.Name) = strTempName Then
            blnTempExitsts = True
            Exit For
        End If
    Next aTemp
    If blnTempExitsts = True Then
        Set mySection = ActiveDocument.Sections(1)
        With mySection
            With .PageSetup
                .LeftMargin = Word.CentimetersToPoints(3)
                .RightMargin = Word.CentimetersToPoints(1.5)
                sngHeight = .PageHeight
            End With
            Set myRange = .Headers(wdHeaderFooterPrimary).Range
            myRange.Collapse wdCollapseStart
            aTemp.AutoTextEntries("密封线").Insert Where:=myRange, RichText:=True
            Set myRange = .Headers(wdHeaderFooterPrimary).Range
            Set myShape = myRange.ShapeRange(1)
            With myShape
                .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
                .RelativeVerticalPosition = wdRelativeVerticalPositionPage
                .Left = Word.CentimetersToPoints(2)
                .Top = (sngHeight - .Height) * 0.5
            End With
        End With
    End If
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-1 09:16 | 显示全部楼层
谢谢守版的帮助!
测试通过!
代码得好好揣摩,以期举一反二。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-5 12:20 | 显示全部楼层
将密封线设置为“奇偶页不同”,请教如何实现将反面密封线插入到偶数页的右侧,设置“对称页边距”的代码该如何写?下面的代码插入的反面密封线(位于偶数页)也在文档的左侧。
Sub 双面密封线()
    Dim aTemp As Template
    Dim mySection As Section
    Dim myRange As Range
    Dim myShape As Shape
    Dim sngHeight As Single
    Dim blnTempExitsts As Boolean
    Dim strTempName As String
    strTempName = "学科工具.DOT"    '''需加载"学科工具.dot",此处请自行修改为"学科工具.DOT"
    '''并确保其具有一个含有文本框(图形)的"密封线"自动图文集,此处不作判断了
    For Each aTemp In Templates
        If UCase$(aTemp.Name) = strTempName Then
            blnTempExitsts = True
            Exit For
        End If
    Next aTemp
    If blnTempExitsts = True Then
        Set mySection = ActiveDocument.Sections(1)
        With mySection
            With .PageSetup
                .OddAndEvenPagesHeaderFooter = True
                .LeftMargin = Word.CentimetersToPoints(3.5)
                .RightMargin = Word.CentimetersToPoints(1.5)
                sngHeight = .PageHeight
            End With
            Set myRange = .Headers(wdHeaderFooterPrimary).Range
            myRange.Collapse wdCollapseStart
            aTemp.AutoTextEntries("正面密封线").Insert Where:=myRange, RichText:=True
            Set myRange = .Headers(wdHeaderFooterPrimary).Range
            Set myShape = myRange.ShapeRange(1)
            With myShape
                .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
                .RelativeVerticalPosition = wdRelativeVerticalPositionPage
                .Left = Word.CentimetersToPoints(0.5)
                .Top = (sngHeight - .Height) * 0.5
            End With
        End With
        With mySection
            With .PageSetup
                .OddAndEvenPagesHeaderFooter = True
                .LeftMargin = Word.CentimetersToPoints(3.5)
                .RightMargin = Word.CentimetersToPoints(1.5)
                sngHeight = .PageHeight
            End With
            Set myRange = .Headers(wdHeaderFooterEvenPages).Range
            myRange.Collapse wdCollapseStart
            aTemp.AutoTextEntries("反面密封线").Insert Where:=myRange, RichText:=True
            Set myRange = .Headers(wdHeaderFooterEvenPages).Range
            Set myShape = myRange.ShapeRange(1)
            With myShape
                .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
                .RelativeVerticalPosition = wdRelativeVerticalPositionPage
                .Left = Word.CentimetersToPoints(0.5)
                .Top = (sngHeight - .Height) * 0.5
            End With
        End With
    End If
End Sub

[ 本帖最后由 tangqingfu 于 2010-9-5 12:32 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-7 07:22 | 显示全部楼层
顶一下,希望能得到帮忙……

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-8 23:15 | 显示全部楼层
奇怪,今天再测试守版的代码,提示
运行时错误‘4605’:
RelativeHorizontalPoisition方法或属性无效因为绘图操作无法应用于当前所选内容
能否请守版再帮帮忙?
请教如何让插入到偶数页的密封线与奇数页的密封线重合?(即一楼的问题),曾数度尝试,还是无法通过VBA代码自行解决。
能否请守版再出手帮助?

[ 本帖最后由 tangqingfu 于 2010-9-8 23:18 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-9-9 10:43 | 显示全部楼层
我觉得除了“奇偶页不同”外,还应设置“首页不同”。因为如果卷面有4张纸,则除了首页需要填写之外,第三张也不应该再填写学校、姓名了。

另外,试卷直接做成模板了,还要填写“图文集”不是没有意义了吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-9 11:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢csnAlex兄的关注!
是否要设置“首页不同”,因人而异。
原来我觉得试卷直接做成模板就可以了,但是发现该模板只对由该模板生成的文档有效,对于其他纸型的文档,如果要快速设置其(正反两面)密封线,就麻烦了,除了要修改其页面设置外,还要将密封线复制到该文档,一旦正反两面都要设置密封线,还很难做到正反两面的密封线能吻合。所以希望借助“自动图文集”的词条和VBA代码的方式,能快速对各种纸型的文档自动添加(正反两面)密封线,使其更有通用性。
能否请csnAlex兄帮忙?

TA的精华主题

TA的得分主题

发表于 2010-9-9 17:35 | 显示全部楼层
tang兄以前给的密封线的模板已经很好了

TA的精华主题

TA的得分主题

发表于 2010-9-9 18:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 15:27 , Processed in 0.036140 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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