Претворите Екцел у ПДФ помоћу ВБА - једини водич који ће вам требати

Преглед садржаја

*Ово је гостујући пост Риана Веллса, колеге блогера и сјајног ВБА програмера.*

Ако радите са програмом Екцел, од вас је несумњиво затражено да направите резимее свог рада.

Извештаји о продаји, фактуре, прогнозе, распореди.

Знате ли шта је заједничко свим овим документима? Изгледају сјајно у ПДФ формату. Знаш шта још? Менаџмент воли ПДФ -ове!

Претворите Екцел у ПДФ

У овом водичу ћу вам показати како да користите Екцел ВБА за претварање свих врста Екцел објеката у ПДФ -ове:

Сваки од макроа ћу представити неким коментаром. На тај начин ћете их моћи брзо пронаћи, копирати у ВБА едитор и користити.

Када покренете било који од ових макроа, појавиће се дијалошки оквир Сачувај као са питањем где желите да сачувате свој ПДФ. Подразумевано име укључује датум и временску ознаку када сте извршили макро у формату гггггммдд_ххммсс.

Идемо право на то.

Ево макроа:

Одштампај одабир у ПДФ

Овај је мој лични фаворит. Овај макро ће претворити ћелије које сте активно одабрали у ПДФ.

Ако сте изабрали само једну ћелију, ВБА макро је довољно паметан да схвати да вероватно не желите да конвертујете само једну ћелију па вас пита да изаберете опсег који желите да конвертујете:

Суб ПринтСелецтионТоПДФ () 'СУБРОУТИНЕ: ПринтСелецтионТоПДФ' ДЕВЕЛОПЕР: Риан Веллс 'ОПИС: Одштампајте тренутно изабрани опсег у ПДФ Дим ДимРен Ас Ранге Дим стрфиле Ас Стринг Дим мифиле Ас Вариант Иф Селецтион.Цоунт = 1 тхен Сет тхисРнг = Апплицатион.ИнпутБок ( "Селецт а ранге", "Гет Ранге", Типе: = 8) Елсе Сет ТхисРнг = Селецтион Енд Иф 'Упит фор саве лоцатион стрфиле = "Селецтион" & "_" _ & Формат (Нов (), "ииииммдд_ххммсс") _ & ".пдф" стрфиле = ТхисВоркбоок.Патх & "\" & стрфиле мифиле = Апплицатион.ГетСавеАсФиленаме _ (ИнитиалФилеНаме: = стрфиле, _ ФилеФилтер: = "ПДФ датотеке ( *.пдф), *.пдф", _ Наслов: = "Изаберите име фасцикле и датотеке за чување као ПДФ") Ако је моја датотека "Нетачно" Затим "сачувајте као ПДФ ТхисРнг.ЕкпортАсФикедФормат" Тип: = клТипеПДФ, Назив датотеке: = _ мифиле, Квалитет: = клКуалитиСтандард, ИнцлудеДоцПропертиес: = Труе, _ ИгнореПринтАреас: = Труе, _ ИгнореПринтАреас: Фалсе, ОпенАфтерПублисх: = Труе Елсе МсгБок "Није изабрана датотека. ПДФ неће бити сачуван", вбОКОнли, "Но Филе Селецтед" Енд Иф Енд Суб

Када изаберете опсег и кликнете на ОК, приказаће се оквир за дијалог у којем можете изабрати где желите да сачувате ПДФ.

Аутоматски ће изабрати датум и време са сата вашег система и додати их имену датотеке.

Одштампајте једну табелу у ПДФ -у

Многи корисни корисници програма Екцел похрањују своје податке у организоване табеле. Заправо, сам Сумит Бансал толико воли Екцел табеле да их назива скривеним благом у Екцелу.

Овај макро штампа ПДФ табелу по вашем избору. Када покренете макро, од вас ће бити затражено име табеле коју желите да сачувате.

