Word VBA:获取连续标题之间的范围

2024-01-11

我查了一些例子,但我不太明白 Range 对象是如何工作的。我试图循环遍历每个标题(第 4 级),并使用一个嵌套循环来遍历标题之间的所有表格。我不知道如何设置该特定范围,因此任何帮助将不胜感激。

    Dim myHeadings As Variant
    myHeadings = ActiveDocument.GetCrossReferenceItems(wdRefTypeHeading)

    For iCount = LBound(myHeadings) To UBound(myHeadings)

      level = getLevel(CStr(myHeadings(iCount)))
      If level = 4 Then

         'This is where I want to set a range between myHeadings(iCount) to myHeadings(iCount+1)
         set aRange = ??


      End If

    Next iCount

您走在正确的道路上。您拥有的 myHeadings 变量仅给出文档中 4 级标题的字符串列表。然后您需要做的是在文档中搜索这些字符串以获得 4 级标题的范围。

获得每个标题的范围后,您可以检查这些标题之间范围内的表格。我稍微修改了你的代码来做到这一点。另请注意其良好做法Option Explicit位于模块顶部,以确保声明所有变量。

我的代码将告诉您每个 4 级标题之间有多少个表格。注意:它不会检查文档的最后一个标题和结尾之间的内容,我将其留给您;)

