更新字体类型不匹配的单词 vb



我有一个问题,即word文档中的随机空格没有相同的格式字体,我正在尝试找到一种方法将字体更改为周围的字体。

找到了一些我测试过的 VB,它选择文本并将其替换为彩色文本:

Sub ChangeFont()
    With ActiveDocument.Content.Find
      .ClearFormatting
      .Text = " "
      Dim fontName As String
      fontName = "Calibri"
      With .Replacement
        .ClearFormatting
        .Font.Name = fontName
      End With
      .Forward = True
      .Wrap = wdFindContinue
      .Format = True
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
      .Execute Replace:=wdReplaceAll
    End With
End Sub

现在,我正在尝试确定一种方法,而不是替换字体文本和颜色,而是获取字符前面的字体并应用该字符上存在的字体。有没有办法获取索引值并将字体名称拉入替换命令中?有没有更简单的方法可以做到这一点?

理想情况下,我想在 powershell 中执行此操作,但上面的代码在 VB 中有效,但是当我尝试适应它时,我显然搞砸了一些东西,所以我只是想在改编它之前制作功能代码......这是我尝试构建的Powershell:

$app = New-Object -ComObject Word.application
$app.Visible = $True
$doc = $app.Documents.Open($FileName,$null) #Open FileName, ConfirmConversions , ReadOnly -1 = MSOTrue
$Content = $doc.Content.Find
$Content.ClearFormatting
$Content.Text = " "
$Content.Replacement.ClearFormatting
$Content.Replacement.Text = "TEST"
$Content.Replacement.Font.Name = "Georgia"
$Content.Forward = -1 #true
$Content.Wrap = 1 #wdFindContinue
$Content.Format = -1
$Content.MatchCase = 0 #false
$Content.MatchWholeWord = 0
$Content.MatchWildcards = 0
$Content.MatchSoundsLike = 0
$Content.MatchAllWordForms = 0
$Content.Execute.Replace("2") #wdReplaceAll

$doc.Close() | out-null
$app.Quit() | out-null

无需替换任何内容,只需找到每个空格,并将其字体设置为字符的字体,

然后再设置字体。
$Word = New-Object -ComObject Word.Application
$Doc = $Word.Documents.Open($FilePath)
$DocFind = $Doc.Content.Find
Do{
    $DocFind.ClearFormatting()
    $DocFind.Text = " "
    $NextSpace = $DocFind.Execute()
    $DocFind.Parent.Font = $DocFind.Parent.Previous(1,1).Font
}Until(!$NextSpace)

这将查找文档中的第一个空格,并将其字体设置为其前面字符的字体,然后尝试查找下一个空格。它这样做,直到找不到另一个空间。

最新更新