Статьи из блога
Имя документа из текста закладки
Александр спрашивает:
Как сделать так, чтобы при сохранении созданного документа в качестве имени файла предлагалось содержимое одной из закладок.
Вся соль состоит в том, чтобы пользователь сохранял документ через стандартную команду «Сохранить», а не отдельной кнопкой, к которой прикручен макрос.
Предположим, что в тексте документа используется множество разных закладок, одна из которых носит имя "Закладка". Вот ее мы и возьмем в качестве имени файла (документа). Далее воспользуемся следующим макросом.
Если вы включите этот макрос в глобальный шаблон Normal.dot, то при сохранении любого документа, основанного на этом шаблоне, будет всегда выводится окно с сообщением. Используйте этот макрос только для других шаблонов, с которыми вы работаете для создания специфических документов, и в имени которых должен быть текст одной из закладок.
Sub FileSave() 'Сохранение документа с именем одной из закладок 'Помощь Graham Mayor Dim fName As String On Error Resume Next If Len(ActiveDocument.Path) = 0 Then fName = ActiveDocument.Bookmarks("Закладка").Range If Len(fName) = 0 Then MsgBox "Документ не содержит закладки." & vbCr & _ "Документ не может быть сохранен." Exit Sub End If ActiveDocument.SaveAs fName & ".doc" Else ActiveDocument.Save End If End Sub
Рубрика: Вопрос-Ответ, Макросы
Метки: FileSave | закладки | макросы
Просмотров: 17002
Подписаться на комментарии по RSS
Версия для печати
Метки: FileSave | закладки | макросы
Просмотров: 17002
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Абзац с цветным фоном
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Белый текст на синем фоне в Word 2007
- Быстрая смена ориентации страниц документа
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрый ввод текста с помощью команды =rand()
- Ввод повторяющихся фрагментов текста в Word 2007
- Ввод часто повторяющихся фрагментов текста
- Вертикальное выравнивание текста
- Возможно ли запретить копирование текста из документа Word?
- Вопрос о работе с графиками (диаграммами) в Word
- Вопросы и ответы о гиперссылках в редакторе Word
Комментариев: 21
Вроде бы самая близкая тема из всего что нашел...
Есть документ Word с произвольным количеством страниц, каждая страница содержит отдельную таблицу неизменного вида, которая повторяется от страницы к странице и отличается только содержимым.
Необходимо сохранить каждую страницу в виде отдельного документа Word, причем так, чтобы название для образуемых файлов бралось из определенного поля таблицы.
Буду очень благодарен за помощь.
В качестве примера: http://wordexpert.ru/page/kopirovanie-tablic-iz-odnogo-dokumenta-v-novyj
Если на странице только таблица, то пример Антона подойдет. А если есть еще текст на странице, то тут нужно хитрее, чтобы сохранить отдельную страницу, а не только таблицу.
Спасибо, попробовал работу данного макроса. Александр прав, к моей ситуации он не до конца подходит, т.к. при сохранении очень сильно изменяется исходный вид страницы, исчезают некоторые элементы, плюс не решается вопрос с присвоением нужного имени файла. Для наглядности проблемы скинул на обменник пример исходного документа. http://narod.ru/disk/7512141000/%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80.rar.html
В идеале - сохранение каждой страницы в исходном виде с присвоением в качестве имени "номера платежного поручения" (111, 112, 113, 114 и т.д.).
Игорь, попробуйте этот макрос. Сохраняет в папку с исходным файлом. Я очень надеюсь, что эти платежки были получены из программы, а не набраны вручную. Иначе, чем тогда объяснить выравнивание пробелами?
Платежки формируются программным путем.
Действие макроса оценить не смог, т.к. вылетела ошибка с указанием на строку Do While iPage <= oMainDoc.ComputeStatistics(2) 'wdStatisticPages
За желание помочь - спасибо!
Игорь, если бы макрос не работал, я бы его не выкладывал. Макрос проверен и не только на вашем документе. Проверьте, что у вас стоит после iPage. Должен стоять знак < «меньше». При публикации кода некоторые символы заменяются на их коды: знак меньше на <, знак амперсанда заменяется на &
Исправьте это и все будет работать. Или напишите мне, я вам вышлю этот макрос. Ссылка на моем имени
Большое человеческое спасибо! На самом деле при переносе кода символы отобразились неправильно. Теперь макрос работает. Однако заметил, что его действие в 2007 и 2003 ворде отличается. Word 2007 немного меняет исходное форматирование, а также похоже создает файл в новом несовместимом со старыми версиями формате (хотя расширение ставит .doc). Добавил строчку FileFormat:=wdFormatRTF, вроде бы помогло.
И еще: можно ли убрать вторую пустую страницу, которая создается в каждом новом файле?
Конечно, можно, но она появляется потому, что у вас стоит разрыв раздела со следующей страницы. Если его убрать, то немного изменяется положение нижней надписи. Попробуйте, может подойдет.
Нужно добавить в код сразу после строки вставки из буфера такую строку:
Измененный вид не совсем подходит, но сама идея с заменой выглядит правильной, по крайней мере вручную у меня получилось перенести на остальные страницы "непечатаемую" концовку последнего создаваемого документа (который изначально получается в правильном виде и без второй страницы).
Осталось узнать каким образом эти непечатаемые символы вставить в макрос.
Вы мне не поможете еще раз? Каким кодом в макросе можно обозначить эти символы и можно ли вообще? http://s42.radikal.ru/i098/0904/7c/81d1e2beff03.jpg
Это символы конца абзаца. ¶ — вот так он выглядит. Искать его можно по выражению ^p или ^0013. Но вы его не удалите с последней страницы, потому, что если стоит разрыв раздела со следующей страницы, то следующая страница будет всегда.
А почему не подходит? Границы страниц смещаются? тогда можно их сделать такими, как в исходном документе. После удаления разрыва страницы напишите:
Я отличий не нашел.
На вашем рисунке точки это пробелы. Пробел можно найте кодом ^0032. Найти несколько пробелов: ^0032{1;}
Теперь все работает так, как нужно. Огромное спасибо за неоценимую помощь! Побольше бы таких ресурсов как ваш.
Снова прошу вашей помощи.
Второй сервис пак позволяет сохранять файлы в формате pdf, но вот откорректировать макрос под это дело у меня не получилось.
oNewDoc.SaveAs oMainDoc.Path & Application.PathSeparator & sFileName & ".pdf", FileFormat:=wdFormatPDF
Добавление данной строки позволяет сохранить только первую страницу - дальше затык. Что нужно сделать не пойму.
И еще: макрос позволяет сохранять только документы с количеством страниц меньше 100. Если больше - не работает. Данное ограничение как то можно обойти? Заранее спасибо!
Игорь, могу предложить вместо сохранения в pdf печатать в pdf с помощью виртуального принтера.
Сторонние программы и плагины на работе запрещены, поэтому только встроенные возможности ворда. А по поводу проблемы с количеством страниц есть какие то предположения?
Доброго времени суток!
2 года пользуюсь данным макросом. Прикрутил сохранение в pdf, все просто супер... кроме ограничения по количеству страниц. Если страниц больше 100, то вылетает ошибка.
Люди добрые, помогите еще разочек пожалуйста победить данное ограничение.
Помогите! Прислали анкету по работе, она как то странно открылась и я ее заполнила и сохранила. Отослав адресату она у него не открывается. Пишет что документ сохранен в Ворде с макросами. И еще она и у меня не открывается. Что делать.
Здравствуйте!
Очень понравился Ваш макрос на сохранение с закладкой. Но у себя никак прикрутить его не могу. При формировании из шаблона текст в закладку встает, но макрос не видит этот текст или при формировании текст встает, а сама закладка пропадает. Бьюсь два дня, начинаю отчаиваться уже. Может, какие идеи будут? Word2000.
А или сохраняет в таком виде .doc
то есть имя пустое
Здравствуйте!
Очень понравился Ваш макрос на сохранение док-а с именем из закладки. Вот только уже два дня бьюсь, а никак не получается. Или сама закладка пропадает, хотя текст остается или все есть, но макрос все равно не видит эту закладку.
Word2000. Может, какие идеи будут? Очень хочется такую примочку к отчету.
А! или сохраняет в таком виде .doc
то есть имя пустое