Tallenna nimellä Alkuperäisen avoimena pitäminen - Excel-vinkit

Sisällysluettelo

Tarvitsen useita kertoja kuukaudessa, kun tarvitsen Excel-työkirjan monien kopioiden luomiseen itsestäsi. Pääsen tavallisesti loogiseen virheen avaamalla * * työkirjan ja aloitan koodin kirjoittamisen luettelon läpi ja tallennan kopion työkirjasta valitsemalla Tiedosto, Tallenna nimellä.

Tässä on vuokaavio:

Looginen virhe, kun suljen työkirjan

Näetkö ongelman yllä? Makro on käynnissä työkirjaA. Kun tallennan tiedoston nimellä RegionEast.xlsx ja suljen sitten RegionEast.xlsx, makro lakkaa toimimasta.

Olen yleensä syvällä pseudokoodissa ennen kuin näen ongelman.

Sub MakeCopies() Dim WBT As Workbook Dim WSD As Worksheet Dim WSR As Worksheet Set WBT = ThisWorkbook Set WSD = WBT.Worksheets("Data") Set WSR = WBT.Worksheets("Report") FinalRow = WSD.Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To FinalRow ' Copy this product to WSR.B2 WSR.Cells(2, 1).Value = WSD.Cells(i, 1).Value ' Save this workbook with a new name NewFN = "C:aaa " & WSD.Cells(i, 1).Value & ".xlsx" ' Save As a file type without macros WBT.SaveAs Filename:=NewFN, FileFormat:=xlOpenXMLWorkbook ' Close the new workbook ' But that won't work because I need this workbook to stay open End Sub

Jos olisin ajatellut eteenpäin, olisin luonut kahden työkirjan ratkaisun. Laita kaikki makrot työkirjaan A. Lisää kaikki tiedot työkirjaanB. Pyydä WorkbookA: ta toistuvasti avaamaan WorkbookB, muuttamaan tietoja, SaveAs, Close.

Hieman monimutkaisempi

Vanhetessani ja kapeammallani huomaan, että minulla on vähemmän mieliala mennä hieman monimutkaisempaan. Varsinkin, koska suurin osa koodista toimii alkuperäisen SaveAs-komennon kanssa.

Tämän päivän artikkeli kertoo mahtavasta VBA-menetelmästä SaveAsCopy: lle. Tämä komento pitää työkirjan auki ja sitä kutsutaan työkirjaksi. Makro voi jatkua. Mutta se kirjoittaa työkirjan nykyisen tilan uuteen suljettuun työkirjaan nimeltä WorkbookB.

Näin saan palata alkuperäiseen vuokaavioon:

Yksinkertaisempi logiikka, kaikki itsenäinen

Löysin kuitenkin yhden ongelman SaveAsCopy-sovelluksessa. Kun teen ThisWorkbook.SaveAs, voin valita, haluanko tallentaa XLSX tai XLSM. Jos tarvitsen makrojen olevan käytettävissä uudessa työkirjassa, käytän XLSM: ää. Muuten käytän XLSX: ää ja makrot katoavat.

Valitettavasti, jos olet XLSM-työkirjassa, et voi onnistuneesti .SaveAsCopy ja vaihda XLSX. Koodi toimii. Tuloksena oleva työkirja ei kuitenkaan aukea, kun Excel havaitsee virheellisen vastaavuuden tiedostotyypin ja tiedostotunnisteen välillä.

Minun ratkaisuni on SaveAsCopy XLSM-muodossa. Kun kopio on tallennettu, voin avata työkirjan (luoda kaksi kopiota työkirjasta muistiin) ja sitten SaveAs XLSX.

