Excel VBA kopioida tietoja toisesta työkirjasta avaamatta sitä

  • Jaa Tämä
Hugh West

Osoitteessa Microsoft Excel , VBA-makrot voidaan helposti ratkaista monenlaisia ongelmia. Jos haluamme kopioida tietoja toisesta työkirjasta avaamatta työkirjaa, voimme tehdä sen helposti käyttämällä komentoa Excel VBA . Tässä artikkelissa opit Excel VBA kopioida tietoja toisesta työkirjasta avaamatta sitä.

Lataa harjoituskirja

Voit ladata työkirjan ja harjoitella niiden avulla.

Kopioi toisen työkirjan Data.xlsm

3 eri tapaa kopioida tietoja toisesta työkirjasta avaamatta Excel VBA: lla

Joskus tarvitsemme tietoja jostain aiemmasta työkirjasta. Jos meillä on kiire ja tarvitsemme tiedot heti avaamatta työkirjaa, voimme käyttää komentoa Excel VBA Excel VBA:n avulla voimme nopeasti kopioida tietoja muista työkirjoista, ja tätä varten meidän on vain tiedettävä kyseisen työkirjan sijainti.

Kopioidaksemme tiedot käytämme työkirjan nimeä Product_Details Ja haluamme kopioida data-alueen ( B4:E10 ). Tietokokonaisuus, jonka haluamme kopioida, sisältää joitakin tuotteita, niiden myyntihinnan, tuotekustannukset ja bruttovoittomarginaalit. Tarkastellaan eri kriteerejä tietojen kopioimiseksi toisesta työkirjasta.

1. Kopioi arkin tiedot toisesta työkirjasta avaamatta sitä Excel VBA:lla.

Voimme kopioida tietoja arkilta noudattamalla komentoa VBA Tätä varten meidän on käytävä läpi seuraavat vaiheet.

ASKELEET:

  • Mene ensin osoitteeseen Kehittäjä välilehti nauhasta.
  • Napsauta sen jälkeen Visual Basic avataksesi Visual Basic Editor .
  • Toinen tapa avata Visual Basic Editor on yksinkertaisesti painaa Alt + F11 .

  • Tai napsauta hiiren kakkospainikkeella arkkia ja valitse sitten Näytä koodi .

  • Kirjoita nyt ylös VBA-koodi alla.

VBA-koodi:

 Sub Copy_Data_from_Another_Workbook() Dim wb As Workbook Dim newwb As Workbook Dim rn1 As Range Dim rn2 As Range Set wb = Application.ActiveWorkbook With Application.FileDialog(msoFileDialogOpen) .Filters.Clear .Filters.Add "Excel 2007-13", "*.xlsx; *.xlsm; *.xlsa" .AllowMultiSelect = False .Show If .SelectedItems.Count> 0 Then Application.Workbooks.Open.SelectedItems(1) Set newwb = Application.ActiveWorkbook Set rn1 = Application.InputBox(prompt:="Select Data Range", Default:="A1", Type:=8) wb.Activate Set rn2 = Application.InputBox(prompt:="Select Destination Range", Default:="A1", Type:=8) rn1.Copy rn1.Copy rn2 rn2.CurrentRegion.EntireColumn.AutoFit newwb.Close False End If End With End SubEnd With End Sub 
  • Lopuksi suorita koodi napsauttamalla Suorita Sub painiketta, paina toisaalta pikanäppäintä F5 näppäimellä koodin suorittamiseksi.

HUOM: Sinun ei tarvitse muuttaa koodia, kopioi ja liitä koodi.

  • Suorittamalla koodi Tiedoston avaaminen ikkuna tulee näkyviin tietokoneeltasi.
  • Napsauta sen jälkeen työkirjaa, josta haluat kerätä tietoja.
  • Napsauta sitten OK nappi.

  • Valitse nyt tiedot lähdetiedostosta vetämällä alueen yli. B5:E10 ja napsauta sitten OK .

  • Kun olet valinnut data-alueen. Valitse nyt kohdealue, johon haluat sijoittaa tiedot.
  • Ja, klikkaa OK .

  • Lopulta tämä sulkee lähdetiedoston ja tiedot kopioituvat kohdetiedostoon.

Lue lisää: Excel VBA: Kopioi alue toiseen työkirjaan

Samanlaisia lukemia

  • Kuinka liittää leikepöydästä Exceliin VBA: n avulla
  • Kopioinnin ja liittämisen poistaminen käytöstä Excelissä ilman makroja (2 kriteerillä)
  • Miten kopioida piilotetut rivit Excelissä (4 helppoa menetelmää)?
  • Excel VBA kopioida rivit toiseen laskentataulukkoon kriteerien perusteella
  • VBA: n käyttäminen vain arvojen liittämiseen ilman muotoilua Excelissä

2. VBA kopioida data-alue toisesta työkirjasta avaamatta sitä Exceliin

Käyttämällä VBA koodin avulla voimme kopioida tietoja data-alueelta. Tätä varten meidän on noudatettava alla olevia ohjeita.