Sub DoMyHeadings()
    Dim iCount As Integer, iL4Count As Integer, Level As Integer, itabCount As Integer
    Dim myHeadings As Variant, tbl As Table
    Dim Level4Heading() As Range, rTableRange As Range

    myHeadings = ActiveDocument.GetCrossReferenceItems(wdRefTypeHeading)

    'We want to move to the start of the document so we can loop through the headings
    Selection.HomeKey Unit:=wdStory

    For iCount = LBound(myHeadings) To UBound(myHeadings)
        Level = getLevel(CStr(myHeadings(iCount)))
        If Level = 4 Then

            'We can now search the document to find the ranges of the level 4 headings
            With Selection.Find
                .ClearFormatting                                'Always clear find formatting
                .Style = ActiveDocument.Styles("Heading 4")     'Set the heading style
                .Text = VBA.Trim$(myHeadings(iCount))           'This is the heading text (trim to remove spaces)
                .Replacement.Text = ""                          'We are not replacing the text
                .Forward = True                                 'Move forward so we can each consecutive heading
                .Wrap = wdFindContinue                          'Continue to the next find
                .Format = True
                .MatchCase = False
                .MatchWholeWord = False
                .MatchWildcards = False
                .MatchSoundsLike = False
                .MatchAllWordForms = False
                .Execute
           End With

           'Just make sure the text matches (it should be I have a habit of double checking
            If Selection.Text = VBA.Trim$(myHeadings(iCount)) Then
                iL4Count = iL4Count + 1                             'Keep a counter for the L4 headings for redim
                ReDim Preserve Level4Heading(1 To iL4Count)         'Redim the array keeping existing values
                Set Level4Heading(iL4Count) = Selection.Range       'Set the range you've just picked up to the array
             End If
         End If
     Next iCount

    'Now we want to loop through all the Level4 Heading Ranges
    For iCount = LBound(Level4Heading) To UBound(Level4Heading) - 1
        'Reset the table counter
        itabCount = 0

        'Use the start of the current heading and next heading to get the range in between which will contain the tables
        Set rTableRange = ActiveDocument.Range(Level4Heading(iCount).Start, Level4Heading(iCount + 1).Start)

        'Now you have set the range in the document between the headings you can loop through
        For Each tbl In rTableRange.Tables
            'This is where you can work your table magic
            itabCount = itabCount + 1
        Next tbl

        'Display the number of tables
        MsgBox "You have " & itabCount & " table(s) between heading " & Level4Heading(iCount).Text & " And " & Level4Heading(iCount + 1).Text
    Next iCount
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Word VBA:获取连续标题之间的范围 的相关文章

  • Word Automation - 文件正在被其他应用程序或用户使用

    我有一个 WinForms 应用程序 我在其中使用 Word Automation 通过模板构建文档 然后将它们保存到数据库中 创建文档后 我从数据库检索文档 将其写入文件系统的临时目录中 然后使用 Word Interop 服务打开该文档
  • 使用 If 语句执行 Do Until 直到达到特定值

    我正在处理一份大数据表 我需要代码从特定单元格中减去 直到该值大于某个数字 如果这个数字没有达到 我希望它变成0 例如如果A3 A2 gt Q5 then E3 A3 A2 if lt Q5 do A3 A1 如果这不起作用E2 0 我需要
  • 使用 Excel-VBA(MSXML2.XMLHTTP 对象)更新 SharePoint 列表

    基本信息 我需要从 Excel 更新 添加 编辑 SharePoint 列表 我能够做到这一点ListObject 但这不是我们要走向的方向 在阅读了所有谷歌可能性后 我想出了 也许我错了 使用的想法MSXML2 XMLHTTP对象来更新
  • 导出到 Excel 时如何避免“数字存储为文本”

    当我将表格从 Access 导出到 Excel 时 所有数字都显示为文本 并且单元格上有绿色箭头 有没有办法自动修复此错误 或者有另一种导出方法可以解决该错误 作为参考 这是我导出的方式 DoCmd TransferSpreadsheet
  • 将按颜色过滤的行复制到新工作表

    我有一个 Excel 电子表格 如下所示 Job1 Job2 Job3 Job4 Job5 Job1 Job2 Job3 Job4 Job5 每行和列之间的单元格颜色不同 我需要按橙色对每列进行排序 然后将行名称复制到新工作表中 所以最后我
  • MS Access 表单按钮,允许用户浏览/选择文件,然后将文件导入到表中

    在我的数据库中 我可以使用以下命令创建命令按钮导入文件 DoCmd TransferText acImportDelim 导入的原始数据 导入规范 导入的原始数据 D Users Denise Griffith Documents Grif
  • 如何使用 win32com.client api 访问 MS Word 的脚注

    我正在尝试使用 win32com client api 访问 MS Word 文件的脚注 我已经用谷歌搜索过 但没能找到合适的方法 我使用 python docx 来实现上述目的 但我发现当前版本的 python docx 无法访问 MS
  • excel 2010刷新BackgroundQuery中运行时错误1004

    我正在尝试用 vba 编写一个脚本 用于将多个文本文件导入 Excel 一张纸 然后将它们绘制在一张图表上 我面临一个问题刷新后台查询命令并出现 1004 运行时错误 我怎样才能解决它 谢谢 埃亚勒 这是我的代码 Sub fring1 Di
  • 使用 VB.NET 检查 Word 文档中的字体样式

    我想使用vb net检查一个word文件 并检查文档中的样式是否正确 我必须在word文档中检查这些表达式 a Verdana 16 pt Bold Red b Verdana 12 pt Bold Italic Blue c Verdan
  • VBA 中的多线程

    这里有人知道如何让VBA运行多线程吗 我正在使用 Excel 无法用 VBA 本地完成 VBA 构建在单线程单元中 获得多个线程的唯一方法是使用 VBA 之外的其他具有 COM 接口的东西构建 DLL 并从 VBA 调用它 信息 OLE 线
  • 我可以获取VBA代码中的注释文本吗

    可以说我有以下内容 Public Sub Information TEST End Sub 有没有办法得到 TEST 结果 不知何故通过VBA 例如 在 PHP 中 有一个获取注释的好方法 这里有什么想法吗 编辑 应该有办法 因为像 MZ
  • 获取当前 VBA 函数的名称

    对于错误处理代码 我想获取发生错误的当前 VBA 函数 或子函数 的名称 有谁知道如何做到这一点 编辑 谢谢大家 我曾希望存在一个未记录的技巧来自行确定函数 但这显然不存在 我想我会保留当前的代码 Option Compare Databa
  • 无法使用 VBA 代码从 Excel 连接到 Teradata - 无法通过网络访问 Teradata 服务器

    我一直在尝试使用 vba 代码从 Excel 连接到 Teradata 但收到以下错误 无法通过网络访问 Teradata Server 我已经能够从 Teradata SQL 助手成功连接 并且还成功 ping 通 Teradata 服务
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • 在工作表中合并行和求和值

    我有一个 Excel 工作表 其中包含以下数据 管道 来分隔列 A B C X 50 60 D E F X 40 30 A B C X 10 20 A B C Y 20 20 A B C X 20 70 D E F X 10 50 A B
  • 调试VBA、定位问题及排查方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有哪些方法调试VBA代码 具体来说 单步执行代码 断点和停止命令 TheDebug command 当地人和观察窗 调用栈 调试 VB
  • 字符串在换行符处拆分

    我在 MS Access 表单上有一个文本框 用户将从 Excel 电子表格中复制一列数字到其中 我需要获取此输入并将其用作参数来构建查询 我的代码看起来像这样 Dim data as variant Dim input as String
  • VB6/VBA 中对象清除/数组释放真的有必要吗(优点/缺点?)[重复]

    这个问题在这里已经有答案了 我从使用静态代码分析 特别是 Aivosto 的项目分析器 中学到了很多关于 VB 的知识 它检查的一件事是您是否清除了所有对象和数组 我以前只是盲目地这样做 因为PA这么说 但现在我对 VB 释放资源的方式有了
  • 邮件合并到word中

    创建标签的最佳方法是使用现有的行业标准工具 例如 Microsoft Word 您如何执行此操作并设置运输标签 我不确定如何将合并字段映射到数据网格视图列 这是我到目前为止的代码 Create a new empty document Do
  • VBA将二进制图像转换为网页的base64编码字符串

    我正在尝试读取 JPG 文件并将该文件转换为 base64 编码的字符串 该字符串可用作网页上的嵌入 jpeg 我在网上发现了两个在 VBA 中进行 Base64 编码 解码的函数 它们似乎被广泛接受 编码 解码过程产生了我的原始二进制字符