Суб ПринтТаблеТоПДФ () 'СУБРОУТИНЕ: ПринтТаблеТоПДФ' ДЕВЕЛОПЕР: Риан Веллс 'ОПИС: Одштампајте табелу по свом избору у ПДФ Дим стрфиле Ас Стринг Дим мифиле Ас Вариант Дим стрТабле Ас Стринг, р Ас Ранге Апплицатион.СцреенУпдатинг = Фалсе' Уђите у табелу име које желите да сачувате стрТабле = ИнпутБок ("Како се зове табела коју желите да сачувате?", "Унесите назив табеле") 'Табела коју желите да сачувате Ако Трим (стрТабле) = "" Затим изађите из Суб' упита за чување локација стрфиле = стрТабле & "_" _ & Формат (Нов (), "ииииммдд_ххммсс") _ & ".пдф" стрфиле = ТхисВоркбоок.Патх & "\" & стрфиле мифиле = Апплицатион.ГетСавеАсФиленаме _ (ИнитиалФилеНаме: = стрфиле, _ ФилеФилтер: = "ПДФ датотеке ( *.пдф), *.пдф", _ Титле: = "Одаберите име фасцикле и датотеке за чување као ПДФ") Ако је моја датотека "Фалсе" Затим "сачувај као ПДФ опсег (стрТабле). ЕкпортАсФикедФормат тип : = клТипеПДФ, Назив датотеке: = мифиле, Квалитет: = клКуалитиСтандард, _ ИнцлудеДоцПропертиес: = Труе, ИгнореПринтАреас: = Фалсе, ОпенАфтерПублисх: = Труе Елсе МсгБок "Није изабрана датотека. ПДФ неће бити одабран сачувано ", вбОКОнли," Није изабрана датотека "Заврши ако Апплицатион.ДисплаиАлертс = Фалсе ЛетсЦонтинуе: Витх Апплицатион .СцреенУпдатинг = Труе .ДисплаиАлертс = Труе Енд Витх Екит Суб Енд Суб

Када унесете назив табеле и кликнете на ОК, приказаће се дијалошки оквир у којем можете изабрати где желите да сачувате ПДФ.

Аутоматски ће изабрати датум и време са сата вашег система и додати их имену датотеке.

Одштампајте све табеле за одвајање ПДФ -ова

Ако ваша табела има неколико табела и сваку морате да сачувате у засебном ПДФ -у, можете покренути овај ВБА код.

Када покренете овај макро, појавиће се дијалог са захтевом да изаберете фасциклу у коју желите да сачувате своје ПДФ датотеке.

Када изаберете фасциклу, макро ће сачувати сваку табелу у ПДФ -у са именом табеле који се прикладно појављује у наслову ПДФ -а.

Суб ПринтАллТаблесТоПДФс () 'СУБРОУТИНЕ: ПринтАллТаблесТоПДФс' ДЕВЕЛОПЕР: Риан Веллс 'ОПИС: Одштампајте сваку табелу у својој табели у другом ПДФ Дим стрТаблес () Као Стринг Дим стрфиле Као Стринг Дим цх Ас Објецт, сх Ас Радни лист Дим Као варијанта Дим тбл Као ЛистОбјецт Дим схт Као радни лист са Апплицатион.ФилеДиалог (мсоФилеДиалогФолдерПицкер) .Титле = "Где желите да сачувате свој ПДФ?" .БуттонНаме = "Сачувај овде" .ИнитиалФилеНаме = ТхисВоркбоок.Патх Иф .Схов = -1 Тхен 'ако се притисне ОК сфолдер = .СелецтедИтемс (1) Елсе Енд Енд Иф Енд Витх За сваки схт у овој радној књизи. Радни листови за сваки тбл у схт .ЛистОбјецтс мифиле = ТхисВоркбоок.Наме & ""& тбл.Наме &""_ & Формат (Нов ()," ииииммдд_ххммсс ") _ &" .пдф "мифиле = сфолдер &" \ "& мифиле схт.Ранге (тбл.Наме) .ЕкпортАсФикедФормат Типе: = клТипеПДФ, Филенаме: = _ мифиле, Куалити : = клКуалитиСтандард, ИнцлудеДоцПропертиес: = Труе, _ ИгнореПринтАреас: = Фалсе, ОпенАфтерПублисх: = Труе Нект тбл Нект схт Енд Суб

Одштампајте све листове у један ПДФ

Не знам за вас, али у мом послу, морамо задржати ПДФ копије скоро свих наших табела. Додајемо ПДФ копије наших табела нашим прорачунима дизајна. Ови ПДФ-ови су некада били претварани у микрофише и засвођени за дуготрајно чување. Знате, у случају да се догодила апокалипса.

