ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 图表题注(杜老师已提供指导代码)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-11-2 19:49 | 显示全部楼层 |阅读模式
本帖最后由 wan12327 于 2017-11-3 16:40 编辑

Sub 表格插入题注()
Dim atable As Table
If ActiveDocument.Tables.Count >= 1 Then
For Each atable In ActiveDocument.Tables
    CaptionLabels.Add Name:="表"
    With CaptionLabels("表")
        .NumberStyle = wdCaptionNumberStyleArabic
        .IncludeChapterNumber = True
        .ChapterStyleLevel = 1
        .Separator = wdSeparatorHyphen
    End With
   With atable.Range
       .InsertCaption Label:="表", TitleAutoText:="InsertCaption4", Title _
        :="", Position:=wdCaptionPositionAbove, ExcludeLabel:=0
        End With
       With ActiveDocument.Styles("题注")
        .ParagraphFormat.Alignment = wdAlignParagraphCenter
    End With
    Next atable
End If
End Sub


这个是直接在表格上方加题注的代码,但是我还没有实现题注和图表名合在一起。请老师帮忙解决一下。

以下是我的两种思路.

1、想实现在图表名左边直接加题注

2、表名和图名前方有特殊字符,比如     图表题注:表名1
通过定位 “图表题注” 这四个字,在左边或上面插入题注,然后将 “图表题注” 删除

如果老师有更好的思路,就更好了。



这是杜老师的指导代码:(完美地解决了我的问题,非常感谢杜老师的指导)
Sub 插入题注()
    Dim tb As Table, d As Document
    Set d = ActiveDocument
    If d.Tables.Count < 1 Then Exit Sub
    If d.ListParagraphs.Count < 1 Then Exit Sub
    CaptionLabels.Add Name:="表"
    With CaptionLabels("表")
        .NumberStyle = 0
        .IncludeChapterNumber = True
        .ChapterStyleLevel = 1
        .Separator = 0
    End With
    For Each tb In ActiveDocument.Tables
        With tb.Range.Previous(4, 1)
            .End = .Start
            .InsertCaption Label:="表", Title:=":", ExcludeLabel:=0
            .ParagraphFormat.Alignment = 1
        End With
    Next
End Sub

图表题注实现待完善,请杜老师指导.zip

36.48 KB, 下载次数: 32

附件为事例及目标

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-3 08:23 | 显示全部楼层
这是杜老师提供的改进方案,非常完美地解决了我的问题,非常感谢杜老师的指导

Sub 插入题注()
    Dim tb As Table, d As Document
    Set d = ActiveDocument
    If d.Tables.Count < 1 Then Exit Sub
    If d.ListParagraphs.Count < 1 Then Exit Sub
    CaptionLabels.Add Name:="表"
    With CaptionLabels("表")
        .NumberStyle = 0
        .IncludeChapterNumber = True
        .ChapterStyleLevel = 1
        .Separator = 0
    End With
    For Each tb In ActiveDocument.Tables
        With tb.Range.Previous(4, 1)
            .End = .Start
            .InsertCaption Label:="表", Title:=":", ExcludeLabel:=0
            .ParagraphFormat.Alignment = 1
        End With
    Next
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-3 10:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这是图片的题注,在杜老师改进的表格题注的代码上修改的:

Sub 图片题注()
    Dim tb As InlineShape, d As Document
    Set d = ActiveDocument
    If d.InlineShapes.Count < 1 Then Exit Sub
    If d.ListParagraphs.Count < 1 Then Exit Sub
    CaptionLabels.Add Name:="图"
    With CaptionLabels("图")
        .NumberStyle = 0
        .IncludeChapterNumber = True
        .ChapterStyleLevel = 1
        .Separator = 0
    End With
    For Each tb In ActiveDocument.InlineShapes
        With tb.Range.Next(4, 1)
            .End = .Start
            .InsertCaption Label:="图", Title:=":", ExcludeLabel:=0
            .ParagraphFormat.Alignment = 1
        End With
    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2017-11-8 10:51 | 显示全部楼层
下载学习,多谢杜老师慷慨分享好代码!
      Oooo
      (___)
  oooO    )_/
  (___)   (_/
   \_(
   \_)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 12:23 , Processed in 0.047165 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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