Word макросы скопировать текст

Вот так можно поместить содержимое определённых страниц из одного документа в другой (в данном случае помещается всё содержимое первой страницы одного документа в другой):

Visual Basic
1
2
3
4
5
6
Sub P2()
With ActiveDocument
    Documents(1).Range = .Range(Start:=.ActiveWindow.Panes(1).Pages(1).Breaks(1).Range.Start, _
        End:=.ActiveWindow.Panes(1).Pages(2).Breaks(1).Range.Start - 1)
End With
End Sub

Есть 2 вида разрывов страниц:

  1. вставленный вручную (Word 2003: ВставкаРазрыв…новую страницу или новую колонку);
  2. устанавливаемый программой Word (его видно между страницами в режиме просмотра документа Обычный режим).

Каждая страница в документе Word всегда имеет Разрыв страницы: если ручной не установлен, то есть естественный разрыв страницы, если ручной установлен, то ручной есть.
Этот Разрыв страницы в VBA всегда занимает положение в начале страницы (хотя визуально в программе Word разрыв страницы, естественно, находится в самом конце страницы).
Основываясь на том, что Разрыв страницы по подсчётам VBA всегда находится вначале страницы и имеет свойство Range, можно определить диапазон, находящийся на страницах.

ActiveWindow — чтобы понять, что это такое, нужно сделать следующее:

Word 2003

ОкноНовое. В результате на Панели задач Windows (в самом низу монитора) появится ещё одна кнопка документа: т.е. один и тот же документ может быть открыт несколько раз. Зачем это надо? Я этим никогда не пользовался за всё время работы с Word. Могу предположить, зачем это надо, — чтобы просматривать документ в разных местах одновременно: т.е. в одном окне можем смотреть начало документа, а в другом окне — конец документа и сравнивать что-то в них.

Panes — чтобы понять что такое Panes:

Word 2003

— вставьте сноску (ВставкаСсылкаСноска…Вставить). В результате в документ будет вставлена сноска. Далее: ВидОбычныйВидСноски. В результате внизу появилось что-то — это и есть Pane: т.е. в данной ситуации у нас два Pane: первый Pane — это собственно документ, а второй Pane — это что-то, связанное со сносками.
У документа всегда есть один Pane — это собственно сам документ. И этот Pane имеет порядковый номер всегда 1 (Panes(1)).

Итак строку кода:

Visual Basic
1
2
With ActiveDocument
     .ActiveWindow.Panes(1).Pages(1).Breaks(1).Range.Start

можно прочитать так:
Активный документ — Активное окно — первая Pane — первая страница — первый разрыв на странице (кроме разрыва страницы на странице может быть ещё разрыв раздела) — место в документе, занимаемое этим разрывом страницы (или порядковый номер символа, находящегося вначале страницы. Порядковый номер считается сначала документа) — Start — начало разрыва страницы (начало и конец у разрыва страницы равны).

Если ваши коллеги или знакомые пользуются какими-либо макросами, автоматизирующими часто повторяемые действия или решающими специфические задачи в документах Word, то имеет смысл взять на вооружение такой макрос и использовать его на своем компьютере для своих нужд. Но здесь возникает вопрос: как перенести этот макрос в свои документы (шаблоны)?

Первый способ – воспользоваться диалоговым окном Организатор и скопировать модуль с макросами из одного документа (шаблона) в другой документ, который затем будет передан пользователю.

Здесь следует отметить, что автоматически создаваемые макросы в редакторе Word записываются в стандартный модуль NewMacros глобального (общего) шаблона Normal.dot. Этот модуль может содержать большое количество макросов для самых различных манипуляций с текстом.

