ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 急求守柔兄:如何在分页保存中使用第一行字串作为文件名呢?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-9-7 14:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

FENGJUN兄,谈不上求啊,折煞守某也。

若非不细致,看不出你的域代码错在何处!

注意,你的等于号写错了,你用的是全角等于号(=),应该是半角等于号啊(=)!,呵呵。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-7 14:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

真是好事多磨! 理当感谢兄台呀!

由上面的需求可见,本人Word VBA是非得深入学习不可了。 顺便说一句,《守柔WORD编程代码集》是1本出色的教程。

[此贴子已经被作者于2005-9-7 15:00:30编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-8 10:58 | 显示全部楼层

守柔兄:

使用9楼的代码对附件进行分页面操作后出现以下两个新问题:

1、页眉消失了; 2、页面最末的横线只省下了半截儿。 如何处理这两种情况呢?

7aI5yMdI.rar (17.45 KB, 下载次数: 46)

TA的精华主题

TA的得分主题

发表于 2005-9-8 12:06 | 显示全部楼层

TO FENGJUN兄:

以下代码的意思是设置文档的页眉:

Sub Example() With ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range .Text = "xxx¹«Ë¾Îļþ ÎļþºÅ£ºB006-[2005]0902" .Font.Bold = True .Font.Name = "ËÎÌå" .Font.Size = 11 .ParagraphFormat.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle End With With ActiveDocument.PageSetup .LeftMargin = Word.CentimetersToPoints(2.12) .RightMargin = Word.CentimetersToPoints(2.12) End With End Sub 请把它加在 .SaveAs ThisDocument.Path & "\" & FilName 这句代码之前,并用NEWDOC代替ACTIVEDOCUMENT。

至于半条线,请在主文档中重新设置,设置段落下边框线更好,不要用空格和下划线,因为空格在换行过程中,有变化。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-9 13:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

守柔兄: 我想用模板解决这个问题。 分页代码在《待分页文档2.doc》中,最后的签署日期为什么总是总是被删除掉?是否是因为 .Paragraphs.Last.Range.Delete '这一句呢? 但如果将上句注销掉,则又会出现将签署日期分到下一文件的情况。

Dhvs75v1.rar (22.55 KB, 下载次数: 89)

[此贴子已经被作者于2005-9-9 13:00:58编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-12 09:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请守柔兄就15楼问题再出援手...
[此贴子已经被作者于2005-9-12 9:29:44编辑过]

TA的精华主题

TA的得分主题

发表于 2005-9-13 04:28 | 显示全部楼层
以下是引用FENGJUN在2005-9-12 9:27:16的发言:
请守柔兄就15楼问题再出援手...


以下代码是完全按15楼的问题设计的,请再行测试。


'* +++++++++++++++++++++++++++++
'* Created By I Love You_Word!@ExcelHome 2005-9-13 4:27:39
'仅测试于System: Windows NT Word: 10.0 Language: 2052
' 00017^The Code CopyIn [ThisDocument-ThisDocument]^'
'* -----------------------------


Option Explicit
Sub SaveAsPages()
    Dim NumberPages As Integer, SAP As Byte, i As Integer
    Dim lngStart As Long, lngEnd As Long, myRange As Range
    Dim NewDoc As Document, FilName As String
    On Error GoTo Errhandle    '错误处理
    SAP = VBA.InputBox("请输入每个文件的分页数", "ExcelHome", Default:=1)
    With ThisDocument
        '取得本文档的总页数
        NumberPages = .Content.Information(wdNumberOfPagesInDocument)
        'MsgBox NumberPages
        '如果分页值大于总页数或者为0的整数则进入错误处理行
        If SAP > NumberPages Or SAP = 0 Then GoTo Errhandle
        Application.ScreenUpdating = False    '关闭屏幕更新
        '将分节符替换为分页符
        .Content.Find.Execute findtext:="^b", Replacewith:="^m", Replace:=wdReplaceAll
        For i = 1 To NumberPages Step SAP    '进行一个循环
            '取得第一个分页的起始位置
            lngStart = .GoTo(wdGoToPage, wdGoToNext, , i).Start
            '取得第一个分页的最后位置(是下一页的开始位置)
            lngEnd = VBA.IIf(i + SAP > NumberPages, .Content.End, .GoTo(wdGoToPage, wdGoToNext, , i + SAP).Start)
            '定义一个RANGE对象
            Set myRange = .Range(lngStart, lngEnd)
            '            myRange.Select
            '取得文件名,为该RANGE区域中的第一个段落文本(去除段落标记)
            FilName = .Range(myRange.Paragraphs(1).Range.Start, myRange.Paragraphs(1).Range.End - 1)
            FilName = VBA.Right(FilName, Len(FilName) - InStr(FilName, Chr(12)))
            Debug.Print FilName
            '根据模板新建一个空白文档
            Set NewDoc = Documents.Add(Template:= _
                                       ThisDocument.Path & "\分公司《20059月任务预算表》_模板.dot" _
                                       , NewTemplate:=False, DocumentType:=0)
            myRange.Copy    '复制
            With NewDoc
                .Range(0, 0).Paste    '起点处粘贴
                '如果最后第二个字符为分页符(CHR(12))则删除之
                If Asc(.Characters.Last.Previous(1)) = 12 Then .Characters.Last.Previous(1).Delete
                .SaveAs ThisDocument.Path & "\" & FilName    '另存为
                .Close    '关闭该文档
            End With
        Next
    End With
    Application.ScreenUpdating = True    '恢复屏幕更新
    Exit Sub
Errhandle:
    MsgBox "Word出错的可能原因是:" & vbCrLf & "无效的分页数,请输入正确的数值!" & _
           vbCrLf & "非法的文件名!", vbExclamation, "ExcelHome"
    Application.ScreenUpdating = True
End Sub
'----------------------另外,你的模板中,不应该使用大量的空格键作为字符位置的填充,使用制表位或者表格,更有利于字符位置的分隔与固定。

[此贴子已经被konggs于2008-8-23 10:35:30编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-14 09:08 | 显示全部楼层
守柔兄: 完美的运行结果!

TA的精华主题

TA的得分主题

发表于 2005-12-29 17:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-12-16 07:20 | 显示全部楼层
高手示范,获益良多,多来必有收获!守柔兄确实系高手!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 23:47 , Processed in 0.044516 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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