Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
... jak automaticky ukládat (tisknout) excelovské sešity do pdf ve VBA Microsoft Excel ...
Doplněno: 5.6.2013 - na základě dotazů.
Máte-li potřebu z Excelu exportovat výsledky vaší práce, ale nechcete použít originální soubor (v *.xls, *.xlsx předávat výpočty) ani používat tisk na papír (šetříte lesy a vaší kapsu). Můžete využít export (ukládání, tisk) do formátu *.pdf.
Pro export vyžijeme v Excelu VBA makro. (příklady jsou pro Excel 2007 a Excel 2010, které mají tutu možnost integrovaou) .
Poznámka: Pokud máte Excel 2007, musíte si podporu pro tisk do *.pdf zdarma nainstalovat z webu Microsoftu.
Google nachází složité postupy tisku přes Adobe Reader nebo externí pdf tiskárnu, u čehož vidím nevýhodu v nutnosti instalovat další program (mnohdy placený). Proto doporučuji využít přímo samotný Microsoft Excel (2007 a vyšší) .
Pro export (uložení, tisk) využijeme ExportAsFixedFormat. V článku se dozvíte:
Jak vypadá syntaxe ExportAsFixedFormat
ExportAsFixedFormat(Type, Filename, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish, FixedFormatExtClassPtr)
Popis:
Otestujeme si na jednoduchém příkladu, že nám vše chodí.
Sub TiskDoPdf()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"E:\pokusy-www\excel-VBA-tisk-do-pdf.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
Toto makro vytvoří v adresáři E:\pokusy-www\ soubor: excel-VBA-tisk-do-pdf.pdf, takže ve svém PC musí cesta existovat, stejně jako povolený přístup zápisu (VBA makro nekontroluje a není ošetřeno nesplenění)
Sub TiskDoPdf 2()
Sheets(Array("List1", "List2")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"E:\pokusy-www\excel-VBA-tisk-do-pdf.pdf", Quality:=_
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
Jak vytisknout (exportovat) celý sešit.
ActiveWorkbook.ExportAsFixedFormat
Jak změnit kvalitu exportu (velikost výsledného souboru):
Quality:= xlQualityMinimum
Pokud po exportování nechcete exportovaný (ukládaný) soubor zobrazit. Má ze následek část kódu:
OpenAfterPublish:=False
Chcete-li název exportovaného souboru dynamicky nastavovat, nepříklad hodnotou v buňce A1.
Adresaář je pevně zadán d:\dokumenty\
a = Range("A1").Text
soubor = "d:\dokumenty\" & a & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
soubor, Quality:=_
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Jméno je složeno a doplněno o datum
FJmeno = Sheets("List1").Range("A1").Text
FDoklad = Sheets("List1").Range("A2").Text
a = FJmeno & FDoklad & Format(Now, "yyyymmdd")
Aktuální adresář:
' soubor s makrem musí být uložen,
' jinak se cesta nezobrazí, což je určitě jasné ;)
CestaAdresare = ThisWorkbook.Path
a = Range("A1").Text
soubor = CestaAdresare & "\" & a & ".pdf"
' následujícím řádkem můžete zkontrolovat spravnou cestu s názvem
' MsgBox (soubor)
A jaké jsou Vaše zkušenosti s exportem (ukládáním)?
Článek byl aktualizován: 19.09.2020 11:07
Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.
Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.
Přidáno: 07.01.12 05:41
Super, ale ještě by to chtělo, jestli to Excel umí, ten soubor *.pdf poslat mailem někam@seznam.cz.Nejlépe bez Outloku.
Přidáno: 07.01.12 07:52
To František: Excel to umí. Jak na to bez Outloku je popsáno třeba na http://www.rondebruin.nl/cdo.htm
Přidáno: 07.01.12 18:46
Díky asi to fakt půjde,ale ne mě, neumím a nerozumím (učil jsem se ve škole akorát rusky,samouk doma německy,ale anglina nic moc): Pochopil jsem akorát kam dát mail.adresu odesilatele a adresáta.jinak nevím co a kam a jak!.Ale i tak dík.Kdyby byl náhodou čas a chtělo se Vám náhodou pomoci (f1f@seznam.cz).
Sub CDO_Mail_Small_Text()
Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
' Dim Flds As Variant
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
' iConf.Load -1 ' CDO Source Defaults
' Set Flds = iConf.Fields
' With Flds
' .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
' .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
' = "Fill in your SMTP server here"
' .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
' .Update
' End With
strbody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
"This is line 2" & vbNewLine & _
"This is line 3" & vbNewLine & _
"This is line 4"
With iMsg
Set .Configuration = iConf
.To = "ron@debruin.nl"
.CC = ""
.BCC = ""
.From = """Ron""
Přidáno: 08.01.12 10:54
To František: Osobně využívám Objekt Outlook, kde je již vše nastaveno (smtp server). Nemůžete využít alespoň Outlook Express? Budu-li mít trochu čas zkusím se podívat jak zprovoznit odesílání emailu s přílohou i bez Outlooku.
Přidáno: 12.02.12 10:28
zdarvim vas.. makra neovladam.. lze nejak toto makro upravit tak aby nazev souboru se menil podle bunky v listu? příklad d:\dokumenty\soubor-xxxxxx.pdf kde xxxxxx se meni podle obsahu nejake bunky. Diky za odpoveded.
Přidáno: 12.02.12 14:04
To Roman: Lze jednoduše
a = Range("A1").Text
soubor = "d:\dokumenty\soubor-" & a & ".pdf"
´ ... Filename:= soubor ....
Přidáno: 12.02.12 21:38
Pane Lasák, úžasné stránky. Přesně toto dnes zkouším. Jen potřebuji ještě zpětnou vazbu, tj aby makro zkontrolovalo, zda se již nevyskytuje soubor téhož jména. Používáme jeden soubor, kde se mění jen několik základních údajů, ten se vytiskne, ale musí zůstat kopie pro kontrolní účely. Díky
Přidáno: 13.02.12 08:57
To Raty: viz. http://office.lasakovi.com/excel/vba-soubory/excel-vba-soubor-slozka-adresar/
Přidáno: 13.02.12 11:35
Moc děkuji:-) Musí ty vaše stránky pořádně prohledat .
Přidáno: 15.02.12 09:12
Dobrý den,
shora uvedené makro převodu listu excel do formátu .pdf používám v jednom komplikovanějším projektu. Potřeboval bych ale poradit, a o to prosím,zda by bylo možné zobrazení dokumentu, vyvolané touto částí kódu:
OpenAfterPublish:=True
pozdržet s tím, že by mezi převodem listu excel a jeho zobrazením v novém formátu byla vložena zpráva pro uživatele.
Pro názornost, oč mi jde:
Sub TiskDoPdf 2()
Sheets(Array("List1", "List2")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"E:\pokusy-www\excel-VBA-tisk-do-pdf.pdf", Quality:=_
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
Zde běh makra pozastavit na dobu, než uživatel přečte vloženou zprávu (MsgBox) čítající cca 3 řádky, poté teprve zobrazit dokument .pdf
OpenAfterPublish:=True
End Sub
Díky za pomoc.
Přidáno: 15.02.12 10:40
To skaj:
OpenAfterPublish:=True
je součásti ExportAsFixedFormat (exportu do *.pdf). Nemůžete zobrazit hlášku napřed:
Sheets(Array("List1", "List2")).Select
MsgBox "Text"
Až poté publikovat do *.pdf se zobrazením daného dokumentu?
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"E:\pokusy-www\excel-VBA-tisk-do-pdf.pdf", Quality:=_
xlQualityStandard, IncludeDocProperties:=True, OpenAfterPublish:=True
Přidáno: 15.02.12 16:55
Díky za rychlou reakci. Myslel jsem si to. Problémem celého projektu je, že hláška nemůže předcházet převodu formátu, takže je prozatímně umístěna až za převod listu (do .pdf). Na základě hlášení by však měl uživatel reagovat na text dokumentu PDF, což je problém: jakmile se převod dokončí, a to je mnohdy velmi rychle, překryje nově vzniklý otevřený dokument hlášení MsgBoxu. Protože uživatel musí reagovat na text PDF dokumentu, nemohu jej nechat po převodu uzavřený: OpenAfterPublish:=False Takže nastává manipulace s otevřeným dokumentem (shození na lištu atp.), dočtení hlášení MsgBoxu, otevření dokumentu .pdf, kontrola dle hlášení atp..atp.
Přidáno: 15.02.12 17:10
Dodatek:snad by pomohlo nějaké řešení, které by zaručilo, aby bylo hlášení MsgBoxu vždy "nahoře", tedy viditelné i po otevření převedeného dokumentu. Každopádně díky za zájem o položený dotaz.
Přidáno: 15.02.12 17:59
To skaj: zajimavý dotaz, třeba mě nebo někoho z čtenářů něco napadne.
Přidáno: 22.03.12 08:25
Prosím jak udělat kód, abych mohl vytisknout oblast z jiného listu, než kde mám tlačítko.
Takto jak to mám já, to vytiskne pouze z aktuálního listu (ActiveSheet).
Děkuji moc.
Private Sub CommandButton1_Click()
'Tisk
ActiveSheet.PageSetup.PrintArea = "$B$9:$G$19"
'ActiveWindow.SelectedSheets.PrintPreview
Application.Dialogs(xlDialogPrint).Show
End Sub
Přidáno: 22.03.12 16:38
Dodatek k předešlému: udělal jsem to takto. Jenže já nechci, aby se na obrazovce zobrazil ten list z kterého se tiskne. Mělo by to být tak, že se klikne na tlačítko a objeví se dialog pro tisk, jak je napsáno, kde si může člověk dát náhled. A ještě navíc bych chtěl, aby ten list byl skrytý a pouze pro tisk se zviditelnil a potom zase zneviditelnil.
Private Sub CommandButton1_Click()
'Tisk
List13.Activate
ActiveSheet.PageSetup.PrintArea = "T!$B$9:$G$19"
'ActiveWindow.SelectedSheets.PrintPreview
Application.Dialogs(xlDialogPrint).Show
End Sub
Přidáno: 22.03.12 17:23
Ještě prosím o pomoc s tímto? Jak udělat kód ve VBA, aby se jedna tabulka pro tisk zobrazila vícekrát na straně. a) Chci tisknout jednu tabulku, která třeba zabere 1/3 strany A4, ale pro úsporu místa bych ji potřeboval nakopírovat pod sebe vícekrát (potřebuji více stejných kopíí, které se potom nastříhají). b) Chci tisknout více různých tabulek, které se nachází na různých místech jednoho listu.
Přidáno: 26.03.12 18:32
To Jaroslav Petrovský: Tisk z jiného listu
Sheets(Array("List11", "List12")).Select
List se dá zobrazi a skrýt pomocí VBA kódu (změní se vlastnost Visible:
Sheets(1).Visible = xlSheetHidden
Tohle sjem nikdy neřešil. Osobně bych na dalším listě rozkopíroval danou tabulku.
Přidáno: 26.03.12 18:41
To Jaroslav Petrovský: Nastavení oblasti tisku
´Sheet1.PageSetup.PrintArea
´například:
ActiveSheet.PageSetup.PrintArea = "$B$4:$H$16"
Připravím článek, jak nastavit a přizpůsobit oblast tisku.
Přidáno: 30.03.12 00:40
Dobrý den, tohle mi opravdu hodně pomohlo! Jenom mám takový problém, protože bych potřeboval přeskládat listy které se mi budou tisknout do onoho pdf. Aktuálně mi to bere listy tak jak jdou za sebou... P.
Přidáno: 30.03.12 16:34
To Pavel Š: Jinak zajimavý dotaz. Doporučuji přeskládat listy:(
Sheets("List2").Select
Sheets("List2").Move Before:=Sheets(1)
Zkoušel jsem, a funguje nadefinovat oblastí pomocí Select, ale neprojde a prostě Excel tiskne jak jsou listy za sebou v sešitě Excel
Sheets(Array("List3", "List2", "List1")).Select
Přidáno: 30.03.12 20:48
Vyzkoušel jsem přeskládání listů ve VBA a funguje to skvěle. Netušil jsem, že to jde :-). Moc děkuji!
Přidáno: 01.04.12 09:02
To Pavel Š. rádo se stalo.
Přidáno: 06.04.12 22:57
Děkuji moc, trápím se, trápím a nejde to.
Tisknu pomocí tlačítka ze sešitu pojmenovaného 3R (sešit 21). A nevím jak tam zakomponovat to, aby se mi to nikam nepřepínalo a nic neukazovalo, jak to kopíruje apod. Děkuji moc za pomoc
Co je to a musí to tam být:
ActiveWindow.SmallScroll Down:=6
Sub tlačítko307_Klepnutí()
'copy
Sheets("T").Select
Range("B566:C579").Select
Selection.Copy
Range("M461:N474").Select
ActiveSheet.Paste
Range("M476:N489").Select
ActiveSheet.Paste
Range("M491:N504").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=6
Range("M506:N519").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("3R").Select
'Tisk
List13.Activate
ActiveSheet.PageSetup.PrintArea = "T!$K$461:$R$519"
'ActiveWindow.SelectedSheets.PrintPreview
With ActiveSheet.PageSetup
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0.196850393700787)
.BottomMargin = Application.InchesToPoints(0.196850393700787)
.HeaderMargin = Application.InchesToPoints(0.31496062992126)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = False
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlPortrait
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Application.Dialogs(xlDialogPrint).Show
Range("M461:N519").Select
Selection.ClearContents
Range("M461:N461").Select
List21.Activate
End Sub
Přidáno: 11.04.12 21:31
To Jaroslav Petrovský:
Application.ScreenUpdating = True
....
Application.ScreenUpdating = False
nepomůže?
Přidáno: 12.04.12 08:30
ne - viz http://www.uschovna.cz/zasilka/H1395GG6TCGD5FJK-7UB děkuji moc za pomoc
Přidáno: 15.04.12 18:06
To Jaroslav Petrovský: Co přesně potřebujete? Osobně bych makro napsal jinak.
Přidáno: 28.06.12 14:09
Zdravim, Mozte mi prosim poradit ako spravit, - aby sa ma Excel pri exportovani do PDF spytal na umiestnenie? - aby neexportoval do pdf pomocou nejakych podpornych programov? (adobe reader je OK) Dakujem Pekne. Peter
Přidáno: 28.06.12 16:21
To Peter: Přes InputBox.
Přidáno: 23.08.12 14:48
Dobrý den, chtěl bych se zeptat, jestli je možné toto makro využít tak, že by se soubor exportoval do pdf až po stisknutí tlačítka na konci formuláře. Například dokončit a uložit... Děkuji
Přidáno: 23.08.12 17:43
To Filip: Jasně stačí kód prezentovaný vložit do toho tlačítka.
Přidáno: 20.09.12 09:38
Dobrý den, neumím přijít na to jak z makra nechat vytisknout externí pdf. Potřebuji totiž u tisku donutit uživatele, aby si vytiskl i další soubor, který je ovšem v pdf. Umíte mi poradit prosím? Děkuji
Přidáno: 20.09.12 18:18
To Miloš Gallovič: Gogle našel tento postup
myfile = "c:\documents\" & range("a1").value & ".pdf"
ShellExecute 0, "print", myfile, vbNullString, 0, SW_SHOWNORMAL
viz http://www.vbforums.com/archive/index.php/t-481280.html nezkoušel jsem
Přidáno: 21.09.12 07:48
Super, děkuji. Po boji jsem dal dohromady toto (funguje to dobře, pouze zůstane po ukončení otevřený acrobat reader):
#If VBA7 Then
Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#Else
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If
Sub tisk()
Dim RetVal As Long
RetVal = ShellExecute(0, "print", ThisWorkbook.Path & "\soubor.pdf", vbNullString, 0, SW_SHOWNORMAL)
If RetVal < 32 Then
MsgBox "U tisku souboru nastala chyba. Prosím vytiskněte manuálně."
End If
End Sub
Přidáno: 21.09.12 16:30
To Miloš Gallovič: Díky za zveřejnění funkčního kódu, určitě se bude někomu dalšímu hodit.
Přidáno: 04.10.12 08:56
Dobrý den, chtěl bych se zeptat, jestli je pomocí makra možné soubor ukončit a uložit pomocí tlačítka do pdf. Potřeboval bych to ale udělat přes tisk a pdf creator. Poté co by se nový soubor uložil, potřeboval bych, aby se excel zavřel. podle vašich rad zde jsem už zvládl jak to udělat přes uložení do pdf, ale přes tisk mi to nechce jít. Děkuji
Přidáno: 04.10.12 16:31
To Filip Klus: Jak tisknout přes pdf Creator je řešeno: http://www.vbaexpress.com/forum/showthread.php?t=14397 Ukončení Excelu přes Application.Quit jsem popsal http://office.lasakovi.com/excel/vba-application/ukonceni-aplikace-excel-vba/
Přidáno: 05.10.12 06:15
Dobrý den, je možnost vytisknou pouze oblast buněk? zkoušela jsem několik možností... výběr se sice označí, ale uloží se mi vždyy celá stránka
Přidáno: 05.10.12 09:48
To Pavel Lašák: Díky, ukončení jsem zvládl, to bylo celkem snadné, ale to uložení přes PDF creator je i s návodem nad moje síly. Přesto děkuji za radu.
Přidáno: 15.10.12 19:28
Dobrý den,
Rád bych Vás požádal o radu s následujícím problémem. Použil jsem Vámi publikované makro pro export do PDF, ale vždy po stisknutí tlačítka se objeví chybové hlášení: Run-time error 1004" Dokument je otevřen nebo došlo při ukládání k chybě.
Můžete mi prosím poradit, co je za problém.
Děkuji
Sub Save()
Sheets("List2").Select
a = Range("B5").Text
soubor = "C:\users\projekty\soubor-" & a & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=soubor, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub
Přidáno: 15.10.12 21:29
To Petr Sukalovský: Zkuste si do MsgBox vypsat celou cestu, zda je správná.
...
soubor = "C:\users\projekty\soubor-" & a & ".pdf"
msgbox (soubor)
...
Přidáno: 17.10.12 21:27
Použil jsem Vaší radu a zdá se, že cesta je správně, v tom asi problém nebude.
Přidáno: 18.10.12 05:29
To Petr Sukalovský: Kterou verzi Excelu máte 2010? Předpokládám, že do složky přístup je a soubor tohoto jména neexistuje. Když soubor uložíte ručně projde? Když zkusíte uložit do jiné složky?
Přidáno: 22.10.12 18:10
Ano, používám Excel 2010. Ruční uložení funguje, pokud zkusím ukládat pomocí makra do jiné složky, objeví se stejný problém.
Přidáno: 23.10.12 17:33
To Petr Sukalovský: Do stejné složky makrem funguje? Osobně se mi tento problém nenaří nasimulovat, zouším ukládat i na jiný disk a funguje.
Přidáno: 20.11.12 15:37
dobrý den, co dělat když procedura ActiveSheet.ExportAsFixedFormat nefunguje, nevím proč, ale pouze na jednom PC kde je v Excelu 2007 verze VB 6.5 1020, jinak ostatní PC mají VB 6.5 1054 a na nich je procedura funkční. Je chyba v nějakém nastavení, chybějící knihovna např.? Nebo lze ukládat do PDF jiným způsobem třeba přes SaveAs, tahle metoda tam funguje. díky
Přidáno: 20.11.12 16:58
To tomas: Do Office 2007 se musí doinstalovat doplněk uložit jako pdf http://www.microsoft.com/cs-cz/download/details.aspx?id=7 zkuste zkontrolovat zda je nainstalováno. Doplněk je zdarma.
Přidáno: 03.12.12 20:33
Dobrý den, chtěl bych se zeptat, bylo by možné upravit makro tak, aby ukládalo pdf soubor podle toho na jakém počítači zrovna s dokumentem pracuji? Jde mi o to, že pokud jsem na jiném počítači, tak na něm je jiné cesta pro uložení na sdílenou složku. předem děkuji za odpověď.
Přidáno: 04.12.12 20:24
To Tom: Jinou cestu mylíte jiný disk? F:, S:? Pokud je totiž pevně zadaná lze využít S:\pokusy-www\excel-VBA-tisk-do-pdf.pdf
Přidáno: 04.12.12 21:58
Kdybych zmenil jen disk tak bych nevyresil problem s ukladanim na druhem pocitaci. Pouzivam jako spolecnou slozku Dropbox a potreboval bych makro nastavit tak, ze kdyz pracuju s dokmentem na stolnim pocitaci, tak aby ulozil pdf na C:\user\tom\dropbox a na notebooku by jej ulozil na C:\verejne\dropbox.
Přidáno: 05.12.12 06:13
To Tom: Napadá mě využít jméno PC a přes Case (nebo podmínku) určit složku.
Přidáno: 06.12.12 20:28
Prosím ješte o pomoc jak by ten kód měl vypadat. Zkoušel jsem to někde najít, ale nepovedlo se :-( předem děkuji.
Přidáno: 27.02.13 10:34
Zdravím,
rád bych se zeptal, jak by vypadala synaxe, kdybych si chtěl nastavit jméno výstupního souboru podle obsahu v nějaké buňce
"C:\Test\
Přidáno: 27.02.13 17:36
To Tom: Viz článek o Case Select http://office.lasakovi.com/excel/vba-teorie-zaklady/select-case-excel-vba/
Přidáno: 27.02.13 17:41
To Lastman: Například:
FJmeno = Sheets("List1").Range("A1").Text
FDoklad = Sheets("List1").Range("A2").Text
JmenosDatumem = FJmeno & FDoklad & Format(Now, "yyyymmdd")
Více v článku: http://office.lasakovi.com/excel/vba-soubory/SaveAs-metoda-ulozit-jako/
Přidáno: 23.05.13 07:54
Dobrý, předem děkuji za Vaše stránky. dali mi mnohem více než nějaké knížky a lekce. Rád bych se ale zeptal na problém, když se mi název pdf souboru tvoří z buňky, jejíž text občas obsahuje např lomítko. jde tedy nějak ošetřit aby nevyskakovala chyba a třeba se to lomítko ignorovalo popř. zaměnilo?
Přidáno: 23.05.13 16:07
To Vašek: Jde třeba nahratit lomítko / třeba mínus - pomocí funkce NAHRADIT (REPLACE)
HodnotaPred = Range("A1").Value
MsgBox HodnotaPred
HodnotaPo = Replace(HodnotaPred, "/", "-")
MsgBox HodnotaPo
Přidáno: 04.06.13 20:33
Ahoj, prosím o radu, upravil jsem si makro tak, aby se mi soubor PDF ukládal do složky kde je aktuální soubor, ale makro soubor neuloží, pouze zobrazí s název NEPRAVDA.pdf
Sub TiskDoPDF2()
ActiveSheet.Select
JmenoSouboru = Range("A1").Text
soubor = CestaVcetneNazvuSouboru = CestaAdresare & " \ " & JmenoSouboru & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=soubor, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
Prosím o radu kde je chyba.
Děkuji.
Přidáno: 05.06.13 16:19
To zEjn: 1) Není definováno
CestaAdresare
2) je použito 2x =
soubor = CestaVcetneNazvuSouboru =
možno nahradit
soubor = JmenoSouboru & ".pdf"
Připadně doplnit o cestu kam se má ukládat
Přidáno: 05.06.13 16:38
Pravě že bych potřeboval aby cesta byla proměnná a vždy se PDF uložilo do adresáře kde je uložený excel soubor a to jsem chtěl nadefinovat příkazem CestaVcetneNazvuSouboru. Podadíte mi jak toto zadat? Děkuji.
Přidáno: 05.06.13 18:16
To zEjn: Aktuální adresář, ve kterém je soubor s makrem.
CestaAdresare = ThisWorkbook.Path
a = Range("A1").Text soubor = CestaAdresare & "\" & a & ".pdf"
' tímto řádem můžete zkontrolovat MsgBox (soubor)
Doplnil jsem článek.
Přidáno: 05.06.13 18:24
Sub TiskDoPDF2()
ActiveSheet.Select
a = Range("A1").Text
soubor = CestaAdresare & "\" & a & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=soubor, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
Excel mi vyhazuje chybu 1004, omlouvám se, ale co zde mám špatně?
Děkuji.
Přidáno: 05.06.13 19:49
To zEjn: Chybí tam ten aktuální adresář vložit do CestaAdresare jak jsem psal výše
ActiveSheet.Select
CestaAdresare = ThisWorkbook.Path
a = Range("A1").Text
soubor = CestaAdresare & "\" & a & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=soubor, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Přidáno: 06.06.13 16:10
Super, už to jde. Děkuji.
Přidáno: 09.06.13 22:10
Dobrý deň. Prosím Vás potrebujem pomôcť. Toto ukladanie do PDF by mi super pomohlo. Založil som na tom a urobil celý projekt. No na konci som si všimol, že absolutne nedodržuje nastavenie strany. Okraje, hlavičku... Čiže ak si dám (Office2013) Ctrl+P a tam Nastavenie strany, kde si nastavím napr. 90% mierku, a okraje, tak vidím že mi všetko na tlačiarni vojde krásne tak ako má. ALe keď to dám cez túto funkciu do PDF, tak mi tam dá nejaké predvolené hodnoty alebo čo, a stránka sa nevojde na stráku, cele je to poposúvané, a konce tabuliek sú na ďalších stranách. Veľmi by mi pomohlo, aby sa nejako natvrdod dal nastaviť formát strany, okraje, hlavička, a nezáležalo na tom, či "tlačím" cez túto PDF funkciu alebo akúkoľvek inú tlačiareň na akomkoľvek PC. Ďakujem.
Přidáno: 31.07.13 15:00
Jsem totální začátečník, takže vůbec nevím, kde mám chybu... mohl byste mi prosím pomoci? Z diskuse jsem pochopil, že aktuální adresář vložit do CestaAdresare. Tomuto úplně nerozumím, protože CestaAdresare není statická, nebo je? Můžeme mi prosím konkrétně napsat, co mám udělat? Moc děkuji :)
Sub tiskpdf()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
CestaAdresare = ThisWorkbook.Path
a = Range("H3").Text
soubor = CestaAdresare & "\" & a & ".pdf"
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
Přidáno: 06.09.13 13:27
Dobrý den, nemáte tušení jak Excel donutit při exportu přes vba použít nastavení s ISO19005_1? Děkuji, Otes
Přidáno: 06.09.13 17:32
To Otes: Zpaměti bohužel ne.
Přidáno: 07.09.13 16:48
Tak to vypadá, že Excel jako jediný z Office programů má osekané možnosti exportu do PDF (fce ExportAsFixedFormat). A zbytek nastavení přebírá z konfigurace Excelu, tak aspoň tak.
Přidáno: 30.12.13 10:49
Dobrý den, chtěl bych se zeptat, jak ošetřit, již otevřený soubor .pdf mám toto makro a když je daný soubor otevřený, zahlásí chybu. Chtěl bych Vás požádat o radu, jak zkontrolovat otevření souboru a jeho následné zavření Sub TiskDoPdf() CestaAdresare = ThisWorkbook.Path Sheets("zaznam").Select nazev = Range("S6").Text ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ CestaAdresare & "\" & nazev & ".pdf", Quality:= _ xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=True End Sub děkuji mnohokrát
Přidáno: 06.01.14 11:03
Dobrý den, mám makro, které ukládá list do PDF. Vše funguje dobře, akorát mám na listech vložené obrázky z corelu a některé z nich jsou v PDF jinak posunuté, širší než v excelu atd. Když však uložím list do PDF ručně, tak je vše v pořádku. Chybí ještě v kódu nějáké nastavení ? Děkuji
Přidáno: 03.07.14 07:16
Dobrý den, a šlo by také nastavit makro aby tisk proběhl tak, že jednotlivé listy se uloží do samostatných PDF souborů (např. pod jejich názvy)? Předem díky
Přidáno: 07.05.15 21:15
Dobrý den, jsem začátečník v makrech a narazil jsem na Váš web, jsou zde pro mě užitečné informace. Obracím se na Vás s prosbou o radu, četl jsem článek o ukládání sešitu do pdf. Lze udělat, aby mi po kliknutí na tlačítko vyskočil formulář, kde si zaškrtám listy, které chci, aby byli v pdf souboru a následně se vygeneroval pdf soubor jen s těmito listy? Předem děkuji.
Přidáno: 12.05.15 11:17
Většina s emi povedla už vyřešit jen nevím jak v tomto příkazu. Sheets(Array("List1", "List2")).Select odznačit pokažé jiné listy a jiný počet, zkoušel jsem to přes pole, ale když zůstal některý index pole prazdný (nepřiřadil se mu název listu) tak celá program nefungoval a házelo to chybu, můžete poradit co s tím nebo jak to řešet? Děkuji
Přidáno: 15.05.15 07:43
Dobrý den, mám ukládání do excelu, vše běží. Jen se chci zeptat na to dynamické jméno. Potřebuji, aby datum, které je v buňce I2 se promítlo do názvu takto: SOUBOR_RRMMDD.pdf. Nevím jak Děkuji
Přidáno: 27.05.15 10:27
Dobrý den, chtěl bych se zeptat, jak nastavit ve VBA export oblasti do PDF. Celý sešit, list, stránky od-do nejsou problém, ale na export např. buňky A1:M26 jsem nepřišel.... Předem díky za radu
Přidáno: 04.06.15 18:12
Dobrý den, potřebovala bych ve svém excel souboru rozchodit následující funkci: Z více listů vyhledat jméno např. "Novak" a v novém listě by se zobrazila tabulka s výsledky, zobrazující všechny řádky,kde se toto jméno vyskytuje. Na jednom z listů by byl uveden "Novak/ Stary" a tento vysledek by se měl také zahrnout do výsledné tabulky. Tady předpokládám, že bude potřeba zakomponovat funkci "*" buňka "*" pro hledání části slova. Lze něčeho takové v excelu docílit? Děkuji
Přidáno: 25.06.15 15:14
Dobrý den, toto makro je báječné, ale potřebuju to rozvinout. V listu máme možnost vybrat pomocí "Data validation" více zemí, k těm se vždy dohledají správná čísla v tabulce. Potřebovala bych, aby se tato jedna tabulka z jednoho listu vygenerovala jako více tabulek (jedna ke každé zemi) do jednoho PDF souboru. Děkuju předem
Přidáno: 30.07.15 11:15
Dobrý den, narazil jsem na naprosto stejný problém jako pan Petr Sukalovský - program se při tisku do PDF zastaví s chybou 1004 a textem jak uvádí pan Petr. Pikantní na tom celém je, že program odesílá dávku e-mailů s onou vygenerovanou přílohou a na této chybě se zarazí asi tak 1x za 1000 'tisků'. Napadlo mě, zda nedochází někdy ke kolizi při ověření dokončeného zápisu na disk - PDF soubor, při jehož tisku vznikla chyba totiž na disku uložený je, jenom program se zastaví a pochopitelně již neodešle e-mail. Nešlo by to ošetřit krátkým zpožděním? Pokud ano, kam je vložit? Předem mnohokrát děkuji za radu i za Vaše stránky, které jsou skutečnou studnicí vědomostí.
Přidáno: 17.09.15 21:29
Zdravím, tak jsem si vytknul úkol, kdy pomocí hromadné korespondence mám PDF s 316 stranami. Kdy jeden celek jsou dvě stránky a toto se opakuje pro různé adresáty. Zde bych pomocí VBA vytvořil makro, které by tisklo po dvou listech do PDF a uložilo podle adresáta. Již mám spojeno do jednoho dokumentu, nebo nevím jak šáhnout do Excelu pro hodnotu. Popisovaná metoda přes ExportAsFixedFormat nějak nechce fungovat. - hlásí chybu i když mu zatím jen pokusně definuji název dokumentu - nevím, jak adresáta vykousnout....v Excelu je to pohodička, ale ten Word je záhadou :) Díky moc..
Přidáno: 01.12.15 10:47
Zdravím, v prvom rade FAKT SUPER STRÁNKY!!! Mám problém s pätou pri tlači, kde chcem aby mi vložilo aktuálna strana z počtu strán. Keď krokujem makro tak to pekne vytvorí a pri tlači je všetko OK tak ako som to v makre zapísal. Ale akonáhle spustím makro, vôbec sa mi to neukáže. Keď tak mi napíšte na vladimir.ciljak@gmail.com a ja vám pošlem súbor spolu s makro na otestovanie. vyzerá to ako keby to makro tak rýchlo prebehne, že odignoruje daný zápis. ďakujem za každú pomoc...
Přidáno: 08.01.16 08:56
Dobrý den,narazila jsem na stejný problém jako Petr Sukalovský a Vladimír Steffan, ačkoliv mi automatický tisk do pdf nejprve bez problému běhal, při opakovaném spouštění (po smazání předchozí verze souboru) mi po generování pár pdf souborů makro spadne s chybou „Run-time error '1004' Dokument nebyl uložen…“. Našli jste prosím řešení, jak problém odstranit? Děkuji.
Přidáno: 16.05.16 10:18
Pro všechny, kdo chtějí tisknout z excelu pomocí PDFcreator ver. 2. Ale POZOR! Předtím musíte ve Visual Basic, Tools, References zaškrtnout PDF Creator !!!
Sub TiskPDF()
Dim qPDF As PDFCreator.Queue, pJ As PDFCreator.PrintJob
Dim wshNetwork As Object
Dim sPDFOut As String
sPDFOut = ActiveWorkbook.Path & "\PDFxxx.pdf"
Set qPDF = New PDFCreator.Queue
qPDF.Initialize
Set wshNetwork = CreateObject("WScript.Network")
wshNetwork.SetDefaultPrinter "PDFCreator"
ActiveWindow.SelectedSheets.PrintOut
qPDF.WaitForJob (10)
Set pJ = qPDF.NextJob
With pJ
.SetProfileByGuid ("DefaultGuid")
.ConvertTo (sPDFOut)
End With
If (Not pJ.IsFinished Or Not pJ.IsSuccessful) Then MsgBox "Nelze vytvořit soubor:" & sPDFOut
qPDF.ReleaseCom
Set qPDF = Nothing
Set wshNetwork = Nothing
Set pJ = Nothing
End Sub
Přidáno: 18.05.16 14:20
Neporadil by někdo jak exportovat (tisk) do .pdf na základě podmínky? Tzn.: Když buňka A1 = ANO, tak vygeneruj pdf listu 1, Když buňka A1 = NE, tak vygeneruj pdf listu 2.
Přidáno: 08.06.16 11:46
Dobrý den, při tvorbě makra nahráváním makra pro tisk listu, který je vícestránkový, je zápis makra stejný, ať zvolím jednostranný či oboustranný tisk. Pokud při tvorbě makra nahráváním navolím oboustranný tisk, tak po spuštění makra je tisk správný - oboustranný. Při navolení jiné výchozí tiskárny, podporující též oboustranný tisk se to vytiskne jednostranně. Lze, případně jak, napsat do makra příkaz k oboustrannému tisku? Děkuji
Přidáno: 18.08.16 06:32
excel macroto pdf filename can be download and create the best product for your product, try this convert an excel file to pdf for free excel macroto pdf filename on http://www.pdfcomponent.com/online/convert-excel-to-pdf/.
Přidáno: 30.08.16 16:05
Dobrý den, prosím o pomoc s následující hláškou (viz. link) v kódu: http://i.stack.imgur.com/cqmPhm.jpg Sub Kalkulace() ' ' Kalkulace Makro ' ' Application.ScreenUpdating = False Sheets("Kalkulace").Visible = 1 Sheets("Kalkulace").Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ True Sheets("Poptávka").Select Sheets("Kalkulace").Visible = 0 Application.ScreenUpdating = True End Sub
Přidáno: 02.09.16 09:40
Dobrý den, žádám o radu: mám v daném dokumentu makro na uložení pod jménem podle obsahu buňky. Zároveň chci, aby výstupní dokument byl ve formátu .txt avšak samotný soubor byl bez jakékoliv koncovky.
Přidáno: 02.12.16 13:32
Dobrý den, chci se zeptat jak vytisknu pojmenovanou oblast do PDF? Díky
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2024 |