随机推荐

  • 使用 Bash 删除文本文件中的列?

    我需要编写一个脚本 从 Finger 的输出中删除 Idle 列 gt finger Login Name TTY Idle Login Time Office Phone Billy Billy Howard con 6 55 Fri 1
  • NavigationView 栏材质在 iOS 15 上不可见

    在 iOS 15 上 一个带有NavigationView with inline模式不再显示您在导航栏上看到的模糊材质颜色 示例代码 struct ContentView View var body some View Navigatio
  • 将 python 包 Egg 存储在 Artifactory 中是个好主意吗?

    目前我正在开发自动化测试框架 该测试框架有不同的包 这些包将在不同的项目中引用 并且可能由开发人员在本地进行修改 我想管理 python 包 Eggs 我正在考虑使用 Artifactory 我试图寻找Python的Artifactory帮
  • iOS8 的 KeychainItemWrapper 崩溃

    我在用着钥匙串项目包装 https developer apple com library ios samplecode GenericKeychain Listings Classes KeychainItemWrapper m html
  • 在Python中查找给定字符串的所有可能排列[重复]

    这个问题在这里已经有答案了 我有一根绳子 我想通过更改该字符串中字符的顺序来生成该字符串的所有排列 例如 说 x stack 我想要的是这样的列表 l stack satck sackt 目前 我正在迭代字符串的列表强制转换 随机选取 2
  • 在 ggplot2 箱线图上添加多个标签

    我正在尝试在此箱形图上为 2 组添加带有男性和女性平均年龄的标签 到目前为止 我只能按小组进行 而不能按性别和小组进行 我的数据框 Age c 60 62 22 24 21 23 Sex c f m f f f m Group c Old
  • 为什么基于TComponent的接口实现会泄漏内存?

    此 Delphi 代码将显示 TMyImplementation 实例的内存泄漏 program LeakTest uses Classes type MyInterface interface end TMyImplementation
  • Python 中的迷你语言

    我正在用 Python 创建一个简单的迷你语言解析器 靠近问题域进行编程等等 不管怎样 我想知道这里的人会如何做这件事 在 Python 中做这种事情的首选方法是什么 我不会给出我所追求的具体细节 因为目前我只是研究整个领域在 Python
  • 代码契约+代码分析

    我考虑开始使用代码合约 http msdn microsoft com en us devlabs dd491992 aspx在我的代码库中 我已经使用代码分析并启用了所有规则并实现了零警告的目标 然而 当使用Contract Requir
  • 模式关闭后无法在页面上滚动

    我有一个更新数据的模式 更新完成后 模式将关闭 之后我无法在页面上滚动 modal div class modal fade div class modal dialog div class modal content div class
  • 如何在Python中编辑列表中的每个成员

    我是 python 新手 我正在尝试创建一个大写函数 该函数可以将字符串中的所有单词大写或仅将第一个单词大写 这是我的功能 def capitalize data applyToAll False depending on applyToA
  • Flask Docker 容器 SocketIO 问题

    我有一个 Flask 应用程序 它使用 SocketIO 从 Postgres live 获取数据 当我在本地运行该应用程序时 该应用程序运行良好 当我使用 docker compose 托管 Flask 应用程序时 问题就出现了 我的 J
  • 猫头鹰旋转木马 2 响应式图像

    这个案例有一些题目 但是尝试了各种方法之后 没有成功 我试图在 owl carousel 2 插件中使图像响应 我使用responsive插件选项中的选项 我可以控制所需分辨率的项目数量 但在某些分辨率图像不适合父级高度 父级是view a
  • 任何时候只能打开一个 ContentDialog

    如果我多次按下登录按钮 则会触发消息 异步操作未正确启动 任何时候只能打开一个 ContentDialog 延迟代表应用程序联系服务器以查看用户是否有效所需的时间 如果我使用 MessageDialog 一切正常 但我想使用 Content
  • 数字总和返回 NaN

    我正在尝试对 div 内的数字求和 所以 我这样做了 document ready function var numbers sumNumbers item each function numbers this children text
  • 将对象列表发布到 MVC 5 控制器

    我想将对象列表发布到 MVC 5 控制器 但只有 NULL 到达控制器方法 这个帖子 ajax type POST dataType json contentType application json url delikte data JS
  • 使用 postgresql 时出现错误“无法写入临时文件块....设备上没有剩余空间...”

    我正在运行一个非常大的查询 在表中插入很多行 近 800 万行划分为一些较小的查询 但在某些时刻出现错误 我收到错误 无法写入块 临时文件的设备上没有剩余空间 使用 postgresql 我不知道每次查询后是否需要删除临时文件以及如何执行此
  • 分段错误 chkstk_ms C++

    我需要有关以下计数排序实现的帮助 是不是因为x的值太大了 我遇到分段错误 gdb 是这样说的 Program received signal SIGSEGV Segmentation fault chkstk ms at usr src d
  • jquery 自动完成列表不与父输入元素粘在一起

    我在使 jqueryUI 自动完成适应我网站的 CSS 布局时遇到一些困难 每当我在输入字段上调用自动完成功能时 列表都会按预期打开 由于输入位于固定高度的 div 内 因此当用户滚动该 div 时 自动完成列表保持固定 有没有人遇到过这种
  • Word VBA:获取连续标题之间的范围

    我查了一些例子 但我不太明白 Range 对象是如何工作的 我试图循环遍历每个标题 第 4 级 并使用一个嵌套循环来遍历标题之间的所有表格 我不知道如何设置该特定范围 因此任何帮助将不胜感激 Dim myHeadings As Varian