Sub MakeCopies() Dim WBT As Workbook Dim WBN As Workbook Dim WSD As Worksheet Dim WSR As Worksheet Set WBT = ThisWorkbook Set WSD = WBT.Worksheets("Data") Set WSR = WBT.Worksheets("Report") FinalRow = WSD.Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To FinalRow ' Copy this product to WSR.B2 WSR.Cells(2, 1).Value = WSD.Cells(i, 1).Value ' Save this workbook with a new name FN = "C:aaa " & WSD.Cells(i, 1).Value & ".xlsx" ' Save a Temp Copy of this workbook NewFN = "C:aaaDeleteMe.xlsm" ' Delete any previous copy left over from before On Error Resume Next Kill (NewFN) On Error GoTo 0 ' **************************************** ' Use SaveCopyAs instead of SaveAs WBT.SaveCopyAs Filename:=NewFN ' Open the workbook we just saved Set WBN = Workbooks.Open(NewFN) ' Delete the worksheets that we don't need Application.DisplayAlerts = False For Each WS In WBN.Worksheets Select Case WS.Name Case "BuyTheBook", "Info", "Form", "Template", "Article", "NotesForApp", "Data" WS.Delete End Select Next WS Application.DisplayAlerts = True NewFN = FN WBN.Worksheets(1).Select On Error Resume Next Kill (NewFN) On Error GoTo 0 Application.DisplayAlerts = False WBN.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook Application.DisplayAlerts = True WBN.Close False ' Delete the temporary copy NewFN = "C:aaaDeleteMe.xlsm" On Error Resume Next Kill (NewFN) On Error GoTo 0 End Sub

Katso video

Videon transkriptio

Opi Excel Podcastista, jakso 2213: Tallenna nimellä VBA: ta, mutta pidä alkuperäinen auki.

Hei, tervetuloa takaisin netcastiin. Olen Bill Jelen. No, olet ehkä huomannut, että olen tarjonnut jokaisen podcastin lataamista viime aikoina, koska monet ihmiset ovat pyytäneet minua sitä, ja yritin tehdä elämästä mahdollisimman helppoa. Ja koko tavoite oli tallentaa kopio, jonka voit ladata, mutta en halunnut ylimääräisiä juttuja - tiedät, omaan sisäiseen käyttööni tarkoitettua tavaraa -, joten halusin päästä eroon siitä.

Ja tiedätkö, sanotaan, että minulla oli tilanne, jossa minun piti kirjoittaa 12 työkirjaa, eikö? Jokaisella on erilainen tuote. Joten aion perehtyä näihin tuotteisiin ja kirjoitan sen A2: een ja sitten tallentaa työkirjan ja ehkä puhdistaa joitain juttuja. Hyvä on. Joten ensimmäinen käynni täällä on tällainen makro, okei? Joten määritämme nykyisen työkirjan - laskentataulukot ("Data", laskentataulukot ("Raportti") niiden löytämiseksi) ja selvitämme sitten, kuinka monta tietoriviä meillä on tänään, aiomme siirtyä riviltä 2 alaspäin viimeinen rivi, kopioi tuote tietojen työkirjasta raportin työkirjaan.

Selvä, ja nyt aion joutua vaikeuksiin. Joten uutta työkirjaa kutsutaan nimellä "C: aaa " ja sitten Apple.xlsx, ja aion tallentaa nimellä nimellä, tiedät, Apple.xlsx: n kanssa, ja vaihdan XML: ään - avaa xml-työkirja- - joka poistaa makrot. Hyvä on. Mutta nyt haluaisin sulkea kyseisen työkirjan, mutta valitettavasti kun teet Tallenna nimellä - katso juuri nyt, olen podcast 2013: ssa - kun teen Tallenna nimellä koodin kyseisen kohdan jälkeen, en ole pidempi oleminen Podcast 2013: ssa; Aion olla Apple.xlsx-tiedostossa. Hyvä on? Joten nyt, jos haluan aloittaa tavaroiden poistamisen, aion poistaa ne kopiosta, mutta kun suljen kopion, en voi palata alkuperäiseen tiedostoon. Hyvä on? Ja tämä makro - itse asiassa pääni räjähtää yrittäen selvittää, toimiiko silmukka edelleen vai ei,eikö? Joten mielestäni Tallenna nimellä on väärä tapa edetä täällä.