Чтобы воспользоваться этим способом выполните следующие действия.

  1. Откройте документ или шаблон документа, содержащий макрос, который необходимо перенести на другой компьютер (в пользовательский документ) или в другой шаблон.
  2. В меню Сервис выберите команду Шаблоны и надстройки. Откроется одноименное диалоговое окно. В этом окне нажмите кнопку Организатор. Откроется другое диалоговое окно:
  3. Диалоговое окно Организатор

  4. Перейдите на вкладку Макросы. Слева и справа на этой вкладке будут отображаться панели с содержащимися в шаблонах или документах модулями макросов.
  5. Убедитесь, что в одной из панелей отображаются все модули из источника – документа (шаблона), из которого осуществляется перенос. Соответственно в другой панели должен быть документ-получатель модуля. Наименования документов присутствуют над панелями. Если ваш документ (источник или получатель) не открыт ни в одной панели, то следует нажать кнопку Закрыть файл на одной из панелей, а затем нажать на изменившееся наименование этой кнопки — Открыть файл — и выбрать нужный документ.
  6. Выберите в панели соответствующего шаблона или документа нужный модуль (например, модуль NewMacros) и нажмите кнопку Копировать. Модуль будет скопирован в другой документ.

    После этого я рекомендую выбрать скопированный файл и нажать кнопку Переименовать, чтобы присвоить переданному модулю новое имя. Это делается для того, чтобы избежать замещение имеющегося в документах пользователя модуля с таким же именем. Ведь другой пользователь также мог создать для себя нужные макросы, которые по умолчанию сохраняются в модуле NewMacros.

  7. Закройте диалоговые окна и передайте этот документ другому пользователю.

Если вы не хотите передавать все макросы, содержащиеся в модуле NewMacros, а только некоторые из них, то имеет смысл создать отдельный модуль и уже в него включить необходимые для передачи макросы.

Чтобы воспользоваться этим способом, сначала следует открыть редактор Word с документом, содержащим ваши макросы, а затем открыть редактор Visual Basic с помощью сочетания клавиш «Alt»+«F11».

В открывшемся окне редактора кода макрокоманд будут отображаться несколько окон: Окно проектов (Project Explorer), Окно свойств (Properties Window) и, если доступно, то и окно кода:

Окна редактора Visual Basic

В окне проектов вы можете видеть различные модули, объединенные в группу Modules. Именно в этой группе в шаблоне Normal.dot и создается стандартный модуль NewMacros.

В окне свойств отображаются доступные для редактирования свойства модулей. Выделив в окне проектов нужный модуль и перейдя в окно свойств можно переименовать этот модуль, дважды щелкнув мышью на поле Name.

Чтобы создать новый модуль, в меню Insert выберите команду Module. В группе Modules будет создан новый модуль с типовым названием Module1, и откроется окно кода с мигающим курсором ввода.

Перейдите на окно свойств и дважды щелкните мышью по полю Name. Типовое наименование модуля выделиться и вы можете переименовать модуль.

Чтобы скопировать во вновь созданный модуль нужные макросы, просто скопируйте коды нужных макросов в буфер обмена и вставьте их в ваш модуль.

После этого можно закрыть окно редактора VB и повторить действия по переносу нужного модуля с макросами из одного документа в другой.

И третий способ переноса макросов в другие документы – экспорт и импорт модулей.

  1. Выберите нужный модуль для экспорта.
  2. В меню File выберите команду Export File. Откроется стандартное окно сохранения файла. Обратите внимание, что файл модуля будет иметь расширение bas.
  3. Укажите место на диске, где файл будет сохранен и сохраните его под каким-нибудь понятным именем.
  4. На другом компьютере откройте редактор Visual Basic и из меню File выберите команду Import File. Откроется одноименное диалоговое окно, в котором следует выбрать ваш сохраненный файл модуля и нажать кнопку Открыть.

В списке модулей шаблона (или документа) будет создан (воссоздан) новый модуль с содержащимися в нем необходимыми макросами.

Как сохранить макросы в Word 2016?

macros

Рассмотрим способы сохранения макросов в текстовом редакторе Word для дальнейшего использования или отправки другим пользователям.

Со временем у активных пользователей популярного текстового редактора Microsoft Office Word может собраться много макросов, которые не хотелось бы потерять после обновления, переустановки системы или других проблем с оборудованием или программным обеспечением.

