Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel - makro: ukládání kopie souboru

Ahoj, chtěl bych poprosit o radu ohledně makra (rád bych upozornil, že ohledně maker sem naprostej amatér). Mám soubor pokus.xls do kterého sem vložil tlačítko a v záznamníku maker "vykouzlil" jedno makro se třemi funkcemi. Po stisku se v uřčité buňce (G1) změní číslo o jednu, dokument se vytiskne a zároveň uloží provedené změny (do téhož souboru).
A právě tu poslední funkci bych chtěl rozšířit (jestli je to vůbec možné??).

Představa je asi taková: Když se soubor (na ploše) uloží - provedené změny. Makro vytvoří jeho kopii, kterou uloží do předem nastavené složky (např D:\záloha) a zároveň ho pojmenuje podle hodnoty v určité buňce (např G1 - čislo faktury)

Byl by někdo ochotný takové makro napsat (můj záznamník už na to nestačí):-/ jestli je to vůbec proveditelné.
Za případné reakce děkuji.

pro ilustraci přikládám soubor

Předmět Autor Datum
niečo takéto? Sub tlačítko1_Klepnutí() Dim newFile As String, fName As String Range("G1").Select Ac…
deadhead 17.08.2010 21:53
deadhead
Á díky, to je přesně ono :-D:beer: Funguje to super Hold kdo umí ten umí. Ještě jednou díky a přeju…
Siki83 17.08.2010 22:18
Siki83
Tak sem tu zas a potřeboval bych pomoct s editací tohoto makra. Potřebuji ho vytvořit více blbuvzdor…
Siki83 01.09.2010 22:28
Siki83
Skús to bližšie definovať, nerozumiem celkom aký je (v čom vidíš ty) rozdiel medzi zavretím súboru t…
deadhead 02.09.2010 11:22
deadhead
Ok, popíšu to celé. Na ploše mám soubor "Faktura.xls" s tím makrem. Je to nastavené tak, že změny se…
Siki83 02.09.2010 19:53
Siki83
Jáj, ty si myslel zavretie excelu, nie zošitu. momentálne vidím 2 možnosti: Môžeš použiť "Applicati…
deadhead 02.09.2010 20:57
deadhead
Tohle jsem zkoušel taky. Problém je, že se sice soubor z disku D zavře, ale už se neotevře zdrojový…
Siki83 02.09.2010 21:13
Siki83
No možno problém bude v tom že to makro máš uložené v súbore ktorý zavrieš a teda už na ďalšie kroky…
deadhead 02.09.2010 21:23
deadhead
Jo jo, máš pravdu. Ale nevím jak z toho ven a z toho odkazu nejsem zrovna dvakrát moudrej. Angličtin…
Siki83 02.09.2010 21:44
Siki83
tak to neviem, ale v princípe ide o to, že (myslím že máš excel 2007) to makro nebudeš mať uložené v…
deadhead 02.09.2010 21:52
deadhead
přesně tak pokouším se to spleskat v excelu 2007, ale výsledný soubor se bude provozovat na excelu 2…
Siki83 02.09.2010 21:57
Siki83
V práci niektoré veci riešim aj takým spôsobom že mám na serveri jeden xls súbor s makrami a na konk…
deadhead 02.09.2010 22:21
deadhead
To je taky dobrý řešení, bohužel pc na kterým to má běhat není v síti.
Siki83 02.09.2010 22:44
Siki83
tak ten súbor dáš napr. na disk D, to je predsa jedno :-)
deadhead 02.09.2010 22:52
deadhead
Namiesto metódy SaveAs použi metódu SaveCopyAs.
los 02.09.2010 22:23
los
Díky za reakci. Tohle už sem zkoušel taky, ale někde dělám chybu protože se mi ukládá soubor bez kon…
Siki83 02.09.2010 22:42
Siki83
Jediným (voliteľným) parametrom metódy SaveCopyAs je meno súboru, do ktorého sa má uložiť kópia zoši…
los 02.09.2010 22:48
los
No jo ale jak to uvést do praxe? Jméno mého souboru se skládá ze dvou hodnot čísla faktury a jména z…
Siki83 02.09.2010 23:01
Siki83
Beru zpět, sem to ale kus VOLA do makra sem zkusil přidat za jméno souboru &".xls" a funguje to něja…
Siki83 02.09.2010 23:07
Siki83
Tímto bych Vám chtěl pánové poděkovat za vaši účast a rady. Určitě máte na práci lepší věci než tu s…
Siki83 02.09.2010 23:15
Siki83
Ahoj, znovu otevřu tohle vlákno a chci Vás poprosit o pomoc. Sešit "Faktura.xls" prošel modernizací,…
Siki83 18.10.2010 11:17
Siki83
Nikdo nemáte ponětí jak na to? nebo chci úplnou ptákovinu?
Siki83 20.10.2010 13:07
Siki83
Skús do toho makra zakomponovať niečo takéto: (skúsil som to v Exceli 2007) Sheets("odberatele").Se…
deadhead 20.10.2010 14:32
deadhead
Díky funguje skvěle, jen né tak jak bych potřeboval. Nebo to neumím zakomponovat tak aby to smazalo…
Siki83 20.10.2010 16:01
Siki83
No a nefunguje to tak ako predpokladám, teda že zmaže list, uloží kópiu bez neho a keď zdrojový zavr…
deadhead 20.10.2010 16:42
deadhead
Samozreme pokiaľ chceš zachovať aktuálne údaje aj v zdrojovom súbore tak musím nad tým trochu pošpek…
Siki83 20.10.2010 17:14
Siki83
Skús sa teda pohrabať v makre na tejto stránke: Save Copy of Workbook Minus Some Sheets , to by malo…
deadhead 20.10.2010 17:30
deadhead
Díky kouknu na to.
Siki83 20.10.2010 18:13
Siki83
Tak je to přesně to co sem potřeboval, bohužel se mi nedaří zapracovat tento kód do zdrojového soubo… poslední
Siki83 20.10.2010 20:39
Siki83

niečo takéto?

Sub tlačítko1_Klepnutí()
Dim newFile As String, fName As String
Range("G1").Select
    ActiveCell.FormulaR1C1 = Range("G1").Value + 1
Range("A12").Select


   Application.ActivePrinter = "pdfFactory Pro na FPP3:"
   ExecuteExcel4Macro "PRINT(1,,,3,,,,,,,,2,""pdfFactory Pro na FPP3:"",,,,FALSE)"

ActiveWorkbook.Save
fName = "D:\záloha\" & Range("G1").Value
newFile = fName
ActiveWorkbook.SaveAs Filename:=newFile
End Sub

Tak sem tu zas a potřeboval bych pomoct s editací tohoto makra. Potřebuji ho vytvořit více blbuvzdorné:-D
Makro funguje skvěle, ale když dojde k uložení kopie na disk D, tak se automaticky otevře z hototo umístění.
Potřeboval bych dosáhnout toho, aby po uspěšném uložení na disk D se soubor automaticky zavřel. Zkoušel sem to přidáním parametru

ActiveWorkbook.Close

což funguje, ale spíše bych potřeboval něco jako když se sešit zavře kliknutím na křížek (vpravo nahoře)

Ok, popíšu to celé.
Na ploše mám soubor "Faktura.xls" s tím makrem. Je to nastavené tak, že změny se uloží do toho zdrojového souboru a zároveň se uloží kopie souboru na disk D a pojmenuje se podle hodnoty v buňce (číslo faktury_zákazník). Tohle všechno funguje skvěle, ale nechci aby se pak excel přepnul do toho NOVĚ vytvořeného souboru s novým jménem na disku D.
Tak sem zkusil do makra umístit ActiveWorkbook.Close aby se okno excelu zavřelo a uživatel byl nucen pro vypracování další faktury znovu spustit soubor z plochy. Problém je v tom, že se mi zavře aktivní list a excel zůstane otevřený viz obr. a ja bych chtěl aby se ukončil celý excel (jako když ho zavřeš křížkem vpravo nahoře) prostě aby jsem zkončil znovu na ploše.

A nebo ještě jedna možnost, že by se po uložení automaticky otevřel zdrojový soubor z plochy a ten uložený na D s novým jménem (např: 2010003 Novák) se zavřel.
Něco na tohle téma sem taky zkoušel

ActiveWorkbook.Save
fName = "D:\záloha\" & Range("S7").Value
newFile = fName
ActiveWorkbook.SaveAs Filename:=newFile

Workbooks.Open Filename:="C:\Users\Marek\Desktop\Faktura.xls"

Windows("2010003 Novák.xls").Activate
ActiveWindow.Close

ale ztroskotal sem na tom, že se pokaždé mění jméno uloženého souboru a nedokážu zapsat takovou věc do makra.
Kdybys věděl nějaký postup ať s jedním nebo druhým řešením byl bych moc rád.
Díky za tvůj čas

Edit: snad sem to napsal srozumitelně :-p

Jáj, ty si myslel zavretie excelu, nie zošitu.

momentálne vidím 2 možnosti:
Môžeš použiť "Application.Quit" na zavretie celého excelu, ale tvoje riešenie nie je zlé, akurát by som prehodil kroky takto (netestoval som to):

ActiveWorkbook.Save
fName = "D:\záloha\" & Range("S7").Value
newFile = fName
ActiveWorkbook.SaveAs Filename:=newFile
ActiveWindow.Close
Workbooks.Open Filename:="C:\Users\Marek\Desktop\Faktura.xls"

Proste najprv uložíš súbor na D, zavrieš ho a potom otvoríš pôvodnú faktúru z plochy.

Jo jo, máš pravdu. Ale nevím jak z toho ven a z toho odkazu nejsem zrovna dvakrát moudrej. Angličtina není moje silná stránka a v překladači sem z toho pochopil taky kulový.

nevíš jestli se dá použit tento kod:

Windows("2010036 Novák.xls").Activate
ActiveWindow.Close