No, oikeastaan, pidä kiinni. Voisimme mennä kahdella tavalla: Ensinnäkin, minulla voisi olla toinen työkirja, joka avaa Podcast 2213: n, tekee jutut ja tallentaa sitten uuden nimen kanssa, tai aion mennä tällä tavalla, okei, ja tämä on menetelmä, jonka päädyin käyttämällä - kunnossa, ja aiomme määritellä tämän työkirjan, mutta sitten myös uuden työkirjan. Aivan. Ja kaikki on tavallaan samalla tavoin täällä, kunnes pääsemme pisteeseen, jossa aion tehdä WBT.SaveAs. Katso tämä: SaveCopyAs - nyt sitä ei ole olemassa, sikäli kuin voin kertoa, tavallisessa Excelissä … tämä on vain VBA. SaveCopyAs sanoo: "Hei, katso, että olemme tiedostossa nimeltä 2213, ja haluan sinun ottavan kyseisen tiedoston 2213 sen nykyisessä tilassa, tallentavan sen levylle ja sulkemalla." Pidä alkuperäinen tiedosto auki - 2213 pysyy auki - mutta nyt levyllä on upouusi tiedosto nimeltä Apple.xlsm. Oikeastaan ​​aluksiMinä vain kutsun sitä nimellä DeleteMe.xlsm. Hyvä on. Mutta se luo identtisen kopion ja pitää alkuperäisen tiedoston - tiedoston, jossa makro on käynnissä - auki, ja se on tärkeä osa, eikö? Joten nyt, kun minulla on DeleteMe, avaan sen, annan sen WBN: lle, teen tarvittavat asiat, päästä eroon kaikista ylimääräisistä arkeista - tiedän mitä minulla on. Huomaa, että ennen taulukoiden poistamista haluat tehdä DisplayAlerts = False, muuten se kysyy jatkuvasti: "Hei, et aio palauttaa arkkia." Ymmärsin. Ja sitten, vihdoin täällä, valitse ensimmäinen laskentataulukko, josta FN tulee olemaan Apple.xlsx, ja sitten voimme tehdä WBN.SaveAs Apple, Open XMLWorkbook. Ei makroja. Ja sitten Sulje - Sulkeuden kaunis asia on, että olen nyt palannut tähän työkirjaan, 2213.Mutta se luo identtisen kopion ja pitää alkuperäisen tiedoston - tiedoston, jossa makro on käynnissä - auki, ja se on tärkeä osa, eikö? Joten nyt, kun minulla on DeleteMe, avaan sen, annan sen WBN: lle, teen tarvittavat asiat, päästä eroon kaikista ylimääräisistä arkeista - tiedän mitä minulla on. Huomaa, että ennen taulukoiden poistamista haluat tehdä DisplayAlerts = False, muuten se kysyy jatkuvasti: "Hei, et aio palauttaa arkkia." Ymmärsin. Ja sitten, vihdoin täällä, valitse ensimmäinen laskentataulukko, josta FN tulee olemaan Apple.xlsx, ja sitten voimme tehdä WBN.SaveAs Apple, Open XMLWorkbook. Ei makroja. Ja sitten Sulje - Sulkeuden kaunis asia on, että olen nyt palannut tähän työkirjaan, 2213.Mutta se luo identtisen kopion ja pitää alkuperäisen tiedoston - tiedoston, jossa makro on käynnissä - auki, ja se on tärkeä osa, eikö? Joten nyt, kun minulla on DeleteMe, avaan sen, annan sen WBN: lle, teen tarvittavat asiat, päästä eroon kaikista ylimääräisistä arkeista - tiedän mitä minulla on. Huomaa, että ennen taulukoiden poistamista haluat tehdä DisplayAlerts = False, muuten se kysyy jatkuvasti: "Hei, et aio palauttaa arkkia." Ymmärsin. Ja sitten, vihdoin täällä, valitse ensimmäinen laskentataulukko, josta FN tulee olemaan Apple.xlsx, ja sitten voimme tehdä WBN.SaveAs Apple, Open XMLWorkbook. Ei makroja. Ja sitten Sulje - Sulkeuden kaunis asia on, että olen nyt palannut tähän työkirjaan, 2213.eikö? Joten nyt, kun minulla on DeleteMe, avaan sen, annan sen WBN: lle, teen tarvittavat asiat, päästä eroon kaikista ylimääräisistä arkeista - tiedän mitä minulla on. Huomaa, että ennen taulukoiden poistamista haluat tehdä DisplayAlerts = False, muuten se kysyy jatkuvasti: "Hei, et aio palauttaa arkkia." Ymmärsin. Ja sitten, vihdoin täällä, valitse ensimmäinen laskentataulukko, josta FN tulee olemaan Apple.xlsx, ja sitten voimme tehdä WBN.SaveAs Apple, Open XMLWorkbook. Ei makroja. Ja sitten Sulje - Sulkeuden kaunis asia on, että olen nyt palannut tähän työkirjaan, 2213.eikö? Joten nyt, kun minulla on DeleteMe, avaan sen, annan sen WBN: lle, teen tarvittavat asiat, päästä eroon kaikista ylimääräisistä arkeista - tiedän mitä minulla on. Huomaa, että ennen taulukoiden poistamista haluat tehdä DisplayAlerts = False, muuten se kysyy jatkuvasti: "Hei, et aio palauttaa arkkia." Ymmärsin. Ja sitten, vihdoin täällä, valitse ensimmäinen laskentataulukko, josta FN tulee olemaan Apple.xlsx, ja sitten voimme tehdä WBN.SaveAs Apple, Open XMLWorkbook. Ei makroja. Ja sitten Sulje - Sulkeuden kaunis asia on, että olen nyt palannut tähän työkirjaan, 2213.en aio saada arkkia takaisin. "Saan sen. Ja sitten, vihdoin täällä, valitse ensimmäinen laskentataulukko, jonka FN on Apple.xlsx, ja sitten voimme tehdä WBN.SaveAs Applen avoimena XMLWorkbookina. Ei makroja Ja sitten Sulje - Sulkeuden kaunis asia on, että olen nyt palannut tähän työkirjaan, 2213.en aio saada arkkia takaisin. "Saan sen. Ja sitten, vihdoin täällä, valitse ensimmäinen laskentataulukko, jonka FN on Apple.xlsx, ja sitten voimme tehdä WBN.SaveAs Applen avoimena XMLWorkbookina. Ei makroja Ja sitten Sulje - Sulkeuden kaunis asia on, että olen nyt palannut tähän työkirjaan, 2213.

