VBA Yhdistä useita Excel -tiedostoja yhdeksi työkirjaksi

Tämä opetusohjelma näyttää, kuinka voit yhdistää useita Excel -tiedostoja yhteen työkirjaan VBA: ssa

Yhden työkirjan luominen useista työkirjoista VBA: n avulla edellyttää useita vaiheita.

  • Sinun on valittava työkirjat, joista haluat lähdetiedot - lähdetiedostot.
  • Sinun on valittava tai luotava työkirja, johon haluat sijoittaa tiedot - kohdetiedoston.
  • Sinun on valittava taulukot tarvitsemistasi lähdetiedostoista.
  • Sinun on kerrottava koodille, minne haluat sijoittaa tiedot kohdetiedostoon.

Yhdistä kaikki taulukot kaikista avoimista työkirjoista uuteen työkirjaan yksittäisinä arkkeina

Alla olevassa koodissa tiedostojen, joista haluat kopioida tiedot, on oltava auki, koska Excel selaa avoimia tiedostoja ja kopioi tiedot uuteen työkirjaan. Koodi sijoitetaan henkilökohtaiseen makrotyökirjaan.

Nämä tiedostot ovat VAIN Excel -tiedostoja, jotka pitäisi avata.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Sub CombineMultipleFiles ()Virhe GoTo eh'ilmoittaa muuttujat, joilla säilytetään vaaditut objektitDim wbDestination as WorkbookDim wbSource As WorkbookDim wsSource kuin laskentataulukkoDim wb TyökirjanaDim sh kuin laskentataulukkoDim strSheetName kuin merkkijonoDim strDestName kuin merkkijono'sammuta näytön päivitys nopeuttaaksesi asioitaApplication.ScreenUpdating = Väärä'Luo ensin uusi kohdekirjaAseta wbDestination = Työkirjat. Lisää'saat uuden työkirjan nimen, jotta voit sulkea sen pois alla olevasta silmukastastrDestName = wbDestination.Name'selaa nyt läpi kaikki avoimet työkirjat saadaksesi tiedot, mutta sulje pois uusi kirjasi tai henkilökohtainen makro -työkirjaJokaiselle wb: lle sovelluksessa. TyökirjatJos wb.nimi strDestName Ja wb.Name "PERSONAL.XLSB" niinAseta wbSource = wbJokaista sh In wbSource.Worksheetssh.Copy After: = Työkirjat (strDestName) .Sheets (1)Seuraava shLoppu JosSeuraava wb'sulje nyt kaikki avoimet tiedostot paitsi uusi tiedosto ja henkilökohtainen makro -työkirja.Jokaiselle wb: lle sovelluksessa. TyökirjatJos wb.nimi strDestName Ja wb.Name "PERSONAL.XLSB" niinwb.Sulje vääräLoppu JosSeuraava wb'poista arkki yksi kohdekirjastaApplication.DisplayAlerts = VääräSheets ("Sheet1"). PoistaApplication.DisplayAlerts = Totta'puhdista esineet muistin vapauttamiseksiAseta wbDestination = Ei mitäänAseta wbSource = ei mitäänAseta wsSource = ei mitäänAseta wb = ei mitäänOta näytön päivitys käyttöön, kun olet valmisApplication.ScreenUpdating = VääräLopeta Subeh:MsgBox -virhe KuvausEnd Sub

Napsauta Makro -valintaikkunaa suorittaaksesi toimenpiteen Excel -näytöltä.

Yhdistetty tiedostosi näytetään nyt.

Tämä koodi on kiertänyt jokaisen tiedoston läpi ja kopioinut taulukon uuteen tiedostoon. Jos jossakin tiedostoistasi on enemmän kuin yksi arkki - se kopioi myös ne - mukaan lukien taulukot, joissa ei ole mitään!

Yhdistä kaikki taulukot kaikista avoimista työkirjoista yhteen työkirjaan uudessa työkirjassa

Alla oleva menettely yhdistää kaikkien avoimien työkirjojen kaikkien arkkien tiedot yhdeksi laskentataulukkoksi uudessa luotussa työkirjassa.

