Я создаю накладную Словарные шаблоны на основе Слова Почтового Слияния. Я получаю необходимую информацию через файл .csv из веб-приложения и создаю таблицу на основе этой информации. Данные приведены следующим образом:
Person1 - InvoicePos1 - InvoicePos2 - InvoicePos3 - InvoicePos4
Person2 - InvoicePos1 - InvoicePos2 - InvoicePos3 - InvoicePos4
Person3 - InvoicePos1 - InvoicePos2 - InvoicePos3 - InvoicePos4
.
.
.
.
Существует разное количество типов счетов / позиций счетов, поэтому мне нужно создать динамическую таблицу, которая до сих пор прекрасно работает.
Моя проблема: Word, кажется, автоматически вставляет абзац перед каждой таблицей, которая вставляется через {IF} -Statement. Почему я знаю, что это Слово, которое вставляет эти абзацы? Ну, весь документ в формате Calibri 12, но эти параграфы Times New Roman 10.
IMGUR-Link с (надеюсь, полезными изображениями)
Мой вопрос: есть ли способ создать макрос, который запускается поверх созданного документа, который отключает / скрывает каждый абзац Times New Roman?
Я уже пробовал разные настройки, чтобы предотвратить создание этих абзацев, но безрезультатно. Поэтому теперь я пытаюсь скрыть эти абзацы после создания документа.
Sub HidePara()
If /FoundParagraphs/.Font.Name = "Times New Roman" Then
/FoundParagraphs/.Hidden = true
End If
End Sub
Я знаю, как изменить скрытый атрибут (что совсем не сложно ..) Но как бы я искал все метки абзаца (мне пришлось бы использовать приведенное выше выражение If) или (что было бы лучше imho) фильтр для всех абзацев .Font.Name "Times New Roman". Я не могу найти какой-либо способ найти знаки абзаца вообще. Но, опять же, я довольно новичок в VBA и на самом деле понятия не имею, что я здесь делаю. Как VBA действительно здорово. < EM> Facepalm
2 ответа
Еще быстрее простой поиск / замена:
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
Вы можете просто удалить их:
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
Похожие вопросы
Новые вопросы
vba
Visual Basic для приложений (VBA) - это управляемый событиями объектно-ориентированный язык программирования для написания макросов, используемый для всего пакета Office, а также для других приложений. VBA не эквивалентен VB.NET или VBS; если вы работаете в Visual Studio, используйте [vb.net]. Если ваш вопрос конкретно касается программирования любого приложения MS Office, также используйте соответствующий тег: [excel], [ms-access], [ms-word], [outlook] или [ms-project].