Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выделение и копирование в новый документ в диапазоне страниц - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Выделение и копирование в новый документ в диапазоне страниц
misharin Дата: Четверг, 05.11.2015, 13:48 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте!

Можно ли как нибудь быстрым способом (может через макросы) выделить текст в диапазоне страниц и скопировать в отдельный файл word?
Нужно для разбивки одного документа (более 700 стр.) на два документа.
 
Ответить
СообщениеЗдравствуйте!

Можно ли как нибудь быстрым способом (может через макросы) выделить текст в диапазоне страниц и скопировать в отдельный файл word?
Нужно для разбивки одного документа (более 700 стр.) на два документа.

Автор - misharin
Дата добавления - 05.11.2015 в 13:48
Gustav Дата: Четверг, 05.11.2015, 19:12 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Я не большой VBA-специалист по Word, но у нас же есть Большой Всемирный Разум, а задача показалась полезной. Точнее, та ее часть, где надо выделить несколько подряд идущих страниц. Когда их выделили, дальше уже что-то сделать с ними - дело следующее и имхо не такое заковыристое, как задача выделения страниц.

Стал гуглить. Первая ссылка - http://programmersforum.ru/showthread.php?t=64307 Запустить приведенный там код мне не удалось. Я не запускал буквально тот код, а сделал свой - так сказать, "по мотивам". Вот он:
Почему не работает - пока не понимаю. Т.е. отрабатывает без ошибок, но нужного не делает. Если кто-то увидит причину - с интересом послушаю.

Вторая ссылка - http://www.extendoffice.com/documen....es.html . Код оттуда, слава Богу, поехал как надо и чётко выделил страницы с 4-й по 14-ю:
[vba]
Код
Sub selectpages()
    Dim rgePages As Range
     
    Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=4
    Set rgePages = Selection.Range
     
    Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=14
    rgePages.End = Selection.Bookmarks("\Page").Range.End
     
    rgePages.Select
End Sub
[/vba]
По ходу узнал, что в Word есть, оказывается, предопределенные закладки типа упомянутой выше Bookmarks("\Page"). Подробнее и про другие можно почитать здесь: https://msdn.microsoft.com/en-us/library/office/ff836079.aspx

Вот такой будет мой вклад в эту задачу в виде этого небольшого дайджеста :)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеЯ не большой VBA-специалист по Word, но у нас же есть Большой Всемирный Разум, а задача показалась полезной. Точнее, та ее часть, где надо выделить несколько подряд идущих страниц. Когда их выделили, дальше уже что-то сделать с ними - дело следующее и имхо не такое заковыристое, как задача выделения страниц.

Стал гуглить. Первая ссылка - http://programmersforum.ru/showthread.php?t=64307 Запустить приведенный там код мне не удалось. Я не запускал буквально тот код, а сделал свой - так сказать, "по мотивам". Вот он:
Почему не работает - пока не понимаю. Т.е. отрабатывает без ошибок, но нужного не делает. Если кто-то увидит причину - с интересом послушаю.

Вторая ссылка - http://www.extendoffice.com/documen....es.html . Код оттуда, слава Богу, поехал как надо и чётко выделил страницы с 4-й по 14-ю:
[vba]
Код
Sub selectpages()
    Dim rgePages As Range
     
    Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=4
    Set rgePages = Selection.Range
     
    Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=14
    rgePages.End = Selection.Bookmarks("\Page").Range.End
     
    rgePages.Select
End Sub
[/vba]
По ходу узнал, что в Word есть, оказывается, предопределенные закладки типа упомянутой выше Bookmarks("\Page"). Подробнее и про другие можно почитать здесь: https://msdn.microsoft.com/en-us/library/office/ff836079.aspx

Вот такой будет мой вклад в эту задачу в виде этого небольшого дайджеста :)

Автор - Gustav
Дата добавления - 05.11.2015 в 19:12
RAN Дата: Четверг, 05.11.2015, 20:17 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Почему не работает - пока не понимаю.

Аналогично.
Вполне себе работает

