有没有办法让宏删除某种类型的所有段落?
Is there a way to have a macro remove all paragraphs of a certain type?
我正在基于 Words 邮件合并创建发票 Word 模板。我通过 .csv 文件从 Web 应用程序获取必要的信息,并根据这些信息创建 table。数据是这样给出的:
Person1 - InvoicePos1 - InvoicePos2 - InvoicePos3 - InvoicePos4
Person2 - InvoicePos1 - InvoicePos2 - InvoicePos3 - InvoicePos4
Person3 - InvoicePos1 - InvoicePos2 - InvoicePos3 - InvoicePos4
.
.
.
.
有不同数量的发票类型/发票位置,所以我必须创建一个动态的 table,到目前为止效果很好。
我的问题:
Word 似乎会在每个通过 {IF} 语句插入的 table 之前自动插入一个段落。为什么我知道插入这些段落的是它的Word?嗯,整个文件都是 Calibri 尺寸 12,但这些段落是 Times New Roman 10。
IMGUR-Link with (hopefully helpful images)
我的问题:有没有一种方法可以创建一个宏来运行已创建的文档,禁用/隐藏 Times New Roman 的每个段落?
我已经尝试过不同的设置来试图阻止创建这些段落但无济于事。所以现在我试图在创建文档后隐藏这些段落。
Sub HidePara()
If /FoundParagraphs/.Font.Name = "Times New Roman" Then
/FoundParagraphs/.Hidden = true
End If
End Sub
我知道如何更改隐藏属性(一点也不难..)
但是我将如何寻找所有段落标记(我将不得不使用我给定的 If 语句)或(恕我直言,这会更好)筛选 .Font.Name "Times New Roman" 的所有段落。
我根本找不到任何方法来找到段落标记。但是我又是 VBA 的新手,实际上不知道我在这里做什么。因为 VBA 真的很棒。 捂脸
您可以删除它们:
Sub DelPara()
Dim oPara As Paragraph
For Each oPara In ActiveDocument.Paragraphs
If oPara.Range.Font.Name = "Times New Roman" Then oPara.Range.Delete
Next oPara
End Sub
更快是一个简单的 Find/Replace:
Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.Font.Name = "Times New Roman"
.Execute Replace:=wdReplaceAll
End With
End With
Application.ScreenUpdating = True
End Sub
我正在基于 Words 邮件合并创建发票 Word 模板。我通过 .csv 文件从 Web 应用程序获取必要的信息,并根据这些信息创建 table。数据是这样给出的:
Person1 - InvoicePos1 - InvoicePos2 - InvoicePos3 - InvoicePos4
Person2 - InvoicePos1 - InvoicePos2 - InvoicePos3 - InvoicePos4
Person3 - InvoicePos1 - InvoicePos2 - InvoicePos3 - InvoicePos4
.
.
.
.
有不同数量的发票类型/发票位置,所以我必须创建一个动态的 table,到目前为止效果很好。
我的问题: Word 似乎会在每个通过 {IF} 语句插入的 table 之前自动插入一个段落。为什么我知道插入这些段落的是它的Word?嗯,整个文件都是 Calibri 尺寸 12,但这些段落是 Times New Roman 10。
IMGUR-Link with (hopefully helpful images)
我的问题:有没有一种方法可以创建一个宏来运行已创建的文档,禁用/隐藏 Times New Roman 的每个段落?
我已经尝试过不同的设置来试图阻止创建这些段落但无济于事。所以现在我试图在创建文档后隐藏这些段落。
Sub HidePara()
If /FoundParagraphs/.Font.Name = "Times New Roman" Then
/FoundParagraphs/.Hidden = true
End If
End Sub
我知道如何更改隐藏属性(一点也不难..) 但是我将如何寻找所有段落标记(我将不得不使用我给定的 If 语句)或(恕我直言,这会更好)筛选 .Font.Name "Times New Roman" 的所有段落。 我根本找不到任何方法来找到段落标记。但是我又是 VBA 的新手,实际上不知道我在这里做什么。因为 VBA 真的很棒。 捂脸
您可以删除它们:
Sub DelPara()
Dim oPara As Paragraph
For Each oPara In ActiveDocument.Paragraphs
If oPara.Range.Font.Name = "Times New Roman" Then oPara.Range.Delete
Next oPara
End Sub
更快是一个简单的 Find/Replace:
Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.Font.Name = "Times New Roman"
.Execute Replace:=wdReplaceAll
End With
End With
Application.ScreenUpdating = True
End Sub