Макросами часто нужно поделиться с коллегами по работе, знакомыми и тому подобное.

Все примеры показаны на версии Microsoft Office Word 2016.

Первый способ – это запись макросов в документ, который можно затем отсылать и использовать как шаблон.

Для сохранения макросов в шаблон нужна панель инструментов «Разработчик», которая по умолчанию отключена, поэтому в процессе работы ее нужно будет включить.

Для этого:

Открываем редактор Microsoft Office Word и создаем новый документ.

Нажимаем на «Файл», тогда открываем «Параметры».

macros

macros

Далее открываем «Настроить ленту» и ставим флажок на «Разработчик». Подтверждаем кнопкой «Ок».

macros

Теперь в нашей панели появится вкладка «Разработчик». Открываем ее и нажимаем на кнопку «Шаблон документа».

macros

Находим там кнопку «Организатор» и нажимаем на нее.

macros

Далее открываем вкладку «Макросы». С правой стороны видим список наших макросов. Их с помощью кнопки «Копировать» нужно перенести в левую сторону. После этого можно закрыть окно.

macros

Обратите внимание, что под текстом «Макросы и документы:» должно быть название нашего документа.

Теперь осталось сохранить наш документ с расширением *.docm. Данное расширение и будет вмещать наши добавленные макросы.

macros

Такой документ можно использовать как шаблон, открывая и работая с ним. Все макросы, содержащиеся в данном документе можно будет применять в процессе работы.

При открытии документа с расширением *.docm, Word спросит разрешения на включение их содержимого. Чтобы можно было использовать макросы, нужно данное разрешение предоставить, нажав на кнопку «Включить содержимое».

macros

Второй способ – сохранение файла модуля в окне визуального редактора Microsoft Visual Basic.

Открываем Microsoft Visual Basic с помощью сочетания клавиш Alt + F11 или открыв его с панели «Разработчик» (нужно нажать на кнопку Visual Basic).

В шаблоне Normal (обычно) находим папку Modules. Там можно видеть наши макросы.

Для удобства можно изменить имя. Для этого нужно выделить макрос (щелкнув на его имя левой клавишей мыши) и снизу в свойствах, напротив Name написать новое имя.

macros

Дальше нужно экспортировать макросы. Для этого выделяем мышью макросы, идем в «File → Export File» и указываем место для сохранения файла.

macros

Теперь данный файл можно импортировать на любой компьютер через команду «File → Import File», открыв Microsoft Visual Basic.

Создал несколько свих шаблонов документов MS Word. Каждый из них содержит макросы. Идея такая, что пользователи создают документы на основе этих шаблонов, а макросы обрабатывают документы нужным образом.

Все работает до тех пор пока созданный документ не передается куда-нибудь во вне. Т.к. шаблон хранится в локальной сети, то при открытии документа где-нибудь, где нет доступа к указанному шаблону, документ перестает содержать и макросы.

Можно ли автоматом макросы из шаблона встраивать и в создаваемый документ?

Ответы

Спасибо за ответ.

Возможно я неоднозначно описал проблему. Попробую конкретизировать: у меня есть шаблон Word с поддержкой макросов (Андрей.dot). Создаю документ на основе этого шаблона на своем компьютере («Новый_документ.doc») — макросы работают прекрасно, т.к. хранятся в шаблоне.

Теперь я передаю «Новый_документ.doc» на другой компьютер и вот тут макросы пропадают, т.к. «Новый_документ.doc» ссылается теперь уже на стандартный шаблон «Normal.dot». Ведь мой шаблон (Андрей.dot) стал недоступен.

Мой вопрос: можно ли макросы хранить не в шаблоне, а в создаваемом на его основе документе?

С уважением, Андрей.

  • Помечено в качестве ответа Vinokurov Yuriy Moderator 22 ноября 2011 г. 7:52

Все ответы

Добрый день.