[vba]
Код
Sub working()
    Dim oStartPage As Range
    Dim oEndPage As Range
    'Начало первой страницы для выделения
    Set oStartPage = ActiveDocument.Range.GoTo(wdGoToPage, wdGoToAbsolute, 2)    'со страницы 4
    'Конец последней страницы для выделения
    Set oEndPage = ActiveDocument.Range.GoTo(wdGoToPage, wdGoToAbsolute, 4)    'по страницу 14
    'Выделяем указанный диапазон документа
    ActiveDocument.Range(oStartPage.Start, oEndPage.End).Select
    Selection.Copy
    Selection.EndKey Unit:=wdStory
    Selection.Paste
End Sub
[/vba]

PS И так тоже работает

[vba]
Код
Sub working_add()
    Dim oStartPage As Range
    Dim oEndPage As Range
    Dim addD As Document
    'Начало первой страницы для выделения
    Set oStartPage = ActiveDocument.Range.GoTo(wdGoToPage, wdGoToAbsolute, 2)    'со страницы 4
    'Конец последней страницы для выделения
    Set oEndPage = ActiveDocument.Range.GoTo(wdGoToPage, wdGoToAbsolute, 4)    'по страницу 14
    'Выделяем указанный диапазон документа
    ActiveDocument.Range(oStartPage.Start, oEndPage.End).Select
    Selection.Copy
    Set addD = Documents.Add
    Selection.Paste
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Четверг, 05.11.2015, 20:23
 
Ответить
Сообщение
Почему не работает - пока не понимаю.

Аналогично.
Вполне себе работает

[vba]
Код
Sub working()
    Dim oStartPage As Range
    Dim oEndPage As Range
    'Начало первой страницы для выделения
    Set oStartPage = ActiveDocument.Range.GoTo(wdGoToPage, wdGoToAbsolute, 2)    'со страницы 4
    'Конец последней страницы для выделения
    Set oEndPage = ActiveDocument.Range.GoTo(wdGoToPage, wdGoToAbsolute, 4)    'по страницу 14
    'Выделяем указанный диапазон документа
    ActiveDocument.Range(oStartPage.Start, oEndPage.End).Select
    Selection.Copy
    Selection.EndKey Unit:=wdStory
    Selection.Paste
End Sub
[/vba]

PS И так тоже работает

[vba]
Код
Sub working_add()
    Dim oStartPage As Range
    Dim oEndPage As Range
    Dim addD As Document
    'Начало первой страницы для выделения
    Set oStartPage = ActiveDocument.Range.GoTo(wdGoToPage, wdGoToAbsolute, 2)    'со страницы 4
    'Конец последней страницы для выделения
    Set oEndPage = ActiveDocument.Range.GoTo(wdGoToPage, wdGoToAbsolute, 4)    'по страницу 14
    'Выделяем указанный диапазон документа
    ActiveDocument.Range(oStartPage.Start, oEndPage.End).Select
    Selection.Copy
    Set addD = Documents.Add
    Selection.Paste
End Sub
[/vba]

Автор - RAN
Дата добавления - 05.11.2015 в 20:17
Gustav Дата: Пятница, 06.11.2015, 16:13 | Сообщение № 4
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Вполне себе работает

В общем, докладываю…

Каково же было мое удивление, когда я попытался на работе запустить первый ("не работающий") макрос на следующий день - макрос работал как надо!!

Не веря в барабашку и в таракана, заползшего между контактами, я попытался воспроизвести ситуацию с самого начала. Для этого я скопировал файл в другую папку и стал открывать. Поскольку местоположение на диске стало новым, а файл был когда-то мне прислан по почте, то посыпались жёлтые сообщения системы безопасности:

Первое. Желтая полоса "ЗАЩИЩЕННЫЙ ПРОСМОТР Будьте осторожны: файлы из Интернета могут содержать вирусы. Если вам не нужно изменять этот документ, лучше работать с ним в режиме защищенного просмотра." и кнопка "Разрешить редактирование". Нажал кнопку.

Второе. Желтая полоса "ПРЕДУПРЕЖДЕНИЕ СИСТЕМЫ БЕЗОПАСНОСТИ Запуск макросов отключен." и кнопка "Включить содержимое". Нажал кнопку.

