В ms word2010 у меня есть закладка с именем закладки: nameOfBookmark
Теперь содержимое закладок может быть чем угодно: от простого текста до сочетания картин, таблиц и всего, что вы могли бы подумать о вводе в документ Word.
Проблема заключается в следующем: у меня есть моя закладка с некоторым содержимым, которое я хочу удалить. Однако каждый раз, когда я пытаюсь удалить содержимое, он также удаляет мою закладку, которую я хочу сохранить.
Я пробовал это, что просто удаляет все:
public void cleanBookmark(string bookmark)
{
var start = currentDocument.Bookmarks[nameOfBookmark].Start;
var end = currentDocument.Bookmarks[nameOfBookmark].End;
Word.Range range = currentDocument.Range(start, end);
range.Delete();
}
Я также пытался установить диапазон:
Word.Range range = currentDocument.Range(start +1, end -1);
Но затем я получаю закладку, которая по-прежнему содержит первый и последний характер содержимого, которое я хотел удалить.
Ну, интересно, почему я должен отвечать на свои вопросы, пожалуйста, сообщите мне, если вы думаете, что это может быть что-то о том, как я задаю вопросы.
Во всяком случае, я нашел решение после немного большего количества исследований, и кажется, что вещь, которую я хочу, просто не может быть выполнена или, по крайней мере, не так, как я думал, что это можно сделать.
Если вы удалите содержимое закладки, оно также удалит закладку. Так что вам нужно сохранить имя и диапазон закладки в локальной переменной, а затем добавить закладку снова после ее удаления.
public void cleanBookmark(string bookmark)
{
var start = currentDocument.Bookmarks[bookmark].Start;
var end = currentDocument.Bookmarks[bookmark].End;
Word.Range range = currentDocument.Range(start, end);
range.Delete();
//The Delete() only deletes text so if you got tables in the doc it leaves the tables empty.
//The following removes the tables in the current range.
if (range.Tables.Count != 0)
{
for (int i = 1; i <= range.Tables.Count; i++)
{
range.Tables[i].Delete();
}
}
currentDocument.Bookmarks.Add(bookmark, range);
}
Если вы хотите узнать больше об этой теме, посмотрите этот вопрос.
Вы можете попробовать следующее:
ActiveDocument.Bookmarks("name").Range.Characters.First.Delete
PS
Все еще пытается решить несколько закладок.
Я обнаружил, что если вы конвертируете текст в таблицу и вставляете одиночную закладку I-луча в ячейку, в которой вам это нужно, таблица защищает закладку, даже если вы удаляете содержимое. Затем, как только вы разработали всю свою vba для формы, если вы преобразуете форму в точку, пользователи не должны иметь проблемы с удалением закладок случайно, и вам необходимо устранить эту проблему, чтобы исправить свою ошибку.