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

Вход

Регистрация

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

 

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

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

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


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

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

2019
можно так
[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 (55.0 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщениеможно так
[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
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

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

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

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
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
нужно чтобы сохранялись все акты в одном файле 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 (57.0 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
нужно чтобы сохранялись все акты в одном файле 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
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

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

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

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


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеСделайте ячейку с перечнем номеров листов, и берите данные с нее.
для этого:
замените строку :
[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
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

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
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

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

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

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

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

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

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


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

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

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

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

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

20xx
Serj, вариант

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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

Автор - SLAVICK
Дата добавления - 05.09.2016 в 18:46
IgorPWZ Дата: Четверг, 15.03.2018, 13:19 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Всем добрый день. Чтобы не создавать новую тему по похожему вопросу, решил спросить здесь. Подскажите пожалуйста, как подредактировать код макроса.
Имеется макрос, где страница сохраняется на диске D:\ и с названием, взятым из ячейки. Как сделать, чтобы pdf сохранялся в той же папке, что и файл и добавить еще текст после имени файла?

[vba]
Код
Sub CommandButton1_Click()

    ActiveSheet.ExportAsFixedFormat Filename:="D:\" & Range("H81").Value, Type:=xlTypePDF, _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
[/vba]


Сообщение отредактировал IgorPWZ - Четверг, 15.03.2018, 13:30
 
Ответить
СообщениеВсем добрый день. Чтобы не создавать новую тему по похожему вопросу, решил спросить здесь. Подскажите пожалуйста, как подредактировать код макроса.
Имеется макрос, где страница сохраняется на диске D:\ и с названием, взятым из ячейки. Как сделать, чтобы pdf сохранялся в той же папке, что и файл и добавить еще текст после имени файла?

[vba]
Код
Sub CommandButton1_Click()

    ActiveSheet.ExportAsFixedFormat Filename:="D:\" & Range("H81").Value, Type:=xlTypePDF, _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
[/vba]

Автор - IgorPWZ
Дата добавления - 15.03.2018 в 13:19
Mikael Дата: Четверг, 15.03.2018, 15:22 | Сообщение № 16
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

Excel 2010
IgorPWZ, добрый день.
Вам нужно поменять путь и имя файла в этом месте:
[vba]
Код
Filename:="D:\" & Range("H81").Value
[/vba]
примерно так:
[vba]
Код
Filename:= ActiveWorkbook.Path & "\" & Range("H81").Value & "еще текст после имени"
[/vba]
 
Ответить
СообщениеIgorPWZ, добрый день.
Вам нужно поменять путь и имя файла в этом месте:
[vba]
Код
Filename:="D:\" & Range("H81").Value
[/vba]
примерно так:
[vba]
Код
Filename:= ActiveWorkbook.Path & "\" & Range("H81").Value & "еще текст после имени"
[/vba]

Автор - Mikael
Дата добавления - 15.03.2018 в 15:22
IgorPWZ Дата: Четверг, 15.03.2018, 15:48 | Сообщение № 17
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Mikael, Большое спасибо:) Все работает hands
 
Ответить
СообщениеMikael, Большое спасибо:) Все работает hands

Автор - IgorPWZ
Дата добавления - 15.03.2018 в 15:48
YH96 Дата: Вторник, 13.08.2019, 17:28 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте, помогите написать макрос.
Есть книга в которой есть листы с данными, надо сохранить в формате PDF макросом только один определённый лист. задать папку сохранения и имя сохраняемого файла.
Спасибо за помощь.
 
Ответить
СообщениеЗдравствуйте, помогите написать макрос.
Есть книга в которой есть листы с данными, надо сохранить в формате PDF макросом только один определённый лист. задать папку сохранения и имя сохраняемого файла.
Спасибо за помощь.

Автор - YH96
Дата добавления - 13.08.2019 в 17:28
Pelena Дата: Вторник, 13.08.2019, 17:34 | Сообщение № 19
Группа: Админы
Ранг: Местный житель
Сообщений: 19162
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Прочитайте Правила форума и создайте свою тему. Эта тема закрыта


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПрочитайте Правила форума и создайте свою тему. Эта тема закрыта

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

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