Создал несколько свих шаблонов документов MS Word. Каждый из них содержит макросы. Идея такая, что пользователи создают документы на основе этих шаблонов, а макросы обрабатывают документы нужным образом.

Все работает до тех пор пока созданный документ не передается куда-нибудь во вне. Т.к. шаблон хранится в локальной сети, то при открытии документа где-нибудь, где нет доступа к указанному шаблону, документ перестает содержать и макросы.

Можно ли автоматом макросы из шаблона встраивать и в создаваемый документ?

С уважением,

Андрей

  • Изменено Жук MVP, Moderator 16 ноября 2011 г. 13:51

Спасибо за ответ.

Возможно я неоднозначно описал проблему. Попробую конкретизировать: у меня есть шаблон Word с поддержкой макросов (Андрей.dot). Создаю документ на основе этого шаблона на своем компьютере («Новый_документ.doc») — макросы работают прекрасно, т.к. хранятся в шаблоне.

Теперь я передаю «Новый_документ.doc» на другой компьютер и вот тут макросы пропадают, т.к. «Новый_документ.doc» ссылается теперь уже на стандартный шаблон «Normal.dot». Ведь мой шаблон (Андрей.dot) стал недоступен.

Мой вопрос: можно ли макросы хранить не в шаблоне, а в создаваемом на его основе документе?

Как перенести настройки Microsoft Word при переустановке Windows или переходе на другой компьютер

Юзабилити, функциональность и настраиваемость – основные преимущества текстового редактора Word от софтверного гиганта Microsoft. Чтобы сделать работу с документами максимально удобной, можно персонализировать ленту меню и панель быстрого доступа, создать свои шаблоны и коллекции стилей форматирования, сформировать свой словарь терминов и т.п. Однако при переустановке Windows или переходе на другой компьютер с частью нажитого добра придётся прощаться.

Столь сложный инструмент, как редактор Word, внутри интерфейса предусматривает лишь экспорт настроенной ленты меню и панели быстрого доступа. Благо, есть способы ручного переноса всех остальных данных. Рассмотрим эти способы для среды Windows.

Описываемые ниже инструкции подходят для Word 2010, 2013, 2016.

1. Лента меню и панель быстрого доступа

Экспорт ленты меню и размещающейся над или под ней панели с кнопками часто используемых функций — это, как упоминалось, единственное, что можно без лишних танцев с бубном извлечь, а затем внедрить в программу, когда та будет установлена уже в среде другой Windows. В меню «Файл» кликаем «Параметры».

Меню «Файл»

Если в новую среду необходимо перенести одну лишь панель быстрого доступа, в левой колонке выбираем её вкладку. А чтобы перенести и панель, и изменённую под свои предпочтения ленту меню, выбираем вкладку «Настроить ленту». Далее в любом из случаев жмём «Импорт-экспорт» и выбираем, соответственно, экспортирование настроек.

Параметры

Затем указываем путь создания файла с расширением «.exportedUI» . Этот файл храним на отличных от С дисках, помещаем на флешку, загружаем в «облако» или используем любой другой способ переноса данных на другой компьютер. В переустановленной системе или на новом устройстве для импорта настроек снова открываем параметры программы.

Параметры программы

И импортируем файл с расширением «.exportedUI» .

ExportedUI

Дальнейшие действия предполагают ручной перенос рабочих данных Word, потому текстовый редактор, соответственно, должен быть закрыт. Как добраться к этим данным? Проще всего клавишами Win + R вызвать команду «Выполнить» и ввести:

appdata

После нажатия Enter откроется каталог хранения настроек программ пользовательского профиля «AppData». В нём нам понадобится папка «Roaming», а в ней – подпапка «Microsoft». Все дальнейшие операции будут проводится именно здесь.

Проводник

2. Пользовательский словарь

Когда мы отдельные слова добавляем в словарь с помощью опции в контекстном меню редактора,

Пользовательский словарь

