Zdravím všechny, zasílám makro, které vytvoří ve wordu hromadnou korespondenci a uloží do pdf. Mým cílem je to, že každý jednotlivý doc obsahuje jiné číslo a chci aby dle tohoto čísla se jmenoval i výsledný pdf, seznam čísel mám i v xls, ale nechce se mito ručně přejmenovávat, mám cca 600 dopisů. Děkuju za případnou pomoc. Marek
Sub Hrom_kor()
HromKorPDF Makro
Dim I As Long
Dim MaxI As Long
Dim NumOd As Long
Dim NumDo As Long
Dim fn As String
Dim fnPDF As String
Dim DelkaCyklu As Long
DelkaCyklu = InputBox("Počet požadovaných dopisů v jednom wordovém souboru")
MaxI = InputBox("Počet cyklů po " & DelkaCyklu & ":")
For I = 1 To MaxI
NumOd = DelkaCyklu * (I - 1) + 1
NumDo = DelkaCyklu * I
fn = "C:\HromKor\HromKor" & I & ".doc"
fnPDF = "C:\HromKor\HromKor" & I & ".pdf"
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.MailAsAttachment = False
.MailAddressFieldName = ""
.MailSubject = ""
.SuppressBlankLines = True
With .DataSource
.FirstRecord = NumOd
.LastRecord = NumDo
End With
.Execute Pause:=True
End With
ActiveDocument.ExportAsFixedFormat OutputFileName:=fnPDF, _
ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentContent, _
IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _
wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _
True, UseISO19005_1:=False
ActiveDocument.Saved = True
ActiveDocument.Close
Next
End Sub
Díky moc elninoslov. Máš to daleko efektivnější. Měj se. Marek
Děkuju, je to OK. Popíšu co má vše dělat můj xlsm a zasílám jej zároveň v příloze. Takže, když otevřeš můj soubor jsou tam 4 tlačítka -
Natáhni- má za úkol natáhnout názvy souborů z adresáře c:\3.
Ořezat- má za úkol natáhlé soubory ořezat dle daných pravidel.
Smazat duplicity- smaže všechny duplicity z ořezaných souborů.
Export - udělá export do csv ořezaných názvů souborů bez duplicit do adresáře c:\1.
No nejsem v tom úplně v kramflecích, ještě to budu muset zautomatizovat např. při natahování nastavit výchozí buňku jako A1, možná vše dat pod jedno tlačítko a mrknout zda to nemůže tvořit chyby.
Je to super. Děkuju moc za ochotu. Ať se ti to vrátí v tom nejlepším.
Diky moc. Označil jsem fialově sloupce, které tam nemají být. A ještě mám další věc: je tam podmínka pokud číslo je větší než 13 000 tak jej zapiš a pokud ne tak zapiš Nehodnocen a to je v pořádku. Někdy se stane, že podmínka je splněna, ale človek je na 4. místě a proto místo číslice 4 bych chtěl ve výsledné tabulce zapsat Nehodnocen.
Bude potřeba asi dalšího sloupce.......
Výhra bude vždy 1 - 3500, 2 - 2500, 3 - 1500, Nehodnocen - 0, nehodnocen - 0.
Děkuju. Ještě místa se neopaku tj. nebudou např. nikdy dvě třetí místa bude vždy 1,2,3,Nehodnocen,Nehodnocen.
1. Výška tabulek je neměná
2. Označila se jako Nehodnocen, protože nesplňovala podmínku větší než 13000
3. tabulka 2 slouží jako zjednoduššení tab. 1 ale připouštím, že je to asi nesmysl a zároveň tam má docházet k seřazení.
4. Možná řešení je vytvořit další tabulku i když si nejsem jistý, zda je to to nejlepší řešení, už tam bude moc tabulek.
5. Lze to nějak zjednodušit?
Děkuju.
Ten návrh mám už hodně starý a mnohokrát přepracovávaný. Data pro tab1 beru z KT, která to bere z SQL databáze.
Ahoj, zasílám vzorový soubor ve vnitř je to trošku popsané. Děkuju předem za pomoc. MArek
Do buněk dostávám data z jiných buněk, dle toho za jaké období data chci a mám tam dokonce vzorce, právě ve sloupci kde chci řadit. Vzorec mám:
=KDYŽ(L11>3;"Bez hodnocení";L11)
ani jeden z případů VBA neřadí správně, je to spíš chaotické řazení.
Zdravím, mám tabulku kde při změně hodnoti dochází k automatickému řazení dat del tohoto makra:
Private Sub WorkSheet_Change(ByVal Target As Range)
Range("A7:D11").Sort Key1:=Range("D7:D11"), _
order1:=xlDescending, Header:=xlNo
End Sub
Problém je v tom, že mi to vůbec neřadí. Víte v čem by mohl být problém? Může to být tím, že ve sloupci D7:D11 mám jak číslovky tak jména?
Díky MArek
Děkuju za pomoc. Funguje to. Ještě mě napadl jednodušší přístup, který jsem, ale nepožadoval tj. nikdo nemohl ani o něm vědět a to, zobrazit v seznamu intervalů pouze označený řádek.
Ahoj Zasílám uvedený soubor. Nevím si s tím radu, Díky.
elninoslov super to je přesně ono, ale pokud chci potvrdit vzorec:
=INDEX(AB3:AB33;SMALL(KDYŽ((DATUMHODN(DOSADIT(ZLEVA(AB3:AB33;NAJÍT("-";AB3:AB33)-1);" ";""))<=DNES())*(DATUMHODN(DOSADIT(ZPRAVA(AB3:AB33;DÉLKA(AB3:AB33)-NAJÍT("-";AB3:AB33));" ";""))>=DNES());ŘÁDEK(AB3:AB33);NEPRAVDA);1))
tak mi to napíše do D1 - #HODNOTA!. Děkuju
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.