Kopírování dat z jiného sešitu bez otevření pomocí aplikace Excel VBA

  • Sdílet Toto
Hugh West

Na adrese Microsoft Excel , Makra VBA lze snadno vyřešit celou řadu problémů. Pokud chceme zkopírovat data z jiného sešitu, aniž bychom jej museli otevřít, můžeme to snadno provést pomocí příkazu Excel VBA V tomto článku se dozvíte Excel VBA zkopírovat data z jiného sešitu, aniž byste jej otevřeli.

Stáhnout cvičebnici

Můžete si stáhnout pracovní sešit a procvičovat s nimi.

Kopírování dat jiného sešitu.xlsm

3 různé způsoby kopírování dat z jiného sešitu bez otevření pomocí Excelu VBA

Někdy potřebujeme data z nějakého předchozího sešitu. Pokud spěcháme a potřebujeme data okamžitě, aniž bychom museli sešit otevřít, můžeme použít příkaz Excel VBA Pomocí nástroje Excel VBA můžeme rychle kopírovat data z jiných sešitů, k čemuž potřebujeme znát pouze umístění daného sešitu.

Pro kopírování dat použijeme název sešitu Product_Details . A my chceme zkopírovat rozsah dat ( B4:E10 ). Datový soubor, který chceme zkopírovat, obsahuje některé výrobky, jejich prodejní cenu, náklady na zboží a hrubé ziskové rozpětí. Podívejme se na různá kritéria pro kopírování dat z jiného sešitu.

1. Kopírování dat listu z jiného sešitu bez otevření pomocí Excel VBA

Data z listu můžeme zkopírovat podle příkazu VBA K tomu je třeba provést níže uvedené kroky.

KROKY:

  • Nejprve přejděte na Vývojář z pásu karet.
  • Poté klikněte na Visual Basic otevřít Editor jazyka Visual Basic .
  • Další způsob, jak otevřít Editor jazyka Visual Basic je jednoduše stisknout Alt + F11 .

  • Nebo klikněte pravým tlačítkem myši na list a vyberte možnost Zobrazit kód .

  • Nyní si zapište Kód VBA níže.

Kód VBA:

 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 SubEnd With End Sub 
  • Nakonec spusťte kód kliknutím na tlačítko Run Sub na druhé straně stiskněte klávesovou zkratku F5 spustit kód.

POZNÁMKA: Kód nemusíte upravovat, stačí jej zkopírovat a vložit.

  • Spuštěním kódu Otevření souboru se zobrazí okno počítače.
  • Poté klikněte na sešit, do kterého chcete shromažďovat data.
  • Poté klikněte na OK tlačítko.

  • Nyní vyberte data ze zdrojového souboru přetažením přes rozsah. B5:E10 a pak klikněte na OK .

  • Po výběru rozsahu dat. Nyní vyberte cílový rozsah, do kterého chcete data vložit.
  • A klikněte na OK .

  • Nakonec se zdrojový soubor uzavře a data se zkopírují do cílového souboru.

Přečtěte si více: Excel VBA: Kopírování rozsahu do jiného sešitu

Podobná čtení

  • Jak vložit ze schránky do aplikace Excel pomocí VBA
  • Zakázat kopírování a vkládání v aplikaci Excel bez maker (pomocí 2 kritérií)
  • Jak zkopírovat vyloučení skrytých řádků v aplikaci Excel (4 snadné metody)
  • Kopírování řádků aplikace Excel VBA do jiného pracovního listu na základě kritérií
  • Jak použít VBA k vložení hodnot pouze bez formátování v aplikaci Excel

2. VBA pro kopírování datového rozsahu z jiného sešitu bez otevření v aplikaci Excel

Pomocí VBA kódu níže, můžeme zkopírovat data z datového rozsahu. Abychom toho dosáhli, musíme postupovat podle níže uvedených kroků.