они, естественно, не пополняют словарный запас предустановок Word, а хранятся в отдельном файле Custom.dic . И чтобы на новой Windows при проверке правописания не отвлекаться на формирование своего словаря по новой, его можно перенести. Заходим в папку «UProof», копируем файл Custom.dic в надёжное место и храним его.

Файл Custom.dic

В новой среде компьютера открываем эту же папку и переносим сохранённый Custom.dic с заменой исходной редакции.

3. Параметры автозамены

Настроенные нами внутри интерфейса Word параметры автозамены хранятся в файлах с расширением «.acl» . Чтобы их перенести в новую Windows, в папке «Microsoft» открываем подпапку «Office» и копируем в подготовленное место все файлы с этим расширением.

Подпапка «Office»

В новой операционной системе, соответственно, возвращаем их назад с заменой исходных редакций.

4. Шаблоны

Настроенный шаблон по умолчанию (открывающийся как любой новый документ) со своей темой оформления, коллекцией стилей форматирования, макетом, колонтитулами, подложкой и прочими индивидуальными вещами также можно перенести в другую среду Windows. В папке «Microsoft» открываем подпапку «Templates» (в Word 2010 эта папка имеет русскоязычное название «Шаблоны») и делаем резервную копию хранящегося там файла Normal.dotm .

Normal.dotm

В новой среде этот файл возвращаем на место с заменой исходной редакции.

Word предусматривает работу и с другими настраиваемыми образцами документов – личными шаблонами. Их местом хранения по умолчанию в Word 2013 и 2016 значится системная папка «Документы». Следовательно, оттуда шаблоны необходимо переместить на время переустановки Windows, а затем вернуть назад. Или поступить по-другому: в самих настройках редактора прописать путь текущего расположения шаблонов.

Настройка сохранения документа

В Word 2010 любые отличные от Normal.dotm шаблоны – хоть перенесённые с других компьютеров, хоть сохранённые в процессе работы на текущем устройстве – можно сделать доступными для выбора внутри интерфейса редактора. Для этого их нужно поместить в подпапку «Шаблоны» внутри папки «Microsoft».

Папка «Microsoft»

Для их задействования при создании нового документа в интерфейсе Word 2010 выбираем «Мои шаблоны».

Sub Процедура1()
Dim Начало As Long, Конец As Long
Dim Источник As Word.Document, Назначение As Word.Document
Const ПутьДокумента As String = "C:Documents and SettingsПользовательРабочий столНазначение.doc"
Set Источник = ActiveDocument
With Источник.Content.Find
    .Text = "В С Т А Н О В И В:"
    .MatchPrefix = True
    .MatchSuffix = True
    If .Execute = True Then
        Начало = .Parent.End + 1
        With Источник.Content.Find
            .Text = "а.м."
            .MatchPrefix = True
            .MatchSuffix = True
            If .Execute = True Then
                Конец = .Parent.Start - 1
            Else
                MsgBox "Слова: а.м. нет в документе.", vbCritical
                Exit Sub
            End If
        End With
    Else
        MsgBox "Слова: В С Т А Н О В И В: нет в документе.", vbCritical
        Exit Sub
    End If
End With
Set Назначение = Documents.Open(FileName:=ПутьДокумента)
Назначение.Range(Start:=0, End:=0) = Источник.Range(Start:=Начало, End:=Конец)
End Sub

I’m trying to use VBA to extract sentences in one Word document and put it into another Word document.
So for example, if we need to find the title of the organization, we follow the algorithm:

Search for «Title»
Do (Take) each character after «Title» and (stop) until «Address»

Martijn Pieters's user avatar

asked Jun 7, 2013 at 23:59

Lisa Qing's user avatar

0

The following works but there may be a more efficient way of doing this:

