Создание кнопки со своим VBA кодом
Модератор: Naeel Maqsudov
Добрый вечер.
Ниже представлен код, который копирует в буфер выделенный текст, затем сохраняет его в новом документе. Хочу чтобы это была кнопка на панели. Как это реализовать?
Public Sub CopyBlockToFile()
Selection.Range.Copy
Documents.Add
Selection.Range.Paste
Dialogs(wdDialogFileSaveAs).Show
ActiveDocument.Close
End Sub
Пробовал этот код целиком записать в
Private Sub кнопка_Click()
...
End Sub
Не получилось.
Ниже представлен код, который копирует в буфер выделенный текст, затем сохраняет его в новом документе. Хочу чтобы это была кнопка на панели. Как это реализовать?
Public Sub CopyBlockToFile()
Selection.Range.Copy
Documents.Add
Selection.Range.Paste
Dialogs(wdDialogFileSaveAs).Show
ActiveDocument.Close
End Sub
Пробовал этот код целиком записать в
Private Sub кнопка_Click()
...
End Sub
Не получилось.
- Busine2009
- Сообщения: 322
- Зарегистрирован: 18 июл 2009, 15:34
- Контактная информация:
JuRMaN
Сервис - Настройка - Команды - Категории: "Макросы" - Команды: - ищешь свой макрос "CopyBlockToFile" - кликаешь на нём л. кн. мыши, удерживаешь её и тащишь на Панель инструментов.
Сервис - Настройка - Команды - Категории: "Макросы" - Команды: - ищешь свой макрос "CopyBlockToFile" - кликаешь на нём л. кн. мыши, удерживаешь её и тащишь на Панель инструментов.
Нашел способ, как добавить кнопку с макросом. Необходимо выполнить следующее ДРУГИЕ КОМАНДЫ - НАСТРОЙКА - МАКРОСЫ выбрать необходимы макрос и добавить в соответствующую панель инструментов. Там же можно поменять Имя Макроса, если это необходимо.
Возникла другая задача:
Имеется файл (doc) с текстом разбитым на Заголовки:
Заголовок 1
...
Заголовок 2
...
Заголовок 1
...
Заголовок 1
...
Необходим макрос который создал бы 4 файла (как в примере) с текстом принадлежащем каждому Заголовку. Т.е. нашел заголовок N и пошел дальше до N+1, как только нашел N+1 необходимо скопировать все что было до N+1 включая Заголовок N.
Возникла другая задача:
Имеется файл (doc) с текстом разбитым на Заголовки:
Заголовок 1
...
Заголовок 2
...
Заголовок 1
...
Заголовок 1
...
Необходим макрос который создал бы 4 файла (как в примере) с текстом принадлежащем каждому Заголовку. Т.е. нашел заголовок N и пошел дальше до N+1, как только нашел N+1 необходимо скопировать все что было до N+1 включая Заголовок N.
- Busine2009
- Сообщения: 322
- Зарегистрирован: 18 июл 2009, 15:34
- Контактная информация:
JuRMaN
пока есть следующая идея - Вид - Структура.
Можно попробовать использовать Правка - Найти. Сначала всё сворачиваем, чтобы были видны только Заголовки 1 уровня, затем находим текст, оформленный стилем Заголовок 1, выделяем его, вырезаем и вставляем в другой документ. Вот только я слаб по вставке в другие документы.
пока есть следующая идея - Вид - Структура.
Можно попробовать использовать Правка - Найти. Сначала всё сворачиваем, чтобы были видны только Заголовки 1 уровня, затем находим текст, оформленный стилем Заголовок 1, выделяем его, вырезаем и вставляем в другой документ. Вот только я слаб по вставке в другие документы.
Вставка в другой файл описана была в самом первом сообщении:
Documents.Add - создаем новый документ
Selection.Range.Paste - вставляем все что в буфере
Dialogs(wdDialogFileSaveAs).Show
ActiveDocument.Close - закрываем документ
Я вот сейчас думаю как скопировать, после нахождения Заголовок1
Selection.Find.ClearFormatting - очистка формы поиска
Selection.Find.Style = ActiveDocument.Styles("Заголовок 1") - поиск Заголовка 1
дальше по идее надо найти следующий Заголовок N и все что до него скопировать в буфер
пока не знаю, что делать
Documents.Add - создаем новый документ
Selection.Range.Paste - вставляем все что в буфере
Dialogs(wdDialogFileSaveAs).Show
ActiveDocument.Close - закрываем документ
Я вот сейчас думаю как скопировать, после нахождения Заголовок1
Selection.Find.ClearFormatting - очистка формы поиска
Selection.Find.Style = ActiveDocument.Styles("Заголовок 1") - поиск Заголовка 1
дальше по идее надо найти следующий Заголовок N и все что до него скопировать в буфер
пока не знаю, что делать
- Busine2009
- Сообщения: 322
- Зарегистрирован: 18 июл 2009, 15:34
- Контактная информация:
JuRMaN
Вот так копируем каждый Заголовок.
Я просто ни разу ещё не создавал документы - первый раз сейчас сижу читаю, как это делать.
Смысл в чём: если найден Заголовок 1, то надо создать новый документ, поместить в него содержимое буфера обмена и закрыть с сохранением.
Вот так копируем каждый Заголовок.
Код: Выделить всё
Sub HeadlinesCopyToTheDifferentFiles()
With ActiveDocument.Range.Find
.Style = ActiveDocument.Styles("Заголовок 1")
While .Execute
.Parent.Select
Selection.Copy
Wend
End With
End Sub
Смысл в чём: если найден Заголовок 1, то надо создать новый документ, поместить в него содержимое буфера обмена и закрыть с сохранением.
- Busine2009
- Сообщения: 322
- Зарегистрирован: 18 июл 2009, 15:34
- Контактная информация:
JuRMaN
Код: Выделить всё
Sub HeadlinesCopyToTheDifferentFiles()
ActiveWindow.ActivePane.View.Type = wdMasterView
Selection.WholeStory
ActiveWindow.ActivePane.View.CollapseOutline Range:=Selection.Range
With ActiveDocument.Range.Find
.Style = ActiveDocument.Styles("Заголовок 1")
While .Execute
.Parent.Select
Selection.MoveLeft
Selection.EndKey Extend:=True
Documents.Add
Selection.Paste
Dialogs(wdDialogFileSaveAs).Show
ActiveDocument.Close
Wend
End With
End Sub
Busine2009
У меня создал файлы, только в каждом из них был сохранен этот самый код, а не текст.
Какой литературой пользуешься? Читаю VBA для Чайников, не очень нравиться стиль изложения.
У меня создал файлы, только в каждом из них был сохранен этот самый код, а не текст.
Какой литературой пользуешься? Читаю VBA для Чайников, не очень нравиться стиль изложения.
- Busine2009
- Сообщения: 322
- Зарегистрирован: 18 июл 2009, 15:34
- Контактная информация:
JuRMaN
Поставь курсор на Заголовок - Формат - Стили и форматирование - Найди Заголовок 1 - примени его к заголовку. Повтори для всех заголовков. Затем примени макрос.
В основном информацию беру в интернете, очень много узнал на форумах - если бы не форумы, то наверное, так ничего бы и не знал. А так у меня 2 книги - для чайников и ещё какая-то, но пользуюсь ими очень редко.
Хотя нет, сейчас подумал, у тебя что-то другое.
Забыл скопировать, я код проверял, но у меня видимо в буфере находилось то, что нужно.
Поставь курсор на Заголовок - Формат - Стили и форматирование - Найди Заголовок 1 - примени его к заголовку. Повтори для всех заголовков. Затем примени макрос.
В основном информацию беру в интернете, очень много узнал на форумах - если бы не форумы, то наверное, так ничего бы и не знал. А так у меня 2 книги - для чайников и ещё какая-то, но пользуюсь ими очень редко.
Хотя нет, сейчас подумал, у тебя что-то другое.
Забыл скопировать, я код проверял, но у меня видимо в буфере находилось то, что нужно.
Код: Выделить всё
Selection.EndKey Extend:=True
Selection.Copy
Busine2009
Всё получилось, только у последнего Заголовка копируется сам Заголовок без текста. И вопрос, как сделать, так чтобы он у меня не спрашивал имя файла, а сохранял по указанному пути, с теми именами как посчитает нужным?
Всё получилось, только у последнего Заголовка копируется сам Заголовок без текста. И вопрос, как сделать, так чтобы он у меня не спрашивал имя файла, а сохранял по указанному пути, с теми именами как посчитает нужным?