Создание кнопки со своим VBA кодом

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

JuRMaN
Сообщения: 13
Зарегистрирован: 05 фев 2010, 18:40

Добрый вечер.
Ниже представлен код, который копирует в буфер выделенный текст, затем сохраняет его в новом документе. Хочу чтобы это была кнопка на панели. Как это реализовать?

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" - кликаешь на нём л. кн. мыши, удерживаешь её и тащишь на Панель инструментов.
JuRMaN
Сообщения: 13
Зарегистрирован: 05 фев 2010, 18:40

Нашел способ, как добавить кнопку с макросом. Необходимо выполнить следующее ДРУГИЕ КОМАНДЫ - НАСТРОЙКА - МАКРОСЫ выбрать необходимы макрос и добавить в соответствующую панель инструментов. Там же можно поменять Имя Макроса, если это необходимо.

Возникла другая задача:
Имеется файл (doc) с текстом разбитым на Заголовки:
Заголовок 1
...
Заголовок 2
...
Заголовок 1
...
Заголовок 1
...

Необходим макрос который создал бы 4 файла (как в примере) с текстом принадлежащем каждому Заголовку. Т.е. нашел заголовок N и пошел дальше до N+1, как только нашел N+1 необходимо скопировать все что было до N+1 включая Заголовок N.
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

JuRMaN
пока есть следующая идея - Вид - Структура.
Можно попробовать использовать Правка - Найти. Сначала всё сворачиваем, чтобы были видны только Заголовки 1 уровня, затем находим текст, оформленный стилем Заголовок 1, выделяем его, вырезаем и вставляем в другой документ. Вот только я слаб по вставке в другие документы.
JuRMaN
Сообщения: 13
Зарегистрирован: 05 фев 2010, 18:40

Вставка в другой файл описана была в самом первом сообщении:
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
Вот так копируем каждый Заголовок.

Код: Выделить всё

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
JuRMaN
Сообщения: 13
Зарегистрирован: 05 фев 2010, 18:40

Busine2009
У меня создал файлы, только в каждом из них был сохранен этот самый код, а не текст.
Какой литературой пользуешься? Читаю VBA для Чайников, не очень нравиться стиль изложения.
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

JuRMaN
Поставь курсор на Заголовок - Формат - Стили и форматирование - Найди Заголовок 1 - примени его к заголовку. Повтори для всех заголовков. Затем примени макрос.
В основном информацию беру в интернете, очень много узнал на форумах - если бы не форумы, то наверное, так ничего бы и не знал. А так у меня 2 книги - для чайников и ещё какая-то, но пользуюсь ими очень редко.
Хотя нет, сейчас подумал, у тебя что-то другое.

Забыл скопировать, я код проверял, но у меня видимо в буфере находилось то, что нужно.

Код: Выделить всё

        Selection.EndKey Extend:=True
        Selection.Copy
JuRMaN
Сообщения: 13
Зарегистрирован: 05 фев 2010, 18:40

Busine2009

Всё получилось, только у последнего Заголовка копируется сам Заголовок без текста. И вопрос, как сделать, так чтобы он у меня не спрашивал имя файла, а сохранял по указанному пути, с теми именами как посчитает нужным?
Ответить