VAIHEET:

  • Siirry aluksi osoitteeseen Kehittäjä välilehti nauhassa.
  • Toiseksi, avaa Visual Basic Editor klikkaamalla Visual Basic tai painamalla Alt + F11 .
  • Tai napsauta hiiren kakkospainikkeella arkkia ja valitse Näytä koodi avataksesi Visual Basic Editor .

  • Sen jälkeen kirjoita ylös VBA-koodi siellä.

VBA-koodi:

 Sub CollectData() Dim rgTarget As Range Set rgTarget = ActiveSheet.Range("B2:E10") 'mihin kopioidut tiedot laitetaan. rgTarget.FormulaArray = "='D:\[Product_Details.xlsx]Sheet1'!$B$4:$E$10" rgTarget.Formula = rgTarget.Value End Sub 
  • Suorita koodi käyttämällä Suorita Sub tai paina pikanäppäintä F5 koodin suorittamiseksi.

HUOM: Sinun ei tarvitse muuttaa koodia, sinun tarvitsee vain muuttaa aluetta lähdetietojesi mukaan.

  • Lopuksi tiedot kopioidaan nyt toisesta työkirjasta aktiiviseen työkirjaan.

Lue lisää: Makro kopioida ja liittää yhdestä laskentataulukosta toiseen (15 menetelmää)

3. Excel VBA tietojen kopioimiseksi toisesta työkirjasta avaamatta sitä komentopainikkeella

Voimme kopioida tietoja toisesta työkirjasta käyttämällä komentopainiketta työkalun VBA Tätä varten meidän on noudatettava alla esitettyjä ohjeita.

VAIHEET:

  • Ensinnäkin, jotta voidaan laittaa Komentopainike , siirry osoitteeseen Kehittäjä välilehti.
  • Toiseksi, napsauta Lisää pudotusvalikosta.
  • Kolmanneksi, napsauta Komentopainike .

  • Laitamme Tuote solussa A1 , koska se on lähdetiedostomme arkin nimi. Ja asetamme tiedostonimen Komentopainike , lähdetiedoston arkin nimen oikealla puolella. Loimme taulukon nyt, tarvitsemme vain tiedot, jotka ovat toisessa työkirjassa.

  • Samoin voit siirtyä osoitteeseen Kehittäjä välilehti nauhassa.
  • Klikkaa seuraavaksi Visual Basic tai paina Alt + F11 käynnistääksesi Visual Basic Editor .
  • Voit myös avata Visual Basic Editor napsauttamalla hiiren kakkospainikkeella arkkia ja valitsemalla Näytä koodi .

  • Kirjoita nyt VBA koodi alas.

VBA-koodi:

 Private Sub CommandButton1_Click() Dim sourceworkbook As Workbook Dim currentworkbook As Workbook Set currentworkbook = ThisWorkbook Set sourceworkbook = Workbooks.Open("D:\Products_Details.xlsx") sourceworkbook.Worksheets("Product").Range("B5:E10").Copy currentworkbook.Activate currentworkbook.Worksheets("Sheet3").Activate currentworkbook.Worksheets("Sheet3").Cells(4, 1).Select ActiveSheet.Pastesourceworkbook.Close Set sourceworkbook = Nothing Set currentworkbook = Nothing ThisWorkbook.Activate Worksheets("Sheet3").Activate Worksheets("Sheet3").Range("A2").Select End Sub 
  • Tallenna sitten koodi painamalla Ctrl + S .

HUOM: Voit kopioida koodin, sinun tarvitsee vain muuttaa tiedostopolku ja data-alue.

  • Ja lopuksi, jos napsautat CommandButton1 tämä kopioi tiedot toisesta työkirjasta avaamatta sitä.

Lue lisää: Makro tietojen kopioimiseksi yhdestä työkirjasta toiseen kriteerien perusteella

Päätelmä

Edellä esitetyt kriteerit ovat ohjeita tietojen kopioimiseksi toisesta työkirjasta avaamatta sitä komennolla Excel VBA Toivottavasti tämä auttaa sinua! Jos sinulla on kysyttävää, ehdotuksia tai palautetta, kerro meille kommenttiosioon. Tai voit vilkaista muita artikkeleitamme osoitteessa ExcelWIKI.com blogi!

Hugh West on erittäin kokenut Excel-kouluttaja ja analyytikko, jolla on yli 10 vuoden kokemus alalta. Hän on koulutukseltaan laskentatoimen ja rahoituksen kandidaatti sekä kauppatieteiden maisteri. Hughilla on intohimo opettamiseen, ja hän on kehittänyt ainutlaatuisen opetusmenetelmän, jota on helppo seurata ja ymmärtää. Hänen asiantuntemuksensa Excelistä on auttanut tuhansia opiskelijoita ja ammattilaisia ​​maailmanlaajuisesti parantamaan taitojaan ja menestymään urallaan. Blogissaan Hugh jakaa tietämyksensä maailman kanssa tarjoamalla ilmaisia ​​Excel-opetusohjelmia ja verkkokoulutusta auttaakseen yksilöitä ja yrityksiä saavuttamaan täyden potentiaalinsa.