Ако се нађете у сличној ситуацији, лепо је што можете аутоматски претворити све листове у својој табели у један ПДФ. Ево ВБА макроа који ће учинити управо то:

Суб ПринтАллСхеетсТоПДФ () 'СУБРОУТИНЕ: ПринтАллСхеетсТоПДФ' ДЕВЕЛОПЕР: Риан Веллс 'ОПИС: Комбинујте све своје радне листове у један ПДФ Дим стрСхеетс () Ас Стринг Дим стрфиле Ас Стринг Дим сх Ас Ворксхеет Дим ицоунт Ас Интегер Дим ми Схете Ас Вариант' у низ за сваки сх У АцтивеВоркбоок.Ворксхеетс Иф сх.Висибле = клСхеетВисибле Затим РеДим сачува стрСхеетс (ицоунт) стрСхеетс (ицоунт) = сх.Наме ицоунт = ицоунт + 1 Енд Иф Нект сх Ако ицоунт = 0 Тада 'Нема графикона. Грешка при бушењу МсгБок "ПДФ не може бити креиран јер нису пронађени листови.",, "Нису пронађени листови" Изађи из подзавршавања Ако је "Упит за меморију локације стрфиле =" Схеетс "&" _ "_ & Формат (Нов ()," ииииммдд_ххммсс ") _ &" .пдф "стрфиле = ТхисВоркбоок.Патх &" \ "& стрфиле мифиле = Апплицатион.ГетСавеАсФиленаме _ (ИнитиалФилеНаме: = стрфиле, _ ФилеФилтер: =" ПДФ датотеке ( *.пдф), *.пдф ", _ Наслов: = "Одаберите назив фасцикле и датотеке за чување као ПДФ") Ако је моја датотека "Нетачно" Затим "сачувајте као ПДФ ТхисВоркбоок.Схеетс (стрСхеетс). Одаберите АцтивеСхеет.ЕкпортАсФикедФормат Типе: = клТипеПДФ, Филенаме: = _ мифиле, Куалити: = клКуалитиСтандард, ИнцлудеДоцПропертиес: = Труе, _ ИгнореПринтАреас: = Фалсе, ОпенАфтерПублисх: = Труе Елсе МсгБок "Није изабрана датотека. ПДФ неће бити сачуван", вбОКОнли, "Но Филе Селецтед" Енд Иф Енд Суб

Штампајте графиконе у ПДФ -у

Овај макро претвара све ваше графиконе у један ПДФ - али не и ваше објекте графикона! Под листовима графикона мислим на графиконе који имају своју картицу на вашој листи картица табела:

Суб ПринтЦхартСхеетсТоПДФ () 'СУБРОУТИНЕ: ПринтЦхартСхеетсТоПДФ' ДЕВЕЛОПЕР: Риан Веллс 'ОПИС: Комбинујте све листове графикона у један ПДФ Дим стрСхеетс () Ас Стринг Дим стрфиле Ас Стринг Дим цх Ас Објецт, сх Ас Ворксхеет Дим ицоунт Ас Интегер Дим ми Сачувај имена листова графикона у низ за сваки цх У АцтивеВоркбоок.Цхартс РеДим Очувај стрСхеетс (ицоунт) стрСхеетс (ицоунт) = цх.Наме ицоунт = ицоунт + 1 Следећи цх Ако је ицоунт = 0 Онда 'Нема графикона. Грешка при бушењу МсгБок "ПДФ не може бити креиран јер нису пронађени листови графикона.",, "Нису пронађени листови графикона" Изађи из подзавршавања ако је "Упит фор саве лоцатион стрфиле =" Цхартс "&" _ "_ & Формат (Нов () , "ииииммдд_ххммсс") _ & ".пдф" стрфиле = ТхисВоркбоок.Патх & "\" & стрфиле мифиле = Апплицатион.ГетСавеАсФиленаме _ (ИнитиалФилеНаме: = стрфиле, _ ФилеФилтер: = "ПДФ датотеке ( *.пдф), *.пдф ", _ Титле: =" Одаберите име фасцикле и датотеке за чување као ПДФ ") Ако је моја датотека" Нетачно "Затим 'сачувајте као ПДФ ТхисВоркбоок.Схеетс (стрСхеетс). Одаберите АцтивеСхеет.ЕкпортАсФикедФормат Типе: = клТипеПДФ, Филенаме: = _ мифиле, Квалитет: = клКуалитиСтандард, ИнцлудеДоцПропертиес: = Труе, _ ИгнореПринтАреас: = Фалсе, ОпенАфтерПублисх: = Труе Елсе МсгБок "Није изабрана датотека. ПДФ неће бити сачуван", вбОКОнли, "Но Филе Селецтед" Енд Иф Енд Суб