KROKY:

  • Chcete-li začít, přejděte do Vývojář na pásu karet.
  • Za druhé otevřete Editor jazyka Visual Basic kliknutím na Visual Basic nebo stisknutím tlačítka Alt + F11 .
  • Nebo jednoduše klikněte pravým tlačítkem myši na list a vyberte možnost Zobrazit kód otevřít Editor jazyka Visual Basic .

  • Poté si zapište Kód VBA tam.

Kód VBA:

 Sub CollectData() Dim rgTarget As Range Set rgTarget = ActiveSheet.Range("B2:E10") 'kam vložit zkopírovaná data. rgTarget.FormulaArray = "='D:\[Product_Details.xlsx]Sheet1'!$B$4:$E$10" rgTarget.Formula = rgTarget.Value End Sub 
  • Zde spusťte kód pomocí Spustit Sub nebo stiskněte klávesovou zkratku F5 ke spuštění kódu.

POZNÁMKA: Kód nemusíte upravovat, stačí jen změnit rozsah podle zdrojových dat.

  • A nakonec se data zkopírují z jiného sešitu do aktivního sešitu.

Přečtěte si více: Makro pro kopírování a vkládání z jednoho pracovního listu do druhého (15 metod)

3. Excel VBA pro kopírování dat z jiného sešitu bez otevření pomocí příkazového tlačítka

Data můžeme zkopírovat z jiného sešitu pomocí příkazového tlačítka na panelu VBA kódu. Abychom toho dosáhli, musíme postupovat podle níže uvedených kroků.

KROKY:

  • Zaprvé, abyste mohli Příkazové tlačítko , přejděte na Vývojář tab.
  • Za druhé klikněte na Vložte rozevírací nabídka.
  • Za třetí klikněte na Příkazové tlačítko .

  • Vložili jsme Produkt na buňce A1 , protože je to název našeho listu zdrojového souboru. A nastavíme. Příkazové tlačítko , na pravé straně názvu listu zdrojového souboru. Tabulku jsme nyní vytvořili, potřebujeme jen data, která jsou v jiném sešitě.

  • Ze stejného důvodu přejděte na stránku Vývojář na pásu karet.
  • Dále klikněte na Visual Basic nebo stiskněte Alt + F11 spustit Editor jazyka Visual Basic .
  • Můžete také otevřít Editor jazyka Visual Basic kliknutím pravým tlačítkem myši na list a výběrem možnosti Zobrazit kód .

  • Nyní napište VBA kód dolů.

Kód VBA:

 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 
  • Poté kód uložte stisknutím tlačítka Ctrl + S .

POZNÁMKA: Kód můžete zkopírovat, stačí změnit cestu k souboru a rozsah dat.

  • A konečně, pokud kliknete na CommandButton1 zkopírujete data z jiného sešitu, aniž byste jej otevřeli.

Přečtěte si více: Makro pro kopírování dat z jednoho sešitu do druhého na základě kritérií

Závěr

Výše uvedená kritéria jsou pokyny pro kopírování dat z jiného sešitu, aniž by bylo nutné jej otevírat pomocí Excel VBA . Doufám, že vám to pomůže! Pokud máte nějaké dotazy, návrhy nebo zpětnou vazbu, dejte nám vědět v sekci komentářů. Nebo se můžete podívat na naše další články v sekci ExcelWIKI.com blog!

Hugh West je velmi zkušený školitel a analytik Excelu s více než 10 lety zkušeností v oboru. Má bakalářský titul v oboru Účetnictví a finance a magisterský titul v oboru Business Administration. Hugh má vášeň pro výuku a vyvinul jedinečný přístup k výuce, který lze snadno sledovat a pochopit. Jeho odborné znalosti Excelu pomohly tisícům studentů a profesionálů po celém světě zlepšit své dovednosti a vyniknout ve své kariéře. Prostřednictvím svého blogu Hugh sdílí své znalosti se světem a nabízí bezplatné výukové programy Excelu a online školení, které jednotlivcům a firmám pomohou dosáhnout jejich plného potenciálu.