Запустил свой макрос not_working. Выделилась только 4-я страница, что плохо и неправильно.

Закрыл файл без сохранения и открыл снова. На этот раз жёлтых полос предупреждений не было.

Запустил макрос not_working. Выделились, как надо, страницы с 4-й по 13-ю (именно 13-ю, а не 14-ю, так как курсор конца выделения находится в начале страницы 14 и чтобы выделить страницы с 4-ю по 14-ю, то для конечного диапазона надо ставить значение 15, т.е. на единицу больше номера последней страницы выделения - это уже мой небольшой ляп).

Внёс в файл небольшое изменение, сохранил его, закрыл и скопировал в еще одну новую созданную папку.

Открыл файл в этой новой папке. И всё повторилось с начала - и жёлтые предупреждения, и выделение только 4-й страницы при запусках макроса во время первого открытия файла. После закрытия и открытия всё опять поехало нормально.

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

Плюс к этому у нас на работе есть такое навязанное "счастье" как Folder Redirection (кто не знает - погуглите), которое может влиять на ситуацию не самым предсказуемым образом. Например, раньше никогда бы не подумал, что при отключении от сети нельзя будет ни открыть файл Excel или Word, ни сохранить уже редактируемый. Это интуитивно понятно в случае удаленного рабочего стола, который становится недоступным, но почему при этом и локальные файлы попадают под эту гребенку - за гранью моего понимания…

Всё. Устал исследовать. Узелок на память завязал, проблему приподнял - и хорошо! :)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Вполне себе работает

В общем, докладываю…

Каково же было мое удивление, когда я попытался на работе запустить первый ("не работающий") макрос на следующий день - макрос работал как надо!!

Не веря в барабашку и в таракана, заползшего между контактами, я попытался воспроизвести ситуацию с самого начала. Для этого я скопировал файл в другую папку и стал открывать. Поскольку местоположение на диске стало новым, а файл был когда-то мне прислан по почте, то посыпались жёлтые сообщения системы безопасности:

Первое. Желтая полоса "ЗАЩИЩЕННЫЙ ПРОСМОТР Будьте осторожны: файлы из Интернета могут содержать вирусы. Если вам не нужно изменять этот документ, лучше работать с ним в режиме защищенного просмотра." и кнопка "Разрешить редактирование". Нажал кнопку.

Второе. Желтая полоса "ПРЕДУПРЕЖДЕНИЕ СИСТЕМЫ БЕЗОПАСНОСТИ Запуск макросов отключен." и кнопка "Включить содержимое". Нажал кнопку.

Запустил свой макрос not_working. Выделилась только 4-я страница, что плохо и неправильно.

Закрыл файл без сохранения и открыл снова. На этот раз жёлтых полос предупреждений не было.

Запустил макрос not_working. Выделились, как надо, страницы с 4-й по 13-ю (именно 13-ю, а не 14-ю, так как курсор конца выделения находится в начале страницы 14 и чтобы выделить страницы с 4-ю по 14-ю, то для конечного диапазона надо ставить значение 15, т.е. на единицу больше номера последней страницы выделения - это уже мой небольшой ляп).

Внёс в файл небольшое изменение, сохранил его, закрыл и скопировал в еще одну новую созданную папку.

Открыл файл в этой новой папке. И всё повторилось с начала - и жёлтые предупреждения, и выделение только 4-й страницы при запусках макроса во время первого открытия файла. После закрытия и открытия всё опять поехало нормально.

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

Плюс к этому у нас на работе есть такое навязанное "счастье" как Folder Redirection (кто не знает - погуглите), которое может влиять на ситуацию не самым предсказуемым образом. Например, раньше никогда бы не подумал, что при отключении от сети нельзя будет ни открыть файл Excel или Word, ни сохранить уже редактируемый. Это интуитивно понятно в случае удаленного рабочего стола, который становится недоступным, но почему при этом и локальные файлы попадают под эту гребенку - за гранью моего понимания…

Всё. Устал исследовать. Узелок на память завязал, проблему приподнял - и хорошо! :)

Автор - Gustav
Дата добавления - 06.11.2015 в 16:13
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!