Замена текста word c
Снова проблемка. Указанный выше код работает только на машине, на которой писалась прога (Office2010, Windows 7 x86).
А вот на другой машине (Office 2007 Windows 7 x86) выдет вот такую ошибку:
************** Текст исключения **************
System.AccessViolationException: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
в Microsoft.Office.Interop.Word.Find. get_Replacement()
в Credit_Verdict.MainForm.SearchAndRe place(String FindStr, String RepStr)
в Credit_Verdict.MainForm.btnGenerate _Click(Object sender, EventArgs e)
в System.Windows.Forms.ToolStripItem. RaiseEvent(Object key, EventArgs e)
в System.Windows.Forms.ToolStripButto n.OnClick(EventArgs e)
в System.Windows.Forms.ToolStripItem. HandleClick(EventArgs e)
в System.Windows.Forms.ToolStripItem. HandleMouseUp(MouseEventArgs e)
в System.Windows.Forms.ToolStripItem. FireEventInteractive(EventArgs e, ToolStripItemEventType met)
в System.Windows.Forms.ToolStripItem. FireEvent(EventArgs e, ToolStripItemEventType met)
в System.Windows.Forms.ToolStrip.OnMo useUp(MouseEventArgs mea)
в System.Windows.Forms.Control.WmMous eUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndPro c(Message& m)
в System.Windows.Forms.ScrollableCont rol.WndProc(Message& m)
в System.Windows.Forms.ToolStrip.WndP roc(Message& m)
в System.Windows.Forms.Control.Contro lNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.Contro lNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.C allback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.
Как решить проблему?
Файл Microsoft.Office.Interop.Word.dll переношу вместе с программой. Без него сразу же ругается.
Объект Find является членом объектов Selection и Range, каждый из которых можно использовать для поиска текста в документах Microsoft Office Word. Команда замены является расширением команды поиска.
С помощью объекта Find можно выполнять операцию перебора документа Microsoft Office Word и поиска конкретного текста, форматирования или стиля, а свойство Replacement можно использовать для замены всех найденных элементов.
Применимо к: Сведения в этом разделе относятся к - проектам уровня документа и добавлению VSTO - в проектах для Word. Дополнительные сведения см. в разделе доступность функций по типам приложений Office и проектов.
Использование объекта Selection
При использовании объекта Selection для поиска текста все заданные условия применяются только для поиска текущего выделенного текста. Если точкой вставки является Selection, то поиск выполняется по документу. Если будет найден элемент, соответствующий условиям поиска, он будет автоматически выделен.
Следует отметить, что условия Find являются накопительными. Это означает, что условия добавляются к предыдущим условиям поиска. Для сброса форматирования из предыдущих операций поиска перед выполнением нового поиска используйте метод ClearFormatting.
Поиск текста с помощью объекта Selection
Назначьте переменной строку поиска.
Сбросьте форматирование из предыдущих операций поиска.
В следующем примере показан полный метод.
Использование объекта Range
Объект Range позволяет искать текст, ничего не отображая в пользовательском интерфейсе. FindОбъект возвращает значение true , если найден текст, соответствующий условиям поиска, и false , если это не так. Он также переопределяет объект Range, чтобы он соответствовал условиям поиска при обнаружении текста.
Поиск текста с помощью объекта Range
Определите объект Range, состоящий из второго абзаца в документе.
Следующий пример кода можно использовать в настройке на уровне документа.
Следующий пример кода можно использовать в надстройке VSTO. В этом примере используется активный документ.
С помощью Find свойства Range объекта сначала очистите все существующие параметры форматирования, а затем найдите строку Find Me.
Если поиск заканчивается неудачно, выбирается второй абзац. При успешном выполнении поиска отображаются условия поиска.
В следующем примере показан полный код для настройки на уровне документа. Чтобы использовать этот пример, запустите код из класса ThisDocument в своем проекте.
В следующем примере показан полный код для надстройки VSTO. Чтобы использовать этот пример, запустите код из класса ThisAddIn в своем проекте.
Поиск и замена текста в документах
Следующий код выполняет поиск в текущем выделенном фрагменте и заменяет все вхождения строки Find Me найденной строкой.
Поиск и замена текста в документах
Добавьте следующий пример кода в класс ThisDocument или ThisAddIn в своем проекте.
Класс Find имеет метод ClearFormatting, а класс Replacement также имеет свой собственный метод ClearFormatting. При выполнении операций Find-and-Replace необходимо использовать метод Клеарформаттинг обоих объектов. Если его использовать только на объекте Find, то при замене текста можно получить непредвиденные результаты.
Для замены каждого найденного элемента используйте метод Execute объекта Find. Чтобы указать, какие элементы следует заменить, используйте параметр Replace . Этот параметр может принимать одно из следующих значений WdReplace:
С помощью элементов управления Поиск и замена (CTRL+F или CTRL+H) и Поиск и замена в файлах (CTRL+SHIFT+F или CTRL+SHIFT+H) можно найти и заменить текст в редакторе Visual Studio. Вы можете найти и заменить только несколько экземпляров текста с помощью выбора нескольких точек вставки.
Если необходимо переименовать символы кода, такие как имена переменных или методов, то вместо поиска и замены лучше выполнить рефакторинг. Рефакторинг обладает интеллектуальными возможностями и может распознавать области, в то время как функция поиска и замены слепо заменяет все вхождения.
Возможность поиска и замены доступна в редакторе, в некоторых других текстовых окнах (например, в результатах поиска), в окнах конструкторов (например, в конструкторе XAML и в конструкторе Windows Forms) и в окнах инструментов.
Поле Найти/команда доступно как элемент управления панели инструментов, но оно не отображается по умолчанию. Чтобы отобразить поле Найти/команда, выберите на стандартной панели инструментов команду Добавить или удалить кнопки и щелкнув Найти.
Элемент управления "Поиск и замена"
- Нажмите CTRL+F для быстрого поиска строки в текущем файле.
- Нажмите CTRL+H для быстрого поиска и замены строки в текущем файле.
Элемент управления Поиск и замена отображается в правом верхнем углу окна редактора кода. Он немедленно выделяет все вхождения заданной поисковой строки в текущем документе. Вы можете переходить от одного вхождения к другому, нажав кнопку Найти далее или Найти предыдущий на элементе управления поиска.
Перейти к параметрам замены можно, нажав кнопку рядом с текстовым полем Найти. Чтобы изменять по одному вхождению за раз, выберите Заменить следующий рядом с текстовым полем Заменить. Чтобы заменить все найденные совпадения, нажмите кнопку Заменить все.
Чтобы изменить цвет выделения совпадений, в меню Сервис последовательно выберите Параметры, затем Среда, а затем Шрифты и цвета. В списке Показать параметры для выберите Текстовый редактор, а затем в списке Отображение элементов выберите Выделение найденных совпадений.
Окна инструмента поиска
Элемент управления Найти можно использовать в текстовых окнах и окнах кода, таких как окна вывода и результатов поиска, выбрав Правка > Поиск и замена (или нажав клавиши CTRL+F).
Версия элемента управления Найти также доступна в некоторых окнах инструментов. Например, можно фильтровать список элементов управления в окне панели элементов путем ввода текста в поле поиска. Другие окна инструментов, для которых поддерживается поиск содержимого, включают обозреватель решений, окно Свойства и Team Explorer.
Поиск и замена в файлах
- Нажмите CTRL+SHIFT+F для быстрого поиска строки в нескольких файлах.
- Нажмите CTRL+SHIFT+H для быстрого поиска и замены строки в нескольких файлах.
Функции Найти/Заменить в файлах аналогичны функциям элемента управления Поиск и замена за исключением того, что можно определить область поиска. Вы можете выполнить поиск не только в текущем открытом файле в редакторе, но также во всех открытых документах, всем решении, текущем проекте и выбранном наборе папок. Также можно выполнять поиск по расширению имени файла. Чтобы перейти к диалоговому окну поиска и замены в файлах, выберите Поиск и замена в меню Правка (или нажмите клавиши CTRL+SHIFT+F).
Более подробные сведения см. на страницах Найти в файлах и Заменить в файлах.
Более подробные сведения см. на страницах Найти в файлах и Заменить в файлах.
Если вы используете Visual Studio 2019 версии 16.6 или более ранней, диалоговое окно Найти и заменить может выглядеть не так, как показано здесь. Перейдите на версию этой страницы для Visual Studio 2017, чтобы получить правильное описание.
Более подробные сведения см. на страницах Найти в файлах и Заменить в файлах.
Результаты поиска
При выборе варианта Найти все откроется окно Результаты поиска со списком найденных совпадений. При выборе результата в списке отображается связанный файл и выделяется искомый текст. Если файл не открыт для редактирования, он открывается на вкладке предварительного просмотра в правой части набора вкладок. Для поиска в списке Результаты поиска можно использовать элемент управления Найти.
Создание пользовательских наборов папок поиска
Область поиска можно определить, нажав кнопку Выбор папок поиска (она выглядит как . ) рядом с полем Поиск в. В диалоговом окне Выбор папок поиска можно указать набор папок для поиска и сохранить спецификацию для дальнейшего использования.
Если к вашему компьютеру подключен диск удаленного компьютера, можно указать папки для поиска на удаленном компьютере.
Создание пользовательских наборов компонентов
Выбор нескольких точек вставки
Этот раздел относится к Visual Studio в Windows. Информацию о Visual Studio для Mac см. в статье Выбор блока.
Новая возможность в Visual Studio 2017 версии 15.8
Используйте выбор нескольких точек вставки, чтобы внести одинаковые изменения в несколько мест одновременно. Например, вы можете вставить одинаковый текст или изменить существующий текст в нескольких местах одновременно.
В Visual Studio 2022 мы улучшили возможности копирования и вставки с использованием нескольких курсоров. В прошлом при установке нескольких курсоров и копировании в них нескольких строк у каждого курсора происходила вставка всего содержимого буфера обмена. Теперь же, если скопировать и вставить определенное число строк ровно для такого же числа курсоров, каждая строка будет копироваться под соответствующий ей курсор отдельно.
Для выделения с помощью нескольких курсоров нажмите клавиши ALT+SHIFT+щелчок мышью или клавиши ALT+SHIFT+ . , а затем CTRL+SHIFT+клавиша со стрелкой, чтобы расширить выделенные фрагменты. После этого нажмите клавиши CTRL+C, чтобы скопировать текст из нескольких фрагментов. Нажмите ALT+SHIFT+щелчок мышью, чтобы создать несколько точек вставки в каждой строке, где вы хотите их установить. Наконец, нажмите CTRL+V, чтобы вставить каждую из строк под собственный курсор.
Кроме того, вы можете использовать клавиши ALT+SHIFT+СТРЕЛКА ВВЕРХ (или СТРЕЛКА ВНИЗ) либо ALT+SHIFT+перетаскивание мышью для выделения фрагментов с применением множества курсоров. Ранее эти действия создавали прямоугольный блок выделения. Теперь выделенный блок преобразуется в строки с несколькими курсорами. Этот метод проще и быстрее, чем вставлять отдельные курсоры, точно щелкая мышью в разных местах.
Если же при расширении фрагмента с несколькими курсорами с помощью ALT+SHIFT+клавиша со стрелкой и ALT+SHIFT+перетаскивание мышью вы хотите оставить выделение блоками, перейдите в раздел Сервис > Параметры > Текстовый редактор > Дополнительно и выберите Использовать выделение блоками.
Команды
Следующие сочетания клавиш предназначены для действий, относящихся к выбору нескольких точек вставки.
Клавиша | Действие | Команда |
---|---|---|
ALT+SHIFT+ . | Использование нескольких точек вставки | Edit.InsertNextMatchingCaret |
CTRL+SHIFT+клавиша со стрелкой | Расширение выделенных фрагментов | Edit.SizeControlUp, Edit.SizeControlDown, Edit.SizeControlRight, Edit.SizeControlLeft |
ALT+SHIFT+клавиша со стрелкой вверх (или клавиша со стрелкой вниз) | Выбор нескольких точек вставки | Edit.LineUpExtendColumn, Edit.LineDownExtendColumn |
Также можно включить использование нескольких курсоров из строки меню, открыв вкладку Правка > Несколько курсоров и выбрав желаемое действие.
На следующем снимке экрана -0000 выбран в трех местах. Если пользователь нажмет Удалить, все три фрагмента будут удалены:
Чтобы выбрать несколько точек вставки, щелкните фрагмент текста или выберите его любым способом, а затем выберите текст в каждом дополнительном расположении, нажав CTRL+ALT. Можно также автоматически добавить совпадающий текст в качестве дополнительного выделения или выбрать поле текста для внесения одинаковых правок в каждой строке.
Если вы выбрали ALT как клавишу-модификатор для команды "Перейти к определению" по щелчку мыши в меню Сервис > Параметры > Текстовый редактор > Общие, функция выбора нескольких точек вставки недоступна. Дополнительные сведения см. в диалоговом окне "Параметры": "Текстовый редактор" />
"Общие".
Команды
Используйте следующие клавиши и действия для выбора нескольких точек вставки:
Клавиша | Действие |
---|---|
CTRL+ALT + щелчок | Добавить дополнительную точку вставки |
CTRL+ALT + двойной щелчок | Добавить дополнительное выделенное слово |
CTRL+ALT + щелчок + перетаскивание | Добавить дополнительный выделенный фрагмент |
SHIFT+ALT+ . | Добавить следующий совпадающий текст как выделенный фрагмент |
SHIFT+ALT+ ; | Выделить все совпадающие фрагменты текста |
SHIFT+ALT+ , | Удалить последний выделенный фрагмент |
SHIFT+ALT+ / | Пропустить следующий совпадающий фрагмент |
ALT + щелчок | Добавить выделенное поле |
ESC или щелчок | Отменить выбор всех элементов |
Некоторые команды также доступны в меню Изменить в разделе Несколько точек вставки:
Существует три основных способа вставки текста в документы Microsoft Office Word:
вставка текста в диапазон;
замена текста в диапазоне на новый текст;
использование метода TypeText объекта Selection для вставки текста в позиции курсора или выделения.
Вы также можете вставить текст в элементы управления содержимым и закладки. Дополнительные сведения см. в разделе элементы управления содержимым и элемент управления Bookmark.
Применимо к: Сведения в этом разделе относятся к - проектам уровня документа и добавлению VSTO - в проектах для Word. Дополнительные сведения см. в разделе доступность функций по типам приложений Office и проектов.
Интересуетесь разработкой решений, расширяющих возможности Office на нескольких платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office имеют небольшой объем по сравнению с надстройками и решениями VSTO, и их можно создавать с помощью практически любой технологии веб-программирования, такой как HTML5, JavaScript, CSS3 и XML.
Вставить текст в диапазон
Используйте свойство Text объекта Range для вставки текста в документ.
Вставка текста в диапазон
Укажите диапазон в начале документа и вставьте текст New Text.
Следующий пример кода можно использовать в настройке на уровне документа.
Следующий пример кода можно использовать в надстройке VSTO. В этом примере кода используется активный документ.
Выберите объект Range , который был расширен от одного символа до длины вставленного текста.
Замена текста в диапазоне
Если указанный диапазон содержит текст, весь текст в диапазоне заменяется на вставленный текст.
Замена текста в диапазоне
Создайте объект Range , состоящий из первых 12 символов в документе.
Следующий пример кода можно использовать в настройке на уровне документа.
Следующий пример кода можно использовать в надстройке VSTO. В этом примере кода используется активный документ.
Замените эти символы строкой New Text.
Вставка текста с помощью TypeText
Метод TypeText вставляет текст в выделение. TypeText ведет себя по-разному в зависимости от параметров, заданных на компьютере пользователя. Код в следующей процедуре объявляет объектную переменную Selection , а также отключает параметр Overtype , если он включен. Если параметр Overtype включен, любой текст рядом с курсором будет перезаписан.
Вставка текста с помощью метода TypeText
Объявите переменную объекта Selection.
Отключите параметр Overtype , если он включен.
Проверьте, находится ли текущее выделение у точки вставки.
Если это так, код вставляет предложение с помощью TypeText, а затем знак абзаца с помощью метода TypeParagraph .
Код в блоке ElseIf проверяет, является ли выделение обычным блоком выделения. Если это так, другой блок If проверяет, включен ли параметр ReplaceSelection . Если это так, код использует метод Collapse выделения, чтобы свернуть его до точки вставки в начале выделенного блока текста. Вставьте текст и знак абзаца.
Если выделение не является точкой вставки или блоком выделенного текста, код в блоке Else не выполняет никаких действий.
Можно также использовать TypeBackspace метод Selection объекта, который имитирует функциональность клавиши Backspace на клавиатуре. Но когда дело доходит до вставки и изменения текста, объект Range предоставляет больше возможностей для управления.
В следующем примере показан полный код. Чтобы использовать этот пример, запустите код из класса ThisDocument или ThisAddIn в своем проекте.
Как сделать чтобы замена текста в WORD производилась по всему документу
Сделал программу для выгрузки текста в шаблон Word с переменными. Как сделать чтобы все переменные.
Нахождение разницы и замена в List
Доброго времени суток, помогите пожалуйста разобраться, есть два списка List1 и List2. List2.
Замена таблиц в Word
Добрый день! Имеется несколько(от 5-8 и более) *.doc и/или *.docx файлов,с таблицами. Несколько.
Решение
Проблема в том, что ты работаешь через Selection . При этом после первой замены у тебя выделен заменённый текст. Поэтому выделение нужно снимать:
IlnDil21, selection слетает (если не указан паттерн множественного поиска), нужно либо использовать Replace:=wdReplaceAll , либо запоминать range у selection и восстанавливать его потом, либо сразу искать в range, т.е. app.Selection.Range.Find.Execute (FindText: . ReplaceWith: . )
Спасибо большое, действительно помогло! Если не сложно, помогите еще в одном вопросе: Открываю один документ, копирую его содержимое. Открываю второй,вызываю Paste(), но ничего не вставляет.
Я еще совсем новичок, а с word'ом в голову вчера вечером взбрело посидеть. Может есть что почитать по этому поводу? на msdn совсем сложно для понимания(
IlnDil21, просто сохрани первый документ под нужным именем и потом открывай. Не стоит использовать буфер обмена
Спасибо еще раз за ответ, всё понял!
Но во мне сидит любопытство, почему с Copy() и Paste() ничего не срослось
потому что ты копируешь и вставляешь в один и тот же Range. Надо было doc1.Range.Paste(). Но лучше так не делать.
Замена ключевых слов в word
Нужно сделать подобие отчета, нашла здесь пример с кодом, получилось так: private readonly.
Автоматическая замена кавычек по логике Word
Не знаю, насколько избита тема, но по данному вопросу ничего толком не нашел в инете. Предлагаю.
Читайте также: