
Makro pro uložení Wordu
Vážení a milí kolegové,
snažím se vytvořit makro ve Wordu 2007, které by mi uložilo soubor pod názvem, který je roven hodnotě uvedené v dokumentu.
Mám totiž vytvořenou hromadnou korespondenci, kde se mění některá data převzatá z excelu. Jedno z nich je i číslo jednací. Název souboru by se měl jmenovat podle části tohoto čísla. Již jsem si vytvořil makro, které mi aktuální záznam v hromadné korespondenci otevře jako samostatný soubor pro úpravu. A chtěl jsem aby hned po tomto vytvoření tento dokument uložil pod názvem do určité složky, abych už ho mohl jen upravit, uložit a vytisknout.
Snažil jsem se to udělat označením části toho čísla jednacího, pak "Ctrl+C" a po otevření okna pro uložení dát "Ctrl-V". Jenže ono to makro to pak uloží vždy s tím názvem, který jsem dal při nahrávání makra a né novým.
Upravoval jsem VB kód různými způsoby, ale nechce mi to šlapat.
Nedá se to nějak upravit?
Děkuji za odpovědi.
S pozdravem
Jarek
musíš makro editovat ve VBA, místo hodnoty "natvrdo" je třeba zvolit aktuální hodnotu z formuláře (předpokládám něco jako form.cisjednaci.value (toto je pouze "názorná ukázka, nevím přesně, jak se odkazovat na pole formuláře ve Wordu, ale určitě to jde))
Podle tohoto threadu by to mělo být nějak takto: ActiveDocument.FormFields("Text94").Result.
Díky za odpověď. Bohužel ve Wordu se mi nechce propojit formulářové pole s databází - nejde tam vložit pole z hromadné korespondence. A když dám někde "pole" hromadné korespondence, tak se na něj nedá odkázat jako na formulářové pole.
Ale princip byl asi v pohodě. O tom žádná.
Ještě jednou díky.
Klidně uvítám další nápady.
Jarek
Hm, skusal si to cez premennu? V podstate potrebujes vygenerovat novy nazov suboru z polozky Excelovskej databazy. Teraz neviem, ci sa vobec da preniest premenna z Exceku do Wordu, ale napadol ma dost krkolomny sposob, ako by sa to dalo urobit. V Exceli spravis makro, ktore ti vygeneruje prazdny subor s nazvom, ktory potrebujes pre Word, ale s priponou xls.
Nieco ako
Sub Makro_VytvorZosit
Dim NovyNazov as String
Workbooks.Add
NovyNazov = "C:\PomocnyAdresar\" & Cstr (ActiveCell.Value) & ".xls" 'kurzor je na bunke s prislusnym c. jednacim
ActiveWorkbook.SaveAs Filename:= Novy Nazov
ActiveWorkbook.Close
End Sub
Potom do svojho existujuceho makra /toho co ti vytvara novy subor na editovanie/ z Wordu zistis meno /jedineho/ suboru v Zlozke C:\PomocnyAdresar
Sub Makro_ZistiNazov()
Dim Novy Nazov as String
With Application.FileSearch
.LookIn = "C:\PomocnyAdresar"
.Filename = *.*
.Execute
End With
NovyNazov = Right (Application.FileSearch.FoundFiles(1),4) 'odstrani z nazvu posledne 4 pismena teda .xls
NovyNazov = "Zlozka do ktorej chces ulozit subor na upravu" & NovyNazov & ".docx
ActiveDocument.SaveAs Filename:= Novy nazov
End Sub
Je silne pravdepododne, ze existuje aj elegantnejsi sposob na prenos premennej, ale toto by malo fungovat. Samozrejme, zo zlozky PomocnyAdresar treba vzdy nasledne odstranit ten prazdny excelovsky subor.
Este moze byt problem s tym Application.FileSEarch, mam taky pocit, ze to z 2007 odstranili /ja robim v 2003/, potom by sa muselo ist cez FSO objekt /viac na: http://officir.ic.cz/chipex05/10/excel_vba_jine.ht ml
Dufam ze ti to pomoze.