Excel VBA за копиране на данни от друга работна книга без отваряне

  • Споделя Това
Hugh West

В Microsoft Excel , Макроси VBA Ако искаме да копираме данни от друга работна книга, без да я отваряме, можем лесно да го направим с помощта на Excel VBA . В тази статия ще научите Excel VBA за копиране на данни от друга работна книга, без да я отваряте.

Изтегляне на работна тетрадка за практика

Можете да изтеглите работната тетрадка и да се упражнявате с тях.

Копиране на друга работна книга Data.xlsm

3 различни начина за копиране на данни от друга работна книга без отваряне с Excel VBA

Понякога ни трябват данни от някоя предишна работна книга. Ако бързаме и се нуждаем от данните веднага, без да отваряме работната книга, можем да използваме функцията Excel VBA С Excel VBA можем бързо да копираме данните от други работни книги, като за целта трябва само да знаем местоположението на конкретната работна книга.

За да копираме данните, ще използваме името на работната книга Product_Details . И искаме да копираме диапазона от данни ( B4:E10 ). наборът от данни, който искаме да копираме, съдържа някои продукти, тяхната продажна цена, себестойност на стоките и марж на брутната печалба. Нека разгледаме различни критерии за копиране на данни от друга работна книга.

1. Копиране на данни от лист от друга работна книга без отваряне с Excel VBA

Можем да копираме данни от даден лист, като следваме VBA За тази цел трябва да преминете през следните стъпки.

СТЪПКИ:

  • Първо, отидете в Разработчик от лентата.
  • След това щракнете върху Visual Basic за да отворите Редактор на Visual Basic .
  • Друг начин за отваряне на Редактор на Visual Basic е просто да натиснете Alt + F11 .

  • Или щракнете с десния бутон на мишката върху листа, след което изберете Вижте кода .

  • Сега запишете Код VBA по-долу.

Код 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 SubКрай с Край Sub 
  • Накрая стартирайте кода, като щракнете върху Изпълнявайте функцията Run Sub от друга страна, натиснете клавишната комбинация F5 за да стартирате кода.

ЗАБЕЛЕЖКА: Не е необходимо да променяте кода. Просто го копирайте и поставете.

  • С изпълнението на кода Отваряне на файлове ще се появи прозорец от компютъра ви.
  • След това щракнете върху работната книга, в която искате да събирате данни.
  • След това щракнете върху ОК бутон.

  • Сега изберете данните от изходния файл, като плъзнете върху диапазона B5:E10 и след това щракнете върху ОК .

  • След като изберете диапазона на данните. Сега изберете диапазона на местоназначението, в който искате да поставите данните.
  • И щракнете върху ОК .

  • В крайна сметка това ще затвори изходния файл и данните ще се копират в дестинационния файл.

Прочетете още: Excel VBA: Копиране на обхват в друга работна книга

Подобни четива

  • Как да поставите от клипборда в Excel с помощта на VBA
  • Деактивиране на копирането и поставянето в Excel без макроси (с 2 критерия)
  • Как да копирате изключващи скрити редове в Excel (4 лесни метода)
  • Excel VBA за копиране на редове в друг работен лист въз основа на критерии
  • Как да използвате VBA, за да поставяте само стойности без форматиране в Excel

2. VBA за копиране на диапазон от данни от друга работна книга, без да се отваря в Excel

С помощта на VBA За да постигнем това, трябва да следваме стъпките по-долу.

СТЪПКИ:

  • За да започнете, отидете в Разработчик в лентата.
  • Второ, отворете Редактор на Visual Basic като кликнете върху Visual Basic или като натиснете Alt + F11 .
  • Или просто щракнете с десния бутон на мишката върху листа и изберете Вижте кода за да отворите Редактор на Visual Basic .

  • След това запишете Код VBA там.

Код VBA:

 Sub CollectData() Dim rgTarget As Range Set rgTarget = ActiveSheet.Range("B2:E10") "къде да поставим копираните данни. rgTarget.FormulaArray = "='D:\[Product_Details.xlsx]Sheet1'!$B$4:$E$10" rgTarget.Formula = rgTarget.Value End Sub 
  • Изпълнете кода, като използвате Изпълнявайте Под или натиснете бързата клавишна комбинация F5 за да стартирате кода.

ЗАБЕЛЕЖКА: Не е необходимо да променяте кода, достатъчно е само да промените диапазона в съответствие с изходните данни.

  • И накрая, данните вече са копирани от друга работна книга в активната работна книга.

Прочетете още: Макрос за копиране и поставяне от един работен лист в друг (15 метода)

3. Excel VBA за копиране на данни от друга работна книга, без да се отваря, чрез използване на команден бутон

Можем да копираме данни от друга работна книга, като използваме бутона за команда на VBA За да постигнем това, трябва да следваме стъпките, описани по-долу.

СТЪПКИ:

  • Първо, за да поставите Команден бутон , отидете в Разработчик таб.
  • Второ, щракнете върху Вмъкване на падащо меню.
  • Трето, щракнете върху Команден бутон .

  • Поставяме Продукт на клетката A1 , тъй като това е името на листа на нашия изходен файл. И задаваме Команден бутон , от дясната страна на името на листа на изходния файл. Вече създадохме таблицата, просто се нуждаем от данните, които се намират в друга работна книга.

  • По същия начин отидете в Разработчик в лентата.
  • След това щракнете върху Visual Basic или натиснете Alt + F11 за да стартирате Редактор на Visual Basic .
  • Можете също така да отворите Редактор на Visual Basic като щракнете с десния бутон на мишката върху листа и изберете Вижте кода .

  • Сега напишете VBA код надолу.

Код 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 
  • След това запишете кода, като натиснете Ctrl + S .

ЗАБЕЛЕЖКА: Можете да копирате кода, само трябва да промените пътя до файла и обхвата на данните.

  • И накрая, ако щракнете върху CommandButton1 това ще копира данните от друга работна книга, без да я отваря.

Прочетете още: Макрос за копиране на данни от една работна книга в друга въз основа на критерии

Заключение

Горните критерии са насоки за копиране на данни от друга работна книга, без да я отваряте с Excel VBA . Надявам се, че това ще ви помогне! Ако имате въпроси, предложения или обратна връзка, моля, съобщете ни в раздела за коментари. Или можете да хвърлите един поглед на другите ни статии в ExcelWIKI.com блог!

Хю Уест е опитен обучител и анализатор на Excel с над 10 години опит в индустрията. Има бакалавърска степен по счетоводство и финанси и магистърска степен по бизнес администрация. Хю има страст към преподаването и е разработил уникален подход на преподаване, който е лесен за следване и разбиране. Неговите експертни познания по Excel са помогнали на хиляди студенти и професионалисти по целия свят да подобрят уменията си и да постигнат отлични резултати в кариерата си. Чрез своя блог Хю споделя знанията си със света, като предлага безплатни уроци за Excel и онлайн обучение, за да помогне на хората и фирмите да достигнат пълния си потенциал.