s tím že do závorky (místo názvu) by se uložila nějaká proměná??

V práci niektoré veci riešim aj takým spôsobom že mám na serveri jeden xls súbor s makrami a na konkrétnom počítači si potom len v exceli urobím tlačítko ktorému priradím makro z toho súboru na sieti. Niečo podobné by zrejme pomohlo aj tebe. Volať makro z iného súboru ktorý nesúvisí s aktuálne spracovávanými súbormi.

Tímto bych Vám chtěl pánové poděkovat za vaši účast a rady. Určitě máte na práci lepší věci než tu se mnou řešit takový ptákoviny :-p
Řešení bylo naprosto triviální a já se tu stím piplám celej večer a ještě zde votravuju ostatní:-/
Jestě jednou oboum děkuji a přeji dobrou noc

Ahoj, znovu otevřu tohle vlákno a chci Vás poprosit o pomoc. Sešit "Faktura.xls" prošel modernizací, do této doby obsahoval 2 listy (faktura a dobropis). O ukládání kopií se stará tahle část kódu makra.

'uloží kopii souboru na disk D a pojmenuje podle hodnoty v buňce S7
fName = "D:\záloha\" & Range("S7").Value
newFile = fName
ActiveWorkbook.SaveCopyAs Filename:=newFile & ".xls"

Vše funguje k plné spokojenosti uživatele.
Ona modernizace spočívá v přidání třetího listu (odběratelé), a tady bych potřeboval radu.
Jakým způsobem můžu vyloučit 3 list ze zálohy která se ukládá na disk D.
To znamená Zdrojový sešit obsahuje 3 listy, ale kopie která se ukádá na disk D by obsahovala pouze dva listy (faktura, dobropis). Je nějaká možnost jak to provést? (nemám na mysli skrytý, nebo velmi skrytý list, ale jeho trvalé odstranění). Díky za případnou radu M.

Díky funguje skvěle, jen né tak jak bych potřeboval. Nebo to neumím zakomponovat tak aby to smazalo list "odberatele" z toho souboru - kopie na disku D a né ze zdrojového souboru :-/
(v tom zrojovém bych chtěl list zachovat a z kopie která se ukládá na Déčko odstranit, nebo ho vůbec neuložit)

Samozreme pokiaľ chceš zachovať aktuálne údaje aj v zdrojovom súbore tak musím nad tým trochu pošpekulovať :)

Přesně tak musí se uložit i udaje v zdrojovém souboru, je to faktura s několika funkcemi.
Jedná se o soubor, který jsme tu řešili na začátku vlákna. Pokud by se neukládal nešlo by využít funkci automatického číslování faktury

Sub tlačítko1_Klepnutí()
Dim newFile As String, fName As String
Range("G1").Select
    ActiveCell.FormulaR1C1 = Range("G1").Value + 1
Range("A12").Select


   ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True

ActiveWorkbook.Save
fName = "D:\záloha\" & Range("G1").Value
newFile = fName
ActiveWorkbook.SaveAs Filename:=newFile
End Sub

+ další kódy na vymazání, černobílí tisk atd ...

Díky, že s mím "problémem" ztrácíš svůj drahocenný čas 8-)

Tak je to přesně to co sem potřeboval, bohužel se mi nedaří zapracovat tento kód do zdrojového souboru.
Dostal sem se do tohoto stádia

Dim ThisBook As Workbook, WkSht As Worksheet
Set ThisBook = ThisWorkbook
Application.ScreenUpdating = False
fName = "D:\záloha\" & Range("S7").Value
newFile = fName
ActiveWorkbook.SaveCopyAs Filename:=newFile & ".xls"
Application.Workbooks.Open (Application.DefaultFilePath & "\" & _
Left(ThisBook.Name, Len(ThisBook.Name) - 4) & _
" Copy.xls")

For Each WkSht In ActiveWorkbook.Worksheets
Select Case WkSht.Name

'***************************************
'Sheets to be excluded (rename as required)
Case "Odberatele"
'***************************************

Application.DisplayAlerts = False
WkSht.Delete
Case Else
'do nothing
End Select
Application.CutCopyMode = False
Next WkSht
ActiveWorkbook.Save
ActiveWorkbook.Close

dokázal sem přesměrovat ukládání souboru na disk D, ale to je všechno seknul sem se v tučně vyznačeném místě kódu a mevím si rady jak přepsat tuto část, tak aby makro dokázalo otevřít ten zálohovaný soubor na Déčku aby mohlo smazat list "odberatele"
Mohu tě ještě otravovat a poprosit tě o možnost úpravy

EDIT:
Tak sem na to nakonec přišel,ale dalo to zabrat. Stačilo nahradit

Application.Workbooks.Open (Application.DefaultFilePath & "\" & _
Left(ThisBook.Name, Len(ThisBook.Name) - 4) & _
" Copy.xls")

Tímto:

Application.Workbooks.Open (newFile & ".xls")

Hledám složitosti tam kde nejsou
Ještě jednou díky za ten odkaz, funguje to přesně podle představ

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