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

Вход

Регистрация

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

 

= Мир MS Excel/Сохранить определенные листы excel в PDF - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сохранить определенные листы excel в PDF (Макросы/Sub)
Сохранить определенные листы excel в PDF
Serj Дата: Воскресенье, 04.09.2016, 22:56 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Здравствуйте, помогите написать макрос. Есть книга в которой есть листы с данными на их основе создаются акты их может быть разное количество, их необходимо сохранить в формате PDF макросом. Спасибо за помощь.
[moder]Перенес тему в вопросы по VBA[/moder]
К сообщению приложен файл: _PDF.xls(92Kb)


Сообщение отредактировал SLAVICK - Понедельник, 05.09.2016, 10:09
 
Ответить
СообщениеЗдравствуйте, помогите написать макрос. Есть книга в которой есть листы с данными на их основе создаются акты их может быть разное количество, их необходимо сохранить в формате PDF макросом. Спасибо за помощь.
[moder]Перенес тему в вопросы по VBA[/moder]

Автор - Serj
Дата добавления - 04.09.2016 в 22:56
SLAVICK Дата: Понедельник, 05.09.2016, 09:26 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 1834
Репутация: 613 ±
Замечаний: 0% ±

2007,2010,2013,2016
можно так
[vba]
Код
Private Sub CommandButton1_Click()
Dim strFileName As String
For Each sh In ActiveWorkbook.Sheets
    With sh
        strFileName = "Акт " & .Range("A1").Value
          On Error Resume Next
        ChDir "\"
         .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
              ActiveWorkbook.Path & "\" & strFileName, Quality:= _
               xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                OpenAfterPublish:=True
    End With