Штампајте објекте графикона у ПДФ

Овај макро спрема све ваше нормалне графиконе - објекте графикона - у један ПДФ. Без обзира на којем радном листу је графикон, он ће бити ухваћен и сачуван у ПДФ -у.

У коначном ПДФ -у биће само један графикон по страници.

Суб ПринтЦхартсОбјецтсТоПДФ () 'СУБРОУТИНЕ: ПринтЦхартсОбјецтсТоПДФ' ДЕВЕЛОПЕР: Риан Веллс 'ОПИС: Комбинујте све објекте графикона у један ПДФ Дим вс Као радни лист, всТемп Као радни лист Дим цхрт Као ЦхартОбјецт Дим тп Као Дуг Димни формат датотеке Датотека стр. = Нетачно Сет всТемп = Схеетс.Адд тп = 10 Витх всТемп Фор еацх вс Ин АцтивеВоркбоок.Ворксхеетс Иф вс.Наме = всТемп.Наме Затим иди на нектвс: За сваки цхрт У вс.ЦхартОбјецтс цхрт.Цопи всТемп.Ранге ("А1") .ПастеСпециал Селецтион.Топ = тп Селецтион.Лефт = 5 Иф Селецтион.ТопЛефтЦелл.Ров> 1 Затим АцтивеСхеет.Ровс (Селецтион.ТопЛефтЦелл.Ров) .ПагеБреак = клПагеБреакМануал Енд Ако је тп = тп + Селецтион.Хеигхт + 50 Нект вс Заврши са 'Упит фор саве лоцатион стрфиле = "Цхартс" & "_" _ & Формат (Нов (), "ииииммдд \ _ххммсс") _ & ".пдф" стрфиле = АцтивеВоркбоок.Патх & "\" & стрфиле мифиле = Апплицатион.ГетСавеАсФиленаме _ (ИнитиалФилеНаме: = стрфиле, _ ФилеФилтер: = "ПДФ датотеке ( *.пдф), *.пдф", _ Наслов: = "Одабери фол дер и назив датотеке за чување као ПДФ ") Ако је моја датотека Нетачна Затим" сачувајте као ПДФ всТемп.ЕкпортАсФикедФормат Тип: = клТипеПДФ, Назив датотеке: = мифиле, Квалитет: = клКуалитиСтандард, _ ИнцлудеДоцПропертиес: = Труе, ИгнореПринтАреас: = Фалсе, = Фалсе, = Фалсе, Труе 'Елсе' МсгБок "Није изабрана датотека. ПДФ неће бити сачуван ", вбОКОнли," Но Филе Селецтед "Енд Енд Иф Апплицатион.ДисплаиАлертс = Фалсе всТемп.Делете Витх Апплицатион .СцреенУпдатинг = Труе .ДисплаиАлертс = Труе Енд Витх Екит Суб Енд Суб

Ако имате питања, поставите их у одељку за коментаре, где ћемо вас Риан и ја чекати.

Можда ће вам се допасти и следећи Екцел водичи:

  • Како уградити ПДФ датотеку у Екцел радни лист.
  • Екцел ВБА петље: За следеће, Урадите док, Урадите до, За сваку (са примерима).
  • Како снимити макро у програму Екцел
  • Како комбиновати више радних свезака у једну Екцел радну свеску.
  • Како покренути макро у програму Екцел.
  • Како да креирате и користите Екцел програмски додатак.
  • Руковање грешкама програма Екцел ВБА
  • Поделите сваки Екцел лист у засебне датотеке
  • Како увести КСМЛ датотеку у Екцел | Претворите КСМЛ у Екцел

О аутору: Риан Веллс је нуклеарни инжењер и професионални ВБА програмер. Објављује своје лако разумљиве Екцел ВБА водиче како би помогао другима да напишу боље макрое. Осим што подучава ВБА, Рајан је водећи програмер неколико додатака за Екцел. Његове водиче можете пронаћи на ВеллсР.цом.

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave