Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem (polo)Automatické vyplňování pdf formuláře daty z Excelu.

Mějme zdrojová data v tabulce *xls. Vedle toho existuje (editovatelný) formulář *pdf s vyplnitelnými chlívečky. Ruční přepisování hodnot či copy/paste je nepohodlné a ve větším formuláři i pracné. Hodilo by se, kdyby se hodnoty z příslušného (otevřeného, propojeného) *xls souboru načetly nějak samy.

Existuje nějaký způsob, jak toho docílit?

K dispozici je Adobe Acrobat 9 (CS4) a Excel 97,2003,2007. Bez použití třetích aplikací za stovky USD.

V nápovědě/manuálu k Acrobatu není v podobném duchu o "excel" či "xls" ani ň.

Předmět Autor Datum
Tohle vypadá na formulář zdravotního pojištění;-). Taky by se mi to šiklo....
jirka44 15.05.2012 08:08
jirka44
Těsně vedle ;-) Zdravko mám integrováno v xls (trochu jiný layout, ale na pojišťovnách mi to berou…
L-Core 15.05.2012 08:42
L-Core
pokial nechces apky tretich stran tak sa neobides bez Acrobat API a kodeni napriklad vo Visual Basic…
wam_Spider007 15.05.2012 08:16
wam_Spider007
Do toho se nepustím (nemám na to potřebné znalosti). Aplikace třetí strany by mi nevadila, pokud by…
L-Core 15.05.2012 08:47
L-Core
no ja som nasiel, ale tiez neboli free ... najlacnejsia za 99 dolarov, ale nedala sa kupit ani v CZ…
wam_Spider007 15.05.2012 09:11
wam_Spider007
šlo by to naskriptovat pomocí VBA. V podtstatě nabereš text z buňky Excelu do proměnné, přepneš foku…
touchwood 15.05.2012 09:27
touchwood
Tohle asi taky nezvládnu. Těch xls a pdf jsou spousty, měl jsem spíše na mysli něco jednoduchého, ž…
L-Core 15.05.2012 10:46
L-Core
pošli mi mailem to PDFko a nějaká vzorová data (stačí 2-3 řádky smyšlených informací), zkusím se na…
touchwood 15.05.2012 11:21
touchwood
Máš to tam.
L-Core 15.05.2012 12:19
L-Core
Kdybys chtěl komentář či vysvětlit, dej vědět. Poštou posílám podkladové dokumenty. Na řádku počet+1…
touchwood 15.05.2012 20:30
touchwood
Díky moc. S tím si už poradím. (vysvětlivka: nejdříve jsem se díval do mailu, až pak sem ;-))
L-Core 15.05.2012 21:51
L-Core
Zdravím, hledám řešení podobné potřeby co jste tu komunikovali pár let zpátky, google jako jediný r…
martanek.23 04.05.2015 16:10
martanek.23
Dobrý den, podařilo se Vám vyřešit? řeším stejný problém, výchozí dokument je vytvořen v InDesignu,… poslední
Martina Proki 09.11.2020 12:45
Martina Proki

Těsně vedle ;-)

Zdravko mám integrováno v xls (trochu jiný layout, ale na pojišťovnách mi to berou bez problémů), jedná se o sociální a FÚ: vrácení daňových bonusů. ;-)

Udělal bych si to v xls taky, ale ti <cenzurováno, použito opravdu silně expresívní výrazivo> každý rok předělávají formuláře 3-[

Do toho se nepustím (nemám na to potřebné znalosti). Aplikace třetí strany by mi nevadila, pokud by byla zadarmo (nenašel jsem žádnou, ani free ani komerční - třeba jsem se googlu špatně ptal). Co jsem se ale díval na podobné utility pro propojení accesu a pdf, šlo o sw za mnohoset dolarů, často i přes tisíc.

šlo by to naskriptovat pomocí VBA. V podtstatě nabereš text z buňky Excelu do proměnné, přepneš fokus do Adobe readeru, pomocí klávesových úderů se donaviguješ do pole a opět pomocí úderů vložíš text a odbouchneš se na další pole a opakuješ proceduru s přepnutím se do excelu, nabráním textu atd..

Tohle asi taky nezvládnu.

Těch xls a pdf jsou spousty, měl jsem spíše na mysli něco jednoduchého, že bych v editačním režimu pdf do chlívečku zadal něco na způsob Excelu: =(soubor.xls)list1!a1 a při otevření pdf (nebo po vynucené aktualizaci) by se hodnota a1 sama do příslušného chlívečku načetla.

Jenže tohle bude fungovat, až Microsoft koupí Adobe. Nebo naopak :-)

Řešením ze strany Excelu je mít ten pdf formulář (jeho layout) v něm. Respektive jeho "kostru" a tisknout jen obsah chlívečků. Ale změní-li se tiskárna, je uspořádání v háji.

Kdybys chtěl komentář či vysvětlit, dej vědět. Poštou posílám podkladové dokumenty. Na řádku počet+1 (v příkladu je to řádek 23) je uloženo jméno, pod kterým se výsledné PDF uloží (ve stejném adresáři jako mustr).

'
' touchwoodovo masakro pro L-Core a jeho účetní firmu ;-)
'
' Je třeba správně vyplnit konstanty, specificky pak počet proměnných
' a cesty k Acrobatu (reader nebo plnotučný), a zdrojovým souborům.
' Poslední proměnná (nezapočítává se) je jméno nově vytvořeného souboru
'
'

Const pocet = 22
Const pdfcesta = "c:\temp\lcore"
Const pdfsoub = "mustr2012.pdf"
Const acrobat = "c:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe"

'
' Konec uživatelsky nastavitelných konstant
'

Dim pole(1 To pocet + 1) As String
Dim pdf As String
Dim objShell As Object

pdf = pdfcesta & "\" & pdfsoub
Set objShell = CreateObject("WScript.Shell")

For i = 1 To pocet + 1
    bunka = "A" & i
    Range(bunka).Select
    pole(i) = Range(bunka).Value
Next
ShellApp = Shell(acrobat & " " & pdf, 1)

AppActivate ("Adobe Reader")
SendKeys ("{TAB}")

For i = 1 To pocet
   SendKeys (pole(i))
   SendKeys ("{TAB}")
Next
SendKeys ("^+S")
Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 2)
SendKeys (pole(pocet + 1))
SendKeys ("{ENTER}")
Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 3)

Zdravím,

hledám řešení podobné potřeby co jste tu komunikovali pár let zpátky, google jako jediný rozumný výsledek našel toto vlákno.

VBA v excelu zvládám v úplných základech (převážně náhráváním makra, které v excelu zaznamenává, co dělám). Proto laický dotaz - je váš kód použitelný univerzálně? Pokud tedy samozřejmě změním konstanty (cestu k pdf, atd.), nebo je potřeba upravit?

Zkoušel jsem zkopírovat do VBA, změnit konstanty a po spuštění se zasekne na řádku
>Dim pole(1 To pocet + 1) As String
kdy označí "pocet" a hlásí "Compile error: Constant expression required".

Tomu nerozumím, protože konstanta "pocet" je o pár řádků výše v kódu uvedena...

Díky

M

Dobrý den, podařilo se Vám vyřešit? řeším stejný problém, výchozí dokument je vytvořen v InDesignu, export do PDF, kde potřebuji vyhledávat k objednacímu číslu cenu (desetitisíce objednacích čísel s cenami). do formuláře by se zadalo objednací číslo, automaticky se vyplnila cena. funkce svyhledat je skvělá, škoda, že nefunguje v pdf :-)

Zpět do poradny Odpovědět na původní otázku Nahoru