Next
End Sub
[/vba]
К сообщению приложен файл: 5540682.xls(55Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщениеможно так
[vba]
Код
Private Sub CommandButton1_Click()
Dim strFileName As String
For Each sh In ActiveWorkbook.Sheets
    With sh
        strFileName = "Акт " & .Range("A1").Value
          On Error Resume Next
        ChDir "\"
         .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
              ActiveWorkbook.Path & "\" & strFileName, Quality:= _
               xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                OpenAfterPublish:=True
    End With
Next
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 05.09.2016 в 09:26
Serj Дата: Понедельник, 05.09.2016, 12:05 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Спасибо за помощь, но мне нужно чтобы сохранялись все акты в одном файле PDF
 
Ответить
СообщениеСпасибо за помощь, но мне нужно чтобы сохранялись все акты в одном файле PDF

Автор - Serj
Дата добавления - 05.09.2016 в 12:05
Serj Дата: Понедельник, 05.09.2016, 12:16 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Оптимальное решение в ячейке например А1 есть определенный индекс 1 на Акты №1, на Акт №2 индекс 2, при сохранение через диалоговое окно выбираем какие акты сохранить 1 или 2 в один файл PDF.
 
Ответить
СообщениеОптимальное решение в ячейке например А1 есть определенный индекс 1 на Акты №1, на Акт №2 индекс 2, при сохранение через диалоговое окно выбираем какие акты сохранить 1 или 2 в один файл PDF.

Автор - Serj
Дата добавления - 05.09.2016 в 12:16
SLAVICK Дата: Понедельник, 05.09.2016, 12:57 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 1834
Репутация: 613 ±
Замечаний: 0% ±

2007,2010,2013,2016
нужно чтобы сохранялись все акты в одном файле PDF

Так сразу нужно говорить ...
через диалоговое окно выбираем какие акты сохранить 1 или 2

В приложении два варианта:
Вариант 1: нажать кнопку и ввести номера листов через запятую
Вариант 2: Выделить нужные для сохранения листы и запустить макрос D()
[vba]
Код
Private Sub CommandButton1_Click()
Dim strFileName As String
s = InputBox("# sheets", , "2,3,4")
a = Split(s, ",")
For i = 0 To UBound(a): a(i) = Sheets(Val(a(i))).Name: Next
Sheets(a).Select
    strFileName = "Акт " & Sheets("Лист1").Range("A1").Value
    On Error Resume Next
    ChDir "\"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ActiveWorkbook.Path & "\" & strFileName, Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
End Sub

Sub d()
    strFileName = "Акт " & Sheets("Лист1").Range("A1").Value
    On Error Resume Next
    ChDir "\"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ActiveWorkbook.Path & "\" & strFileName, Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
End Sub
[/vba]
К сообщению приложен файл: 9630119.xls(57Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
нужно чтобы сохранялись все акты в одном файле PDF

Так сразу нужно говорить ...
через диалоговое окно выбираем какие акты сохранить 1 или 2

В приложении два варианта:
Вариант 1: нажать кнопку и ввести номера листов через запятую
Вариант 2: Выделить нужные для сохранения листы и запустить макрос D()
[vba]
Код
Private Sub CommandButton1_Click()
Dim strFileName As String
s = InputBox("# sheets", , "2,3,4")
a = Split(s, ",")
For i = 0 To UBound(a): a(i) = Sheets(Val(a(i))).Name: Next
Sheets(a).Select
    strFileName = "Акт " & Sheets("Лист1").Range("A1").Value
    On Error Resume Next
    ChDir "\"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ActiveWorkbook.Path & "\" & strFileName, Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
End Sub

Sub d()
    strFileName = "Акт " & Sheets("Лист1").Range("A1").Value
    On Error Resume Next
    ChDir "\"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ActiveWorkbook.Path & "\" & strFileName, Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 05.09.2016 в 12:57
Serj Дата: Понедельник, 05.09.2016, 13:42 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Спасибо. Мне лично все понятно, но вот человеку который плохо владеет Excel, для него трудно понять какие листы вводить.
Можно ли все же сделать подвязку к какой то ячейке с определенным индексом, просто актов может быть 10, 20 бывает и больше
и разные.
 
Ответить
СообщениеСпасибо. Мне лично все понятно, но вот человеку который плохо владеет Excel, для него трудно понять какие листы вводить.
Можно ли все же сделать подвязку к какой то ячейке с определенным индексом, просто актов может быть 10, 20 бывает и больше
и разные.

Автор - Serj
Дата добавления - 05.09.2016 в 13:42
SLAVICK Дата: Понедельник, 05.09.2016, 14:17 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 1834
Репутация: 613 ±
Замечаний: 0% ±

2007,2010,2013,2016
Сделайте ячейку с перечнем номеров листов, и берите данные с нее.
для этого:
замените строку :
[vba]
Код
s = InputBox("# sheets", , "2,3,4")
[/vba]
на [vba]
Код
s = Sheets("Лист1").Range("A2").Value
[/vba]
А в нее формулой соберите номера страниц.
или если не выйдет - давайте пример где будет список листов для печати - в "удобном" виде.
Откуда я знаю что Вам удобно, и как Вы будете это "удобно" собирать. :D
К сообщению приложен файл: 9630119-1-.xls(58Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеСделайте ячейку с перечнем номеров листов, и берите данные с нее.
для этого:
замените строку :
[vba]
Код
s = InputBox("# sheets", , "2,3,4")
[/vba]
на [vba]
Код
s = Sheets("Лист1").Range("A2").Value
[/vba]
А в нее формулой соберите номера страниц.
или если не выйдет - давайте пример где будет список листов для печати - в "удобном" виде.
Откуда я знаю что Вам удобно, и как Вы будете это "удобно" собирать. :D

Автор - SLAVICK
Дата добавления - 05.09.2016 в 14:17
Serj Дата: Понедельник, 05.09.2016, 17:12 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Прикладываю пример. Есть лист данные, там автомат можно создать копию листа из шаблона Акт1 или Акт2.
В ячейке А1 идет индекс 1 для актов 1 и 2 для актов 2. Теперь после создания и заполнения актов допусти 1 нужно их отправить
в один файл PDF для архива или акты 2 в другой файл. Список листов каждый раз меняется
 
Ответить
СообщениеПрикладываю пример. Есть лист данные, там автомат можно создать копию листа из шаблона Акт1 или Акт2.
В ячейке А1 идет индекс 1 для актов 1 и 2 для актов 2. Теперь после создания и заполнения актов допусти 1 нужно их отправить
в один файл PDF для архива или акты 2 в другой файл. Список листов каждый раз меняется

Автор - Serj
Дата добавления - 05.09.2016 в 17:12
Serj Дата: Понедельник, 05.09.2016, 17:29 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Пример листов
К сообщению приложен файл: 12.xls(100Kb)
 
Ответить
СообщениеПример листов

Автор - Serj
Дата добавления - 05.09.2016 в 17:29
SLAVICK Дата: Понедельник, 05.09.2016, 17:38 | Сообщение № 10
Группа: Модераторы
Ранг: Старожил
Сообщений: 1834
Репутация: 613 ±
Замечаний: 0% ±

2007,2010,2013,2016
Есть лист данные, там автомат можно создать копию листа из шаблона Акт1 или Акт2.

Это темы не касается.
Список листов каждый раз меняется

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

И что из этого примера можно понять? я вижу лишь то что тут не 5-ь листов как в прошлом файле а всего 3и. Вы хотите просто отправить в пдф все листы кроме первого?


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
Есть лист данные, там автомат можно создать копию листа из шаблона Акт1 или Акт2.

Это темы не касается.
Список листов каждый раз меняется

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

И что из этого примера можно понять? я вижу лишь то что тут не 5-ь листов как в прошлом файле а всего 3и. Вы хотите просто отправить в пдф все листы кроме первого?

Автор - SLAVICK
Дата добавления - 05.09.2016 в 17:38
Матраскин Дата: Понедельник, 05.09.2016, 17:47 | Сообщение № 11
Группа: Друзья
Ранг: Обитатель
Сообщений: 341
Репутация: 63 ±
Замечаний: 0% ±

20xx
Serj, вариант

конвертация онлайн :Р


в интернете опять кто-то не прав

Сообщение отредактировал Матраскин - Понедельник, 05.09.2016, 17:48
 
Ответить
СообщениеSerj, вариант

конвертация онлайн :Р

Автор - Матраскин
Дата добавления - 05.09.2016 в 17:47
Serj Дата: Понедельник, 05.09.2016, 18:28 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Не смог сделать файл по объему больше получается. Попробую объяснить. Создаю акты(листы) по шаблону через кнопку, им присваиваются имена
согласно названия объекта который выбирается из выпадающего списка, удобно было бы однотипные акты имели индекс допустим 1 в определенной ячейке.
При сохранении программа просматривает все открытые листы и с индексом допустим 1 в определенной ячейке и сохраняет в файл в общий PDF. Акты бывают разные,
поэтому каждому типу можно присвоить свой индекс т. к они создаются на основе шаблона, поэтому выбирая индекс группы актов сохраняем в один файл. Индекс прописан
в шаблоне поэтому создавая копию у них они =.Не знаю насколько понятно объяснил, но я считаю самый простой алгоритм сборки листов, только моих знаний не хватает
прописать такую процедуру. Заранее всем благодарен за помощь.
 
Ответить
СообщениеНе смог сделать файл по объему больше получается. Попробую объяснить. Создаю акты(листы) по шаблону через кнопку, им присваиваются имена
согласно названия объекта который выбирается из выпадающего списка, удобно было бы однотипные акты имели индекс допустим 1 в определенной ячейке.
При сохранении программа просматривает все открытые листы и с индексом допустим 1 в определенной ячейке и сохраняет в файл в общий PDF. Акты бывают разные,
поэтому каждому типу можно присвоить свой индекс т. к они создаются на основе шаблона, поэтому выбирая индекс группы актов сохраняем в один файл. Индекс прописан
в шаблоне поэтому создавая копию у них они =.Не знаю насколько понятно объяснил, но я считаю самый простой алгоритм сборки листов, только моих знаний не хватает
прописать такую процедуру. Заранее всем благодарен за помощь.

Автор - Serj
Дата добавления - 05.09.2016 в 18:28
Serj Дата: Понедельник, 05.09.2016, 18:38 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Слава твои ответы посмотрел там все понятно для меня. Но на работе есть люди которые excel
знают как кнопку нажать, а что бы программой обычно сохранить, выделить все листы в PDF не знают
да и актов бывает много поэтому хочется упростить процедуру сохранения в архив.
 
Ответить
СообщениеСлава твои ответы посмотрел там все понятно для меня. Но на работе есть люди которые excel
знают как кнопку нажать, а что бы программой обычно сохранить, выделить все листы в PDF не знают
да и актов бывает много поэтому хочется упростить процедуру сохранения в архив.

Автор - Serj
Дата добавления - 05.09.2016 в 18:38
SLAVICK Дата: Понедельник, 05.09.2016, 18:46 | Сообщение № 14
Группа: Модераторы
Ранг: Старожил
Сообщений: 1834
Репутация: 613 ±
Замечаний: 0% ±

2007,2010,2013,2016
т. к они создаются на основе шаблона, поэтому выбирая индекс группы актов

Так что мешает написать формулу типа:
Если тип1 тогда "1,3,5,10"
Если тип2 тогда "1,2,6,10"
Если тип3 тогда "3,4,6,9"... или как в примере - через справочник и ВПР.
По моему это проще чем писать формулы на на каждом листе. см. пример
Не смог сделать файл по объему больше получается

почему у меня получается?
Не знаю насколько понятно объяснил, но я считаю самый простой алгоритм сборки листов, только моих знаний не хватает прописать такую процедуру
так и постарайтесь пример детальный сделать.
К сообщению приложен файл: 9630119-1-1-.xls(52Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
т. к они создаются на основе шаблона, поэтому выбирая индекс группы актов

Так что мешает написать формулу типа:
Если тип1 тогда "1,3,5,10"
Если тип2 тогда "1,2,6,10"
Если тип3 тогда "3,4,6,9"... или как в примере - через справочник и ВПР.
По моему это проще чем писать формулы на на каждом листе. см. пример
Не смог сделать файл по объему больше получается

почему у меня получается?
Не знаю насколько понятно объяснил, но я считаю самый простой алгоритм сборки листов, только моих знаний не хватает прописать такую процедуру
так и постарайтесь пример детальный сделать.

Автор - SLAVICK
Дата добавления - 05.09.2016 в 18:46
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сохранить определенные листы excel в PDF (Макросы/Sub)
Страница 1 из 11
Поиск:

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