Kunkin taulukon tiedot liitetään kohdetaulukkoon laskentataulukon viimeisellä varatulla rivillä.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 Sub CombineMultipleSheets ()Virhe GoTo eh'ilmoittaa muuttujat, joilla säilytetään vaaditut objektitDim wbDestination as WorkbookDim wbSource TyökirjaDim wsDestination as WorkheetDim wb TyökirjanaDim sh kuin laskentataulukkoDim strSheetName kuin merkkijonoDim strDestName kuin merkkijonoDim iRws kokonaislukunaDim iCols kokonaislukunaDim totRws kokonaislukunaDim strEndRng merkkijononaDim rngSource as Range'sammuta näytön päivitys nopeuttaaksesi asioitaApplication.ScreenUpdating = Väärä'Luo ensin uusi kohdekirjaAseta wbDestination = Työkirjat. Lisää'saat uuden työkirjan nimen, jotta voit sulkea sen pois alla olevasta silmukastastrDestName = wbDestination.Name'selaa nyt läpi kaikki avoimet työkirjat saadaksesi tiedotJokaiselle wb: lle sovelluksessa. TyökirjatJos wb.nimi strDestName Ja wb.Name "PERSONAL.XLSB" niinAseta wbSource = wbJokaista sh In wbSource.Worksheets'saat taulukon rivien ja sarakkeiden määränsh AktivoiActiveSheet.Cells.SpecialCells (xlCellTypeLastCell) .AktivoiiRws = ActiveCell.RowiCols = ActiveCell.Column'aseta taulukon viimeisen solun aluestrEndRng = sh.Cells (iRws, iCols) .osoite'Aseta lähdealue kopioitavaksiAseta rngSource = sh.Range ("A1:" & strEndRng)'Etsi kohdearkin viimeinen riviwbDestination.ActivateAseta wsDestination = ActiveSheetwsDestination.Cells.SpecialCells (xlCellTypeLastCell) .ValitsetotRws = ActiveCell.Row'Tarkista, onko tarpeeksi rivejä tietojen liittämiseksiJos totRws + rngSource.Rows.Count> wsDestination.Rows.Count SittenMsgBox "Ei ole tarpeeksi rivejä tietojen sijoittamiseen konsolidointitaulukkoon."Mene ehLoppu Jos'lisää rivi liittääksesi seuraavan rivin alasJos totRws 1 Sitten totRws = totRws + 1rngSource.Copy Destination: = wsDestination.Range ("A" & totRws)Seuraava shLoppu JosSeuraava wbSulje nyt kaikki avoimet tiedostot paitsi haluamasiJokaiselle wb: lle sovelluksessa. TyökirjatJos wb.nimi strDestName Ja wb.Name "PERSONAL.XLSB" niinwb.Sulje vääräLoppu JosSeuraava wb'puhdista esineet muistin vapauttamiseksiAseta wbDestination = ei mitäänAseta wbSource = ei mitäänAseta wsDestination = ei mitäänAseta rngSource = Ei mitäänAseta wb = ei mitäänOta näytön päivitys käyttöön, kun olet valmisApplication.ScreenUpdating = VääräLopeta Subeh:MsgBox -virhe KuvausEnd Sub

Yhdistä kaikki taulukot kaikista avoimista työkirjoista yhteen laskentataulukkoon aktiivisessa työkirjassa

Jos haluat tuoda kaikkien muiden avoimien työkirjojen tiedot siihen, jossa parhaillaan työskentelet, voit käyttää tätä koodia alla.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 OsayhdistelmäMultipleSheetsToExisting ()Virhe GoTo eh'ilmoittaa muuttujat, jotka säilyttävät vaaditut objektitDim wbDestination as WorkbookDim wbSource TyökirjaDim wsDestination as WorkheetDim wb TyökirjanaDim sh kuin laskentataulukkoDim strSheetName kuin merkkijonoDim strDestName kuin merkkijonoDim iRws kokonaislukunaDim iCols kokonaislukunaDim totRws kokonaislukunaDim rngEnd As StringDim rngSource as Range'aseta aktiivinen työkirjaobjekti kohdekirjaanAseta wbDestination = ActiveWorkbook'Hae aktiivisen tiedoston nimistrDestName = wbDestination.Name'sammuta näytön päivitys nopeuttaaksesi asioitaApplication.ScreenUpdating = VääräLuo ensin uusi kohdelaskentataulukko aktiiviseen työkirjaasiApplication.DisplayAlerts = Väärä'Jatka seuraava virhe, jos taulukkoa ei oleVirhe Jatka seuraavaksiActiveWorkbook.Sheets ("Konsolidointi"). Poista'nollaa virheloukku siirtyäksesi virheloukkuun lopussaVirhe GoTo ehApplication.DisplayAlerts = Totta'lisää uusi arkki työkirjaanActiveWorkbookin kanssaAseta wsDestination = .Sheets.Add (After: =. Sheets (.Sheets.Count))wsDestination.Name = "Yhdistäminen"Lopeta'selaa nyt läpi kaikki avoimet työkirjat saadaksesi tiedotJokaiselle wb: lle sovelluksessa. TyökirjatJos wb.nimi strDestName Ja wb.Name "PERSONAL.XLSB" niinAseta wbSource = wbJokaista sh In wbSource.Worksheets'saat taulukon rivien määränsh AktivoiActiveSheet.Cells.SpecialCells (xlCellTypeLastCell) .AktivoiiRws = ActiveCell.RowiCols = ActiveCell.ColumnrngEnd = sh.Cells (iRws, iCols) .osoiteAseta rngSource = sh.Range ("A1:" & rngEnd)'Etsi kohdearkin viimeinen riviwbDestination.ActivateAseta wsDestination = ActiveSheetwsDestination.Cells.SpecialCells (xlCellTypeLastCell) .ValitsetotRws = ActiveCell.Row'Tarkista, onko tarpeeksi rivejä tietojen liittämiseksiJos totRws + rngSource.Rows.Count> wsDestination.Rows.Count SittenMsgBox "Ei ole tarpeeksi rivejä tietojen sijoittamiseen konsolidointitaulukkoon."Mene ehLoppu Jos'lisää rivi liitettäväksi seuraavalle riville alas, jos et ole rivillä 1Jos totRws 1 Sitten totRws = totRws + 1rngSource.Copy Destination: = wsDestination.Range ("A" & totRws)Seuraava shLoppu JosSeuraava wbSulje nyt kaikki avoimet tiedostot paitsi haluamasiJokaiselle wb: lle sovelluksessa. TyökirjatJos wb.nimi strDestName Ja wb.Name "PERSONAL.XLSB" niinwb.Sulje vääräLoppu JosSeuraava wb'puhdista esineet muistin vapauttamiseksiAseta wbDestination = ei mitäänAseta wbSource = ei mitäänAseta wsDestination = ei mitäänAseta rngSource = Ei mitäänAseta wb = ei mitäänOta näytön päivitys käyttöön, kun olet valmisApplication.ScreenUpdating = VääräLopeta Subeh:MsgBox -virhe KuvausEnd Sub

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave