Másolat mentése, biztonsági mentés, backup… Bizonyára belefutottunk már abba a problémába, hogy lefagyott az Excel és a munkánk egy része elveszett. Még az sem egyértelmű ilyenkor, hogy a munkafüzet korrupt lett-e, illetve hogy mennyire sérült a fájl.
Mennyire szép és egyszerű lenne, ha biztonsági másolatok állnának rendelkezésünkre bizonyos időközönként egy adott mappában. Erre lenne hivatott az Excel beállításoknál az automatikus helyreállítási adatok mentése:
Az automatikus mentés alapból 10 percre van állítva, nálam ez 3. Azt gondolhatnánk, hogy az automatikus helyreállítási mappában 3 percenként vannak elmentve a munkafüzet különböző változatai. Hát nem egészen!
Persze nyomkodhatjuk az F12-t (mentés másként), de akkor el kell nevezni a fájlt és menteni, ami macerás lehet, ha sokszor kell csinálni. Ráadásul az eredeti fájl helyett a másolatban kell dolgoznom. Ám mi van akkor, ha az eredeti munkafüzetet nyitva akarom tartani és elmenteni egy másolatot annyiszor, ahányszor akarok? Mindezt pedig egy kattintással vagy billentyűparanccsal?
Az alábbi kompakt VBA kód a megoldás, amit ajánlott hozzáadni a Personal.xlsb-hez (link, miként kell makrót hozzáadni: itt).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Sub MasolatMenteseEredetiNyitvaMarad() Dim Nev As String, Kiterjesztes As String 'készítette: Tulner Roland (xlmotyo.hu) 'az aktív munkafüzetrõl egy másolatot készít a munkafüzet mappájába. A másolt fájl nevébe _ idõbélyeget tesz (ééééhhnn és óóppmm - pl.: "Save.Test_20200719_163346.xlsm" 'a másolat elmentése után az eredeti fájlt nyitva hagyja, így dolgozhatunk benne tovább! Nev = ActiveWorkbook.Name Kiterjesztes = Split(Nev, ".")(UBound(Split(Nev, "."))) On Error GoTo Vege 'Pl.: "Save.Test_20200719_163346.xlsm" ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & Left(Nev, Len(Nev) - Len(Kiterjesztes) - 1) & "_" & _ Replace(Date, ".", "") & "_" & Replace(Time, ":", "") & "." & Kiterjesztes Exit Sub Vege: MsgBox "A másolat mentése nem sikerült." & vbNewLine & vbNewLine & _ "Valószínûleg a fájl elérési útja nem létezik" & vbNewLine & _ "(pl. még nem volt mentve a fájl)," & vbNewLine & _ "vagy a fájl nevében speciális karakterek vannak" & vbNewLine & _ "(pl a ':') az idõbélyeg miatt.", vbExclamation, "" End Sub |
A fenti kód működés animáción keresztül szemléltetve:
Makró jellemzői röviden:
- a fenti animáción a makrót már hozzáadtam a Gyorselérési Eszköztárhoz (QAT): így valóban egy kattintással bármikor kreálhatok biztonsági mentést. Kód hozzáadása QAT-hez itt.
- látható, hogy a jobb oldalon automatikusan hozzáadódnak a mentések (az eredeti fájl mappájában) miután kattintok a QAT-n lévő ikonon
- a mentéseknél a fájl nevét időbélyeggel (time stamp) látja el a kód: év, hónap, nap + óra, perc, másodperc. Például: Teszt.Munkafuzet_20200719_180250.xlsx. Így bármikor sorba rendezhetjük a mentéseket.
Makró továbbfejlesztési lehetőségek:
- másolatokat egy külön mappába mentse
- a Personal.xlsb-ben lévő makróhoz billentyűparancsot hozzárendelni és azzal futtatni (nálam: CTRL + SHIFT + S)
Néha a legegyszerűbb megoldások a legfrappánsabbak, mint a fenti eset is mutatja. Remélem hasznotokra válik.
Szép napot, jó egészséget mindenkinek.