当前位置: 首页 > 知识库问答 >
问题:

如何在vba中为特定的一组字符设置Word的范围?

公胤运
2023-03-14

我在一个单词段落中找到了一个起始字符和结束字符,但就我而言,我无法确定如何设置包含这些字符的范围。以下是我所拥有的内容的摘录:

Set rngTemp = w.Paragraphs(i).Range
For iCounter = 1 To rngTemp.Characters.Count
    If rngTemp.Characters(iCounter).HighlightColorIndex = wdYellow Then
        lStartPos = iCounter
        While rngTemp.Characters(iCounter).HighlightColorIndex = wdYellow
            iCounter = iCounter + 1
        Wend
        lEndPos = iCounter

使用起始字符和结束字符的值,如何设置包含该字符串的范围?我做了很多尝试,但都没有成功。

Microsoft“使用范围”页面上的说明包含以下代码:

Set rngDoc = ActiveDocument.Range(Start:=0, End:=10)

我在样本的第一行(“设置rngTemp…”)中没有收到任何错误,这似乎与微软的样本非常相似。但当我尝试时:

Set r = w.Paragraphs(i).Range(Start:=lStartPos, End:=lEndPos)

我得到"编译错误:错误数量的参数或无效的属性分配"

共有1个答案

上官波鸿
2023-03-14

我想我已经用这个密码找到了答案:

 Set r = w.Range(w.Paragraphs(i).Range.Characters(lStartPos).Start, _
          w.Paragraphs(i).Range.Characters(lEndPos).End)

但它仍然产生了一个错误。在直接窗口中,我粘贴了每一行的代码,并显示了每一行的数字。然后我将set语句更改为使用实际数字,这就奏效了。出于某种原因,VBA不喜欢让上面代码中的数字在设置范围变量时起作用。我将原始代码(从顶部)更改为:

Set rngTemp = w.Paragraphs(i).Range

        For iCounter = 1 To rngTemp.Characters.Count
            If rngTemp.Characters(iCounter).HighlightColorIndex = wdYellow Then

                'lStartPos = iCounter
                lStartPos = w.Paragraphs(i).Range.Characters(iCounter).Start

                While rngTemp.Characters(iCounter).HighlightColorIndex = wdYellow
                    iCounter = iCounter + 1
                Wend

                'lEndPos = iCounter
                lEndPos = w.Paragraphs(i).Range.Characters(iCounter).End

                Set r = w.Range(lStartPos, lEndPos)

它成功了。

 类似资料:
  • 我需要修改这个为Word 2007制作的代码到Word XP。我需要设置文件中希伯来文文本的大小。它是中欧单词和希伯来语的混合。我需要的是更大尺寸的希伯来文。这只包含基本的希伯来文字符,没有元音。非希伯来文字符可以是英语或捷克语(http://www.biega.com/special-char.html),希伯来文字符是从1488年到1514年。 但我无法在答案中使用Word中的VBA运行“代码

  • 代码段 很简单-分配字符串,然后将字符串分配给单元格。 我想做的是告诉“狐狸”这个词,他很大胆。这能做到吗?有特殊的字符序列吗?例如^B,有人知道在哪里可以找到完整的列表吗?文本显然可以是任何东西。。。 谢谢并问候塞恩

  • 我完全不知道如何更好地处理这个过程。 下面的宏分析文档中的每个字符,如果ASCII值高于255,它会对其应用特殊的字符样式——有些是针对特定语言的,如果不是这些语言的一部分,则只使用“lang”。 宏工作正常,但是在长文档上,处理它需要很长时间。例如,我刚刚处理了一个147页(单行间距)的文档,每页上有几行希腊文,用了40分钟,在Windows的Word 2016中(相比之下,在Mac上完全相同的

  • 我试图找出如何设置整个word文档的字体样式,完全是通过选择菜单中预设的样式来完成的: 因为我已经制作了一个宏来逐字转换整个文档,所以我试图用它来完成的是更改所有预设磁贴(正常、无间距、标题、标题1等)。)以匹配现有的预设,而不是旧的预设(旧字体)。 这可能吗?我要修改什么对象来实现这一点?

  • 我必须在Word文档中创建一个没有模板的报告。该报告由来自MS Access的记录组成--将有一些文本和一个表,基于记录的#迭代(我将基于记录的#使用VBA动态创建表)。我可以开始在word文档中插入文本,使用书签作为起点,然后可以添加表格和填充单元格。问题是填完表格后,如何将光标放在表格后的下一行开始插入文本。以下是我的代码任何人与一些提示或例子将会感激-谢谢!

  • 问题内容: 我有一组字符串,并且其中的所有字符串都有两个特定的子字符串,这些子字符串是我不需要的并且想要删除。 输入示例: 所以基本上我希望从所有字符串中删除和子字符串。 我试过的 但这似乎根本不起作用。输出绝对没有变化,它与输入相同。我尝试使用原始版本,但没有任何改变。 问题答案: 字符串是不可变的。(python 2.x)或(python 3.x)创建一个 新 字符串。在文档中对此进行了说明: