Excel VBA för att kopiera data från en annan arbetsbok utan att öppna den

  • Dela Detta
Hugh West

Microsoft Excel , VBA-makroner kan enkelt lösa många olika problem. Om vi vill kopiera data från en annan arbetsbok utan att öppna arbetsboken kan vi enkelt göra det genom att använda Excel VBA I den här artikeln får du lära dig Excel VBA för att kopiera data från en annan arbetsbok utan att öppna den.

Ladda ner övningsboken

Du kan ladda ner arbetsboken och öva med dem.

Kopiera en annan arbetsbok Data.xlsm

3 olika sätt att kopiera data från en annan arbetsbok utan att öppna med Excel VBA

Ibland behöver vi data från en tidigare arbetsbok. Om vi har bråttom och behöver data omedelbart utan att öppna arbetsboken kan vi använda Excel VBA . Med Excel VBA kan vi snabbt kopiera data från andra arbetsböcker, för detta behöver vi bara veta var den aktuella arbetsboken finns.

För att kopiera data kommer vi att använda arbetsboksnamnet Produktdetaljer Och vi vill kopiera dataområdet ( B4:E10 ). Datasetet som vi vill kopiera innehåller några produkter, deras försäljningspris, varukostnad och bruttovinstmarginaler. Låt oss titta på olika kriterier för att kopiera data från en annan arbetsbok.

1. Kopiera ett arkdata från en annan arbetsbok utan att öppna med Excel VBA

Vi kan kopiera data från ett blad genom att följa VBA koden nedan. För att göra detta måste vi gå igenom nedanstående steg.

STEG:

  • Först går du till Utvecklare i bandet.
  • Klicka sedan på Visual Basic för att öppna Redigerare för Visual Basic .
  • Ett annat sätt att öppna Redigerare för Visual Basic är helt enkelt att trycka på Alt + F11 .

  • Eller högerklicka på arket och välj sedan Visa kod .

  • Skriv nu ner den VBA-kod nedan.

VBA-kod:

 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 rn2 rn2.CurrentRegion.EntireColumn.AutoFit newwb.Close False End If End With End SubSlutar med Slutar med End Sub 
  • Slutligen kör du koden genom att klicka på Kör underordnat knappen, å andra sidan, trycker du på tangentbordsgenvägen F5 för att köra koden.

OBS: Du behöver inte ändra koden, utan kan bara kopiera och klistra in koden.

  • Genom att köra koden Öppna en fil fönstret kommer att visas från din dator.
  • Därefter klickar du på den arbetsbok som du vill samla in data.
  • Klicka sedan på OK knapp.

  • Välj nu data från källfilen genom att dra över området. B5:E10 och klicka sedan på OK .

  • När du har valt dataområdet väljer du nu det målområde där du vill placera data.
  • Och klicka på OK .

  • I slutändan stängs källfilen och data kopieras till destinationsfilen.

Läs mer: Excel VBA: Kopiera intervall till en annan arbetsbok

Liknande läsningar

  • Hur man klistrar in från Urklipp till Excel med VBA
  • Inaktivera kopiera och klistra in i Excel utan makron (med 2 kriterier)
  • Hur man kopierar exkluderande dolda rader i Excel (4 enkla metoder)
  • Excel VBA för att kopiera rader till ett annat arbetsblad baserat på kriterier
  • Så här använder du VBA för att klistra in endast värden utan formatering i Excel

2. VBA för att kopiera ett dataområde från en annan arbetsbok utan att öppna Excel

Genom att använda VBA koden nedan kan vi kopiera data från ett dataområde. Vi måste följa stegen nedan för att åstadkomma detta.

STEG:

  • Till att börja med navigerar du till Utvecklare på bandet.
  • För det andra öppnar du Redigerare för Visual Basic genom att klicka på Visual Basic eller genom att trycka på Alt + F11 .
  • Eller så högerklickar du på arket och väljer Visa kod för att öppna Redigerare för Visual Basic .

  • Skriv därefter ner den VBA-kod där.

VBA-kod:

 Sub CollectData() Dim rgTarget As Range Set rgTarget = ActiveSheet.Range("B2:E10") 'var de kopierade uppgifterna ska placeras. rgTarget.FormulaArray = "='D:\[Product_Details.xlsx]Sheet1'!$B$4:$E$10" rgTarget.Formula = rgTarget.Value End Sub 
  • Här kör du koden med hjälp av Kör Under eller tryck på tangentbordsgenvägen F5 för att köra koden.

OBS: Du behöver inte ändra koden, du behöver bara ändra intervallet enligt dina källdata.

  • Slutligen kopieras data från en annan arbetsbok till den aktiva arbetsboken.

Läs mer: Makro för att kopiera och klistra in från ett arbetsblad till ett annat (15 metoder)

3. Excel VBA för att kopiera data från en annan arbetsbok utan att öppna med hjälp av kommandoknappen

Vi kan kopiera data från en annan arbetsbok genom att använda kommandoknappen i VBA För att åstadkomma detta måste vi följa de steg som beskrivs nedan.

STEG:

  • För det första, för att sätta en Kommandoknapp , gå till Utvecklare fliken.
  • För det andra klickar du på Infoga rullgardinsmenyn.
  • För det tredje klickar du på Kommandoknapp .

  • Vi har lagt in den Produkt på cell A1 eftersom det är vårt namn på källfilen. Och vi ställer in Kommandoknapp till höger om källfilens arknamn. Vi har skapat tabellen nu, vi behöver bara uppgifterna som finns i en annan arbetsbok.

  • På samma sätt kan du navigera till Utvecklare i bandet.
  • Klicka sedan på Visual Basic eller tryck på Alt + F11 för att starta Redigerare för Visual Basic .
  • Du kan också öppna Redigerare för Visual Basic genom att högerklicka på arket och välja Visa kod .

  • Skriv nu den VBA kod ned.

VBA-kod:

 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 
  • Spara sedan koden genom att trycka på Ctrl + S .

OBS: Du kan kopiera koden, du behöver bara ändra filsökvägen och dataområdet.

  • Och slutligen, om du klickar på Kommandoknapp1 Detta kopierar data från en annan arbetsbok utan att öppna den.

Läs mer: Makro för att kopiera data från en arbetsbok till en annan baserat på kriterier

Slutsats

Ovanstående kriterier är riktlinjer för att kopiera data från en annan arbetsbok utan att öppna den med Excel VBA Hoppas att detta hjälper dig! Om du har några frågor, förslag eller feedback, låt oss veta det i kommentarsfältet. Du kan också ta en titt på våra andra artiklar i ExcelWIKI.com blogg!

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.