Здравствуйте, помогите написать макрос. Есть книга в которой есть листы с данными на их основе создаются акты их может быть разное количество, их необходимо сохранить в формате PDF макросом. Спасибо за помощь. [moder]Перенес тему в вопросы по VBA[/moder]
Здравствуйте, помогите написать макрос. Есть книга в которой есть листы с данными на их основе создаются акты их может быть разное количество, их необходимо сохранить в формате PDF макросом. Спасибо за помощь. [moder]Перенес тему в вопросы по VBA[/moder]Serj
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]
можно так [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
Оптимальное решение в ячейке например А1 есть определенный индекс 1 на Акты №1, на Акт №2 индекс 2, при сохранение через диалоговое окно выбираем какие акты сохранить 1 или 2 в один файл PDF.
Оптимальное решение в ячейке например А1 есть определенный индекс 1 на Акты №1, на Акт №2 индекс 2, при сохранение через диалоговое окно выбираем какие акты сохранить 1 или 2 в один файл PDF.Serj
через диалоговое окно выбираем какие акты сохранить 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
через диалоговое окно выбираем какие акты сохранить 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
Спасибо. Мне лично все понятно, но вот человеку который плохо владеет Excel, для него трудно понять какие листы вводить. Можно ли все же сделать подвязку к какой то ячейке с определенным индексом, просто актов может быть 10, 20 бывает и больше и разные.
Спасибо. Мне лично все понятно, но вот человеку который плохо владеет Excel, для него трудно понять какие листы вводить. Можно ли все же сделать подвязку к какой то ячейке с определенным индексом, просто актов может быть 10, 20 бывает и больше и разные.Serj
Сделайте ячейку с перечнем номеров листов, и берите данные с нее. для этого: замените строку : [vba]
Код
s = InputBox("# sheets", , "2,3,4")
[/vba] на [vba]
Код
s = Sheets("Лист1").Range("A2").Value
[/vba] А в нее формулой соберите номера страниц. или если не выйдет - давайте пример где будет список листов для печати - в "удобном" виде. Откуда я знаю что Вам удобно, и как Вы будете это "удобно" собирать.
Сделайте ячейку с перечнем номеров листов, и берите данные с нее. для этого: замените строку : [vba]
Код
s = InputBox("# sheets", , "2,3,4")
[/vba] на [vba]
Код
s = Sheets("Лист1").Range("A2").Value
[/vba] А в нее формулой соберите номера страниц. или если не выйдет - давайте пример где будет список листов для печати - в "удобном" виде. Откуда я знаю что Вам удобно, и как Вы будете это "удобно" собирать. SLAVICK
Прикладываю пример. Есть лист данные, там автомат можно создать копию листа из шаблона Акт1 или Акт2. В ячейке А1 идет индекс 1 для актов 1 и 2 для актов 2. Теперь после создания и заполнения актов допусти 1 нужно их отправить в один файл PDF для архива или акты 2 в другой файл. Список листов каждый раз меняется
Прикладываю пример. Есть лист данные, там автомат можно создать копию листа из шаблона Акт1 или Акт2. В ячейке А1 идет индекс 1 для актов 1 и 2 для актов 2. Теперь после создания и заполнения актов допусти 1 нужно их отправить в один файл PDF для архива или акты 2 в другой файл. Список листов каждый раз меняетсяSerj
И как программе понять - какие листы отправлять? Вы мой предыдущий файл смотрели? В желтую ячейку придумайте формулу или еще что, чтобы были указаны через запятую номера страниц. Останется нажать кнопку. Как придумать формулу - другой вопрос... это уже в другой теме. Программе нужна четкая логика чего Вы от нее хотите.
И что из этого примера можно понять? я вижу лишь то что тут не 5-ь листов как в прошлом файле а всего 3и. Вы хотите просто отправить в пдф все листы кроме первого?
И как программе понять - какие листы отправлять? Вы мой предыдущий файл смотрели? В желтую ячейку придумайте формулу или еще что, чтобы были указаны через запятую номера страниц. Останется нажать кнопку. Как придумать формулу - другой вопрос... это уже в другой теме. Программе нужна четкая логика чего Вы от нее хотите.
И что из этого примера можно понять? я вижу лишь то что тут не 5-ь листов как в прошлом файле а всего 3и. Вы хотите просто отправить в пдф все листы кроме первого?SLAVICK
Не смог сделать файл по объему больше получается. Попробую объяснить. Создаю акты(листы) по шаблону через кнопку, им присваиваются имена согласно названия объекта который выбирается из выпадающего списка, удобно было бы однотипные акты имели индекс допустим 1 в определенной ячейке. При сохранении программа просматривает все открытые листы и с индексом допустим 1 в определенной ячейке и сохраняет в файл в общий PDF. Акты бывают разные, поэтому каждому типу можно присвоить свой индекс т. к они создаются на основе шаблона, поэтому выбирая индекс группы актов сохраняем в один файл. Индекс прописан в шаблоне поэтому создавая копию у них они =.Не знаю насколько понятно объяснил, но я считаю самый простой алгоритм сборки листов, только моих знаний не хватает прописать такую процедуру. Заранее всем благодарен за помощь.
Не смог сделать файл по объему больше получается. Попробую объяснить. Создаю акты(листы) по шаблону через кнопку, им присваиваются имена согласно названия объекта который выбирается из выпадающего списка, удобно было бы однотипные акты имели индекс допустим 1 в определенной ячейке. При сохранении программа просматривает все открытые листы и с индексом допустим 1 в определенной ячейке и сохраняет в файл в общий PDF. Акты бывают разные, поэтому каждому типу можно присвоить свой индекс т. к они создаются на основе шаблона, поэтому выбирая индекс группы актов сохраняем в один файл. Индекс прописан в шаблоне поэтому создавая копию у них они =.Не знаю насколько понятно объяснил, но я считаю самый простой алгоритм сборки листов, только моих знаний не хватает прописать такую процедуру. Заранее всем благодарен за помощь.Serj
Слава твои ответы посмотрел там все понятно для меня. Но на работе есть люди которые excel знают как кнопку нажать, а что бы программой обычно сохранить, выделить все листы в PDF не знают да и актов бывает много поэтому хочется упростить процедуру сохранения в архив.
Слава твои ответы посмотрел там все понятно для меня. Но на работе есть люди которые excel знают как кнопку нажать, а что бы программой обычно сохранить, выделить все листы в PDF не знают да и актов бывает много поэтому хочется упростить процедуру сохранения в архив. Serj
т. к они создаются на основе шаблона, поэтому выбирая индекс группы актов
Так что мешает написать формулу типа: Если тип1 тогда "1,3,5,10" Если тип2 тогда "1,2,6,10" Если тип3 тогда "3,4,6,9"... или как в примере - через справочник и ВПР. По моему это проще чем писать формулы на на каждом листе. см. пример
т. к они создаются на основе шаблона, поэтому выбирая индекс группы актов
Так что мешает написать формулу типа: Если тип1 тогда "1,3,5,10" Если тип2 тогда "1,2,6,10" Если тип3 тогда "3,4,6,9"... или как в примере - через справочник и ВПР. По моему это проще чем писать формулы на на каждом листе. см. пример
Всем добрый день. Чтобы не создавать новую тему по похожему вопросу, решил спросить здесь. Подскажите пожалуйста, как подредактировать код макроса. Имеется макрос, где страница сохраняется на диске 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]
Всем добрый день. Чтобы не создавать новую тему по похожему вопросу, решил спросить здесь. Подскажите пожалуйста, как подредактировать код макроса. Имеется макрос, где страница сохраняется на диске 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
Здравствуйте, помогите написать макрос. Есть книга в которой есть листы с данными, надо сохранить в формате PDF макросом только один определённый лист. задать папку сохранения и имя сохраняемого файла. Спасибо за помощь.
Здравствуйте, помогите написать макрос. Есть книга в которой есть листы с данными, надо сохранить в формате PDF макросом только один определённый лист. задать папку сохранения и имя сохраняемого файла. Спасибо за помощь.YH96