我在Words Mail Merge的基础上创建发票Word模板。我从Web应用程序通过.csv文件获取了必要的信息,并根据这些信息创建了一个表。数据以这种方式给出:
Person1 - InvoicePos1 - InvoicePos2 - InvoicePos3 - InvoicePos4
Person2 - InvoicePos1 - InvoicePos2 - InvoicePos3 - InvoicePos4
Person3 - InvoicePos1 - InvoicePos2 - InvoicePos3 - InvoicePos4
.
.
.
.
有不同数量的发票类型/发票位置,所以我必须创建一个动态表,到目前为止效果很好。
我的问题: Word似乎会自动在通过{IF}语句插入的每个表之前插入一个段落。为什么我知道插入这些段落的Word?整个文档的Calibri大小为12,但是这些段落为Times New Roman10。
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
我知道如何更改“隐藏属性”(这一点都不难..) 但是,对于.Font.Name“ Times New Roman”的所有段落,我将如何查找所有段落标记(我将不得不使用给定的If语句ive)或(这将是更好的恕我直言)过滤器。 我找不到任何找到段落标记的方法。但是比起对VBA来说,我还是很陌生,实际上不知道我在这里做什么。由于VBA确实很棒。 facepalm
答案 0 :(得分:0)
您可以删除它们:
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
答案 1 :(得分:0)
一个简单的查找/替换甚至更快:
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