Удалите пустое пространство при вставке разделителя стилей с помощью vba.
Привет всем и извините за мой английский: у меня есть макрос, который добавляет разделитель стилей, и он работает нормально, за исключением того, что перед абзацем добавляется пробел. Как я могу изменить макрос, чтобы он не добавлял его, а если и добавляет, то удалял позже?
Sub SeparadordeEstilos()
With Selection
.InsertBefore vbCr
.InsertStyleSeparator
.Paragraphs(1).Range.Font.Reset
.Paragraphs(1).Style = ("PLL Nivel 2 notdc")
End With
End Sub
Отредактировано:
И тебе большое спасибо, Чарльз, и приношу всем извинения за то, что не объяснил всех деталей. Мне нужно в структурном многоуровневом списке два типа абзацев с одинаковой нумерацией. Некоторые из них имеют жирный шрифт и отображаются в оглавлении, а другие — обычный шрифт, которого нет в оглавлении. Итак, я создал два стиля: PLL Nivel 2 с жирным шрифтом, который отображается в оглавлении, и PLL Nivel 2 notdc , без жирного шрифта, который не отображается в оглавлении и который применяется автоматически с помощью разделителя стилей при выполнении макроса, который я описываю в разделе вопрос . Это единственное решение, которое я нашел, особенно из-за требования непрерывной нумерации.
Все работает нормально, кроме пробела. Это пустое место очень плохо в документе, оно не придает ему профессионального оттенка, а наоборот, придает ему неряшливый вид.
Поэтому мне нужна альтернатива или возможность удалить пробелы.
Вот образец документа с проблемой. Я думал, что последовательная нумерация работает нормально, потому что я видел ее с включенным «Показать все», но если я ее отключу (Показать все), она тоже не работает и устанавливает другую нумерацию.
Редактировать 2
2 ответа
Вам нужно немного места, как в случае с пробелом, между двумя абзацами!
Ваш код при запуске в конце абзаца, перед знаком абзаца, добавляет разделитель стилей и пробел, при этом пробел находится в новом стиле.
Когда линия.insertBefore vbCr
опущен, как предложено Reddy Lutonadio , и запускается в конце абзаца, добавляет разделитель стилей и пробел, удаляя текущий знак абзаца и поднимая следующий абзац в новом стиле, чтобы он выглядел как один абзац. используя два стиля абзаца.
Пространство, вероятно, необходимо для применения стиля. Во втором случае, безусловно, необходимо фактически отделить текст вашего первого абзаца от текста второго.
Вы действительно хотите устранить это пространство?
Вот ваш исправленный макрос:
Sub InsertStyleSeparator()
' Use at end of paragraph just before paragraph mark.
With Selection
' .InsertBefore vbCr
.InsertStyleSeparator
.Paragraphs(1).range.Font.Reset
.Paragraphs(1).Style = ("PLL Nivel 2 notdc")
End With
End Sub
Обратите внимание на комментарий, который я добавил: используйте его в конце абзаца, а не в начале.
Вот образец документа с макросом.
При использовании с разделителем стилей часть, добавляемая к абзацу, не имеет собственного номера. Визуально он действует как часть абзаца, от которого отделен разделителем стилей.
vbCr
это новая линия. Эта строка кода.InsertBefore vbCr
вставьте новую строку перед вашим стилем. Удалите его, чтобы избежать пробелов перед абзацем.