Alright, it's been working really, really well, and the key to this whole thing is SaveCopyAs-- SaveCopyAs. So, to me-- well that's been around for a long time-- I never used it, and now I realize there's probably been a lot of times in the past where I should have used it. And maybe, you know, you should be using it or consider using it as well.

Okay, I forgot to mention one thing: the important thing is, with Save As Copy-- Save As Copy-- so when I do the Save As Copy, if I try to change to an xslx file type, I cannot change the file type here just by changing the extension in NewFN and when trying to open that subsequent workbook, they'll detect that it has macros, and it has the wrong extension, and it will yell at you. Right? So, you have to save it as xlsm and then later come back, reopen it, and save it as xlsx. But that all works with this macro.

So, hey, when I'm updating this book, Excel 2016, this summer, for Excel 2019, I'll make sure to include this tip. I think it's a useful tip to SaveCopyAs.

Käännös tästä päivästä: Haluat VBA: n kirjoittavan useita kopioita nykyisestä työkirjasta; Tallenna nimellä aiheuttaa ongelmia, koska alkuperäinen työkirja ei ole enää auki. sen sijaan käytät .SaveAsCopy-tiedostoa kopion tallentamiseen työkirjasta. Jos haluat ladata työkirjan tämän päivän videosta, makro mukaan lukien, käy YouTube-kuvauksen URL-osoitteessa.

Haluan sinun pysähtyvän. Nähdään ensi kerralla toisesta netcastista.

Lataa Excel-tiedosto

Excel-tiedoston lataaminen: save-as-keep-original-open.xlsm

Päivän Excel-ajatus

Olen pyytänyt Excel Master -kaveriltani neuvoja Excelistä. Tämän päivän ajatus miettiä:

"Päivämäärät ovat numeroita, ei sanoja."

Duane Aubin

Mielenkiintoisia artikkeleita...