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

将文档中表格中的格式化条目添加到自动更正库

阎扬
2023-03-14

我试图将MSWord 2016文档中的表中的格式化条目添加到自动更正库(如往常一样存储在格式化条目的normal.dotx中)。

在文档中,我有一个包含两列的表,左列为短文本,右列为自动更正条目的格式化长文本。

我有一个工作宏,用于使用行自动更正来存储未格式化的文本。条目。添加名称:=短文本,值:=长文本
我正试图修改它以使用自动更正。条目。AddRichText ShortText,longtext函数,然后该函数应选择表格中的字体和斜体属性。

我尝试了两种方法。

第一个-TestAddressText1

这是代码(去掉了一些化妆品)

Sub testAddRichText1()
    Set oDoc = ActiveDocument
    For i = 1 To oDoc.Tables(2).Rows.Count
        If oDoc.Tables(2).Rows(i).Cells(1).Range.Characters.Count > 1 Then
            ShortText = oDoc.Tables(2).Cell(Row:=i, Column:=1)
            ShortText = Left(ShortText, Len(ShortText) - 2) 'remove the trailing CR and LF
            longtext = oDoc.Tables(2).Cell(Row:=i, Column:=2)
            StatusBar = "Adding " & ShortText & " = " & longtext.Text
            AutoCorrect.Entries.AddRichText ShortText, longtext
        End If
    Next i
    MsgBox "done"
End Sub

使用此代码,从单元格中提取的文本末尾有许多不可打印的字符,大部分是Chr(13)。我尝试在字符串上运行一个清理器来删除所有不可打印的字符,但有些东西不会消失,当使用自动更正时,会在更正文本的末尾出现一个黑框。我想这是表格单元格中的某种密码。尝试打印它的ASC值返回13,但删除它没有效果(只是删除黑盒符号之前的字符)。

第二个测试DDRICHTEXT2

我尝试在我的工作模型中将斜体添加到我的文本字符串中,然后将其与addRichTexthtml" target="_blank">方法一起使用。addRichText需要一个范围,但我无法将文本字符串转换为范围。

这是密码

Sub testAddRichText2()
    Set oDoc = ActiveDocument
    Dim LongTextrng As Range
    For i = 1 To oDoc.Tables(2).Rows.Count
        If oDoc.Tables(2).Rows(i).Cells(1).Range.Characters.Count > 1 Then
            ShortText = oDoc.Tables(2).Cell(Row:=i, Column:=1)
            ShortText = Left(ShortText, Len(ShortText) - 2)
            longtext = oDoc.Tables(2).Cell(Row:=i, Column:=2).Range
            longtext = Left(longtext, Len(longtext) - 2)
            LongTextrng.Text = longtext 'Fails
            LongTextrng.Italic = True
            StatusBar = "Adding " & ShortText & " = " & longtextrng.Text
                AutoCorrect.Entries.Add Name:=ShortText, Value:=LongTextrng
        End If
    Next i
    MsgBox "done"
End Sub

共有1个答案

白子默
2023-03-14

您的第一个示例testAddRichText1几乎是正确的。它失败了,因为尽管您已经意识到需要从短文本中删除尾随字符,但对于长文本却没有这样做。

若要缩短范围,请使用Moveend方法移动范围的末尾。在这种情况下,您需要将区域的末尾向后移动一个字符,以删除单元格标记的末尾。

在第二个示例testAddRichText2中,代码失败,因为您没有正确地将范围分配给变量LongTextrng。将值指定给对象变量时,需要使用Set命令,如下所示:

Set objVar = object

这在您的第一次尝试中并没有失败,因为LongText尚未声明,因此被假定为一个变体。

以下代码适用于您:

Sub AddRichTextAutoCorrectEntries()
    Dim LongText                    As Range
    Dim oRow                        As Row
    Dim ShortText                   As String

    For Each oRow In ActiveDocument.Tables(2).Rows
        If oRow.Cells(1).Range.Characters.Count > 1 Then
            ShortText = oRow.Cells(1).Range.Text
            ShortText = Left(ShortText, Len(ShortText) - 2)
            'assign the range to the variable
            Set LongText = oRow.Cells(2).Range
            'move the end of the range back by 1 character
            LongText.MoveEnd wdCharacter, -1
            StatusBar = "Adding " & ShortText & " = " & LongText.Text
            AutoCorrect.Entries.AddRichText Name:=ShortText, Range:=LongText
        End If
    Next oRow
End Sub
 类似资料:
  • 我有以下代码用于在 matplotlib 中制作表格图。 plt 是一个拼贴图对象 我想为我使用的颜色图添加一个颜色条。 我试着做<代码>图。colorbar()但这给了我一个画布错误。

  • 自动格式化 控制台允许您自动格式化复杂的请求。为此,请将光标置于您想格式化的请求上,并从操作菜单中选择自动缩进: 图 6. 自动缩进一个请求 控制台将调整请求的 JSON 体,调整之后的请求如下所示: 图 7. 格式化的请求 如果在已完全格式化的请求上选择自动缩进,控制台将把每个文档的请求体折叠到一行,这在使用 Elasticsearch 的批量 API 的时候会非常方便。 图 8. 每个文档一行

  • 我正在创建一个新的PDF,其中将包含其他文档的汇编。 这些其他文档可以是word/excel/图像/PDF。 我希望将所有这些内容添加到表中的单元格中,该单元格被添加到文档中-这给了我自动添加页面的好处,将元素定位在单元格中而不是页面中,并允许我更轻松地将内容保持在与我提供的相同的顺序(如img,doc,pdf,img,pdf等) 向表中添加图像非常简单。 我正在将word/excel文档转换为P

  • 问题内容: 在我的项目中,我试图在IE8中进行滚动。我知道只要给即可滚动显示。但这在IE8中不起作用。为了使其在IE8工作,必须给予(或双方和)。如果我进行此工作,则忽略我分配给和的宽度。这又不让占据全宽和。因此,和/ 之间有一个令人讨厌的空间。 请在IE8中测试此 演示。( 在Firefox和Chrome中可以正常使用 ) 这是 小提琴中的代码。 这是我不能改变的严格要点 的宽度,且必须为百分比

  • 问题内容: 我仅使用1个数据插入json文件。 这就是我的json文件的外观。我只想在最后添加1个播放器。 我的问题是,如何在最后添加播放器?我也想知道如何更新 在匹配数组中。 问题答案: 只需解码json字符串,然后使用数组推送 对于你的情况 只需检查print_r($ arr);的值即可。我希望这就是你想要的。:)