Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2013, 12:50   #1
uralshans
Пользователь
 
Регистрация: 26.12.2012
Сообщений: 66
По умолчанию Программно сохранить всю книгу в один файл PDF

Добрый день!!
Подскажите пожалуйста, как можно сохранить всю книгу целиком в формате pdf?
А лучше выбранные листы в одном файле pdf..

Составляю 3 документа в одной книге. Забиваю всё на одном листе, а на другие оставшиеся 2 разносится само. Но еще есть листы со всякими настройками, + макросы.. все 3 файлика (листа) это один пакет документов, который в дальнейшем нужно еще и напечатать. Обязательно нужно хранить эти 3 документа (листа) в электронном виде. Я думаю что наилучший вариант (по удобству) это хранить их в pdf формате, но только в одной файле pdf.
Помогите осуществить задуманное..Заранее благодарен!!

п.с. формат pdf нужен потому что в книге есть макрос "Сумма прописью", если сохранять книгу без поддержки макросов, то естественно сумма прописью пропадает.

Последний раз редактировалось uralshans; 22.09.2013 в 13:07.
uralshans вне форума Ответить с цитированием
Старый 22.09.2013, 13:02   #2
uralshans
Пользователь
 
Регистрация: 26.12.2012
Сообщений: 66
По умолчанию

Сохранить отдельный лист в pdf можно так..
Но как сохранить сразу несколько (выбранных листов; можно даже по дефолту выбрать какие листы будут сохраняться) в один файл pdf?
Код:
ChDir "K:\Списание запчастей"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "K:\Списание запчастей\Заказ-Наряд No.000139.pdf", Quality:=xlQualityStandard _
        , IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
Конечно интересен вариант с названием сохраняемого файла pdf. Допустим чтоб название бралось из Листа "Заказ-Наряд" ячейки С1. В ячейке С1 прописываю номер заказ-наряда.

Последний раз редактировалось uralshans; 22.09.2013 в 13:04.
uralshans вне форума Ответить с цитированием
Старый 22.09.2013, 13:13   #3
uralshans
Пользователь
 
Регистрация: 26.12.2012
Сообщений: 66
По умолчанию

Сохранить только один лист из книги в формате pdf с названием из ячейки получилось.
Код:
ChDir "K:\Списание запчастей"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        [B8] & "_" & [C1] & "_" & [E1], Quality:=xlQualityStandard _
        , IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
Помогите сохранить несколько листов в этот один файл pdf..
uralshans вне форума Ответить с цитированием
Старый 22.09.2013, 13:42   #4
uralshans
Пользователь
 
Регистрация: 26.12.2012
Сообщений: 66
По умолчанию

Справился!! Вообщем получилось так:
Скрыл листы с настройками и прочим прочим..
Записал макрос с сохранением всей книги в один файл pdf.
Название файла этого склеил из 3-х ячеек.
Всё ОК и всё нравится.... но это дома, а работаю с файлом на разных компьютерах. И возможно возникнет проблема с директорией сохранения файла.
Здесь он у нас сохраняется на флешку "K:\Списание запчастей"; на другом компьютере таже флешка может быть и не "К", а "G" например..

Что прописать, чтоб файл сохранялся в папку где находится сама книга?

Вот последнее что получилось
Код:
    ChDir "K:\Списание запчастей"
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        [B8] & "_" & [C1] & "_" & [D1], Quality:=xlQualityStandard _
        , IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
uralshans вне форума Ответить с цитированием
Старый 22.09.2013, 13:44   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

ActiveSheet.ExportAsFixedFormat применяется не только к выделенному листу, а ко всем выделенным листам.

Запишите макрос выделения нескольких листов, - получится ещё одна строка кода.

Пример макроса:

Код:
Sub Макрос1()
    ' в текущую папку сохраняем PDF
    Filename$ = ThisWorkbook.Path & "\" & [B8] & "_" & [C1] & "_" & [D1] & ".pdf"

    Worksheets("Лист1").Select    ' выделяем первый лист
    Worksheets("Лист2").Select False    ' добавляем к выделению другой лист
    Worksheets("Лист4").Select False    ' и ещё один

    ActiveSheet.ExportAsFixedFormat xlTypePDF, Filename$
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 22.09.2013, 13:47   #6
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Разве не очевидно? Сбросить все нужные листы в один и экспортировать. Общий лист удалить.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 22.09.2013, 13:52   #7
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Игорь, а при таком подходе, в PDF какое-то разделение на листы сохраняется, или все так же идет одним последовательным потоком?
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 22.09.2013, 13:57   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Игорь, а при таком подходе, в PDF какое-то разделение на листы сохраняется, или все так же идет одним последовательным потоком?
Экспорт в ПДФ, - по сути, есть распечатка
Т.е. результат точно такой же, как при печати нескольких выделенных листов (сначала первый лист, со следующей страницы - следующий, и т.д.)
EducatedFool вне форума Ответить с цитированием
Старый 22.09.2013, 14:00   #9
uralshans
Пользователь
 
Регистрация: 26.12.2012
Сообщений: 66
По умолчанию

EducatedFool
Огромное спасибо!! Получилось!!
uralshans вне форума Ответить с цитированием
Старый 22.09.2013, 14:00   #10
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Ок. Спасибо. Я так и думал. Просто самому никогда не надобилось.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Собрать все Image и сохранить в один файл как реализовать? Vans888 Общие вопросы Delphi 4 23.03.2012 22:47
сохранить web страницу в pdf Pein95 Общие вопросы Delphi 2 20.07.2011 02:38
Программно дописать код в книгу. tae1980 Microsoft Office Excel 5 24.06.2011 14:12
как сохранить всю книгу, только значений без формул? katlis Microsoft Office Excel 5 17.12.2008 11:59
Как установить формат даты на всю книгу ? SD_KOROLEV Microsoft Office Excel 3 02.03.2008 20:14