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

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
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
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

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.

Skús do toho makra zakomponovať niečo takéto: (skúsil som to v Exceli 2007)

Sheets("odberatele").Select
    ActiveWindow.SelectedSheets.Delete

Za predpokladu že ten hárok sa volá "odberatele"

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)

No a nefunguje to tak ako predpokladám, teda že zmaže list, uloží kópiu bez neho a keď zdrojový zavrieš bez uloženia zmien tak sa nič nedeje?

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

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