Word VBA:查找行并替换字体

Word VBA:查找行并替换字体,vba,replace,fonts,ms-word,format,Vba,Replace,Fonts,Ms Word,Format,我编写了一个VBA Word宏,它读取.txt文件,复制它并将其粘贴到Word文档中,设置新字体 一切正常!现在我想用bold+italicfont突出显示一些特定的行,但我无法找到一个有效的解决方案 特定行以特定单词开头(例如Simulation Nr.xxx),或以一些单词开头,但随后它们有一系列很长的空格(例如Turbine) 我怎样才能解决这个问题 注意:这里是将.txt文件复制/粘贴到word文档中的工作代码 Sub ACTUS_Table_Converter() Dim pNam

我编写了一个VBA Word宏,它读取
.txt
文件,复制它并将其粘贴到Word文档中,设置新字体

一切正常!现在我想用
bold+italic
font突出显示一些特定的行,但我无法找到一个有效的解决方案

特定行以特定单词开头(例如
Simulation Nr.xxx
),或以一些单词开头,但随后它们有一系列很长的空格(例如
Turbine

我怎样才能解决这个问题


注意:这里是将.txt文件复制/粘贴到word文档中的工作代码

Sub ACTUS_Table_Converter()

Dim pName As String
Dim bDoc As Document
Dim AppPath, ThisPath As String
Dim Rng As Range

ThisPath = ActiveDocument.Path
pName = ActiveDocument.Name

With Dialogs(wdDialogFileOpen)
    If .Display Then
        If .Name <> "" Then
            Set bDoc = Documents.Open(.Name)
            AppPath = bDoc.Path
        End If
    Else
        MsgBox "No file selected"
    End If
End With

Call ReplaceAllxSymbolsWithySymbols
Call ChangeFormat

Selection.Copy
Windows(pName).Activate
Selection.Paste
Selection.Collapse
bDoc.Close savechanges:=False

End Sub

Sub ChangeFormat()

Selection.WholeStory
With Selection.Font
    .Name = "Courier New"
    .Size = 6
End With

End Sub

Sub ReplaceAllxSymbolsWithySymbols()

'Call the main "ReplaceAllSymbols" macro (below),
'and tell it which character code  and font to search for, and which to replace with

Call ReplaceAllSymbols(FindChar:=ChrW(-141), FindFont:="(normal text)", _
        ReplaceChar:=ChrW(179), ReplaceFont:="(normal text)")
Call ReplaceAllSymbols(FindChar:=ChrW(-142), FindFont:="(normal text)", _
        ReplaceChar:=ChrW(178), ReplaceFont:="(normal text)")
Call ReplaceAllSymbols(FindChar:=ChrW(-144), FindFont:="(normal text)", _
        ReplaceChar:=ChrW(176), ReplaceFont:="(normal text)")
Call ReplaceAllSymbols(FindChar:="°", FindFont:="(normal text)", _
        ReplaceChar:="", ReplaceFont:="(normal text)")

End Sub

Sub ReplaceAllSymbols(FindChar As String, FindFont As String, _
    ReplaceChar As String, ReplaceFont As String)

Dim FoundFont As String, OriginalRange As Range, strFound As Boolean
Application.ScreenUpdating = False

Set OriginalRange = Selection.Range
'start at beginning of document
ActiveDocument.Range(0, 0).Select

strFound = False
If ReplaceChar = "" Then
With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = FindChar
    .Replacement.Text = ReplaceChar
    .Replacement.Font.Name = "Courier New"
    .Replacement.Font.Size = 6
    .MatchCase = True
End With
If Selection.Find.Execute Then
    Selection.Delete Unit:=wdCharacter, Count:=2
    Selection.TypeText ("°C")
End If
Else
With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = FindChar
    .Replacement.Text = ReplaceChar
    .Replacement.Font.Name = "Courier New"
    .Replacement.Font.Size = 6
    .MatchCase = True
    .Execute Replace:=wdReplaceAll
End With
End If

OriginalRange.Select

Set OriginalRange = Nothing
Application.ScreenUpdating = True

Selection.Collapse

End Sub
Sub-ACTUS\u Table\u转换器()
作为字符串的Dim pName
将bDoc变为文件
Dim AppPath,此路径为字符串
变暗Rng As范围
ThisPath=ActiveDocument.Path
pName=ActiveDocument.Name
带对话框(wdDialogFileOpen)
如果是,那么显示
如果.Name为“”,则
设置bDoc=Documents.Open(.Name)
AppPath=bDoc.Path
如果结束
其他的
MsgBox“未选择任何文件”
如果结束
以
调用ReplaceAllxSymbolsWithySymbols
呼叫更改格式
选择,复制
Windows(pName)。激活
选择。粘贴
选择。折叠
bDoc.Close savechanges:=False
端接头
子格式()
健康的选择
使用Selection.Font
.Name=“新快递”
.尺寸=6
以
端接头
将所有XSYMBOLS替换为YSYMBOLS()
'调用主“ReplaceAllSymbols”宏(如下),
'并告诉它要搜索的字符代码和字体,以及要替换的字符代码和字体
调用ReplaceAllSymbols(FindChar:=ChrW(-141),FindFont:=“(普通文本)”_
ReplaceChar:=ChrW(179),ReplaceFont:=“(普通文本)”
调用ReplaceAllSymbols(FindChar:=ChrW(-142),FindFont:=“(普通文本)”_
ReplaceChar:=ChrW(178),ReplaceFont:=“(普通文本)”
调用ReplaceAllSymbols(FindChar:=ChrW(-144),FindFont:=“(普通文本)”_
ReplaceChar:=ChrW(176),ReplaceFont:=“(普通文本)”
调用ReplaceAllSymbols(FindChar:=“°”,FindFont:=“(普通文本)”_
ReplaceChar:=”,ReplaceFont:=“(普通文本)”
端接头
子替换所有符号(FindChar作为字符串,FindFont作为字符串_
替换字符作为字符串,替换字体作为字符串)
Dim FoundFont作为字符串,OriginalRange作为范围,strFound作为布尔值
Application.ScreenUpdating=False
设置原始范围=选择范围
'从文档开头开始
ActiveDocument.Range(0,0)。选择
strFound=False
如果ReplaceChar=“”,则
选择。查找
.ClearFormatting
.Replacement.ClearFormatting
.Text=FindChar
.Replacement.Text=ReplaceChar
.Replacement.Font.Name=“快递新”
.Replacement.Font.Size=6
.MatchCase=True
以
如果选择.Find.Execute,则
选择。删除单位:=wdCharacter,计数:=2
Selection.TypeText(“C”)
如果结束
其他的
选择。查找
.ClearFormatting
.Replacement.ClearFormatting
.Text=FindChar
.Replacement.Text=ReplaceChar
.Replacement.Font.Name=“快递新”
.Replacement.Font.Size=6
.MatchCase=True
.Execute Replace:=wdReplaceAll
以
如果结束
原始范围。选择
设置原始范围=无
Application.ScreenUpdating=True
选择。折叠
端接头

以下代码应在文档上运行,查找以
模拟编号开始的行
,并用粗体和斜体替换整个行

Sub ReplaceLinesStartWith()

Dim startingWord As String
'the string to search for
startingWord = "Simulation Nr."

Dim myRange As range
'Will change selection to the document start
Set myRange = ActiveDocument.range(ActiveDocument.range.Start, ActiveDocument.range.Start)
myRange.Select

While Selection.End < ActiveDocument.range.End
   If Left(Selection.Text, Len(startingWord)) = startingWord Then
        With Selection.Font
            .Bold = True
            .Italic = True
        End With
    End If

    Selection.MoveDown Unit:=wdLine
    Selection.Expand wdLine

Wend

End Sub
Sub replacelinessstartwith()
作为字符串的单词
'要搜索的字符串
startingWord=“模拟编号。”
将myRange变暗为range
'将选择更改为文档开始
设置myRange=ActiveDocument.range(ActiveDocument.range.Start,ActiveDocument.range.Start)
我的范围。选择
选择时.End

请注意,我硬编码了要搜索的字符串,您可以将其设置为函数参数。

谢谢!这对我有帮助,但不要解决第二种情况,即随机单词加上许多空格的情况。我怎样才能解决它?我可能不得不使用某种通配符,但我不知道如何说搜索“未知单词+空格”。你知道吗?提前谢谢。MLCY您应该清楚地定义您要搜索的内容。什么叫做“未知词”?有多少空间?有一个模式吗?我有以下问题:有一些标题的结构化文本,我想用粗体突出显示。这些标题很多,我无法为每个标题定义查找和替换,但我知道如果该行中有标题,则该行在标题词后至少有25个空格。如何搜索和查找这些行并将其字体更改为粗体?谢谢