Sub FindIt()
    Dim blnFound As Boolean
    Dim rng1 As Range
    Dim rng2 As Range
    Dim rngFound As Range
    Dim strTheText As String

    Application.ScreenUpdating = False
    Selection.HomeKey wdStory
    Selection.Find.Text = "Title"
    blnFound = Selection.Find.Execute
    If blnFound Then
        Selection.MoveRight wdWord
        Set rng1 = Selection.Range
        Selection.Find.Text = "Address"
        blnFound = Selection.Find.Execute
        If blnFound Then
            Set rng2 = Selection.Range
            Set rngFound = ActiveDocument.Range(rng1.Start, rng2.Start)
            strTheText = rngFound.Text
            MsgBox strTheText
        End If
    End If
    'move back to beginning
    Selection.HomeKey wdStory
    Application.ScreenUpdating = True
End Sub

You can switch between documents using Activate, preferably using object variables.

Microsoft MVP Jay Freedman kindly revised this for me to work without the Selection object, making it much neater.

Sub RevisedFindIt()
' Purpose: display the text between (but not including)
' the words "Title" and "Address" if they both appear.
    Dim rng1 As Range
    Dim rng2 As Range
    Dim strTheText As String

    Set rng1 = ActiveDocument.Range
    If rng1.Find.Execute(FindText:="Title") Then
        Set rng2 = ActiveDocument.Range(rng1.End, ActiveDocument.Range.End)
        If rng2.Find.Execute(FindText:="Address") Then
            strTheText = ActiveDocument.Range(rng1.End, rng2.Start).Text
            MsgBox strTheText
        End If
    End If
End Sub

The only remaining requirement is to get this text into the other document. Something like:

Documents(2).Range.Text = strTheText

answered Jun 8, 2013 at 0:20

Andy G's user avatar

Andy GAndy G

19.1k5 gold badges49 silver badges69 bronze badges

2

This code will write to external file:

Sub RevisedFindIt_savetofile2 () 
' Purpose: display the text between (but not including)
' the words "Title" and "Address" if they both appear.
'This file will search current document only, the data in open word document.
Dim rng1 As Range
Dim rng2 As Range
Dim strTheText As String
Dim DestFileNum As Long
Dim sDestFile As String

sDestFile = "C:test-folderf12.txt" 'Location of external file
DestFileNum = FreeFile()
'A valid file number in the range 1 to 511,
'inclusive. Use the FreeFile function to obtain the next available file number.

Open sDestFile For Output As DestFileNum 'This opens new file with name DestFileNum
Set rng1 = ActiveDocument.Range
If rng1.Find.Execute(FindText:="Title") Then
    Set rng2 = ActiveDocument.Range(rng1.End, ActiveDocument.Range.End)
    If rng2.Find.Execute(FindText:="Address") Then
        strTheText = ActiveDocument.Range(rng1.End, rng2.Start).Text
        MsgBox strTheText 'writes string to a message box
        Print #DestFileNum, strTheText 'Print # will write to external file with the text strTheText
    End If
End If
Close #DestFileNum 'Close the destination file
End Sub

answered May 10, 2016 at 13:20

equalizer's user avatar

equalizerequalizer

1442 silver badges10 bronze badges

Both Excel and Word have a Range object. Because you are in Excel VBA but are trying to reference the Word Range object you need to qualify the variable declaration so that Excel knows you are using a Word Range object.

Dim rng1 As Word.Range
Dim rng2 As Word.Range

Credit to ChipsLetten for spotting this

answered Jul 30, 2015 at 12:28

Swifty's user avatar

You could (preferably) use the name of the other document, rather than the index (2):

Documents("OtherName").Range.Text = strTheText

However, this will change the text for the entire document, so you need to navigate to where you wish to insert the text.

It is far better, if possible, that there are pre-existing Bookmarks in the document (or template) that you can refer to:

Documents("OtherName").Bookmarks("bkSome").Range.Text = strTheText

Good luck.

answered Jun 8, 2013 at 21:00

Andy G's user avatar

Andy GAndy G

19.1k5 gold badges49 silver badges69 bronze badges

Понравилась статья? Поделить с друзьями:
  • Word макросы не открывает файлы
  • Word макросы не найдены
  • Word макросы не запускаются
  • Word макросы выпадающий список
  • Word макросы в полях