Excel VBA для копіювання даних з іншої книги без відкриття

  • Поділитися Цим
Hugh West

В Microsoft Excel , Макроси VBA дозволяє легко вирішувати широкий спектр завдань. Якщо ми хочемо скопіювати дані з іншої книги, не відкриваючи її, ми можемо легко це зробити за допомогою Excel VBA У цій статті ви дізнаєтеся Excel VBA копіювати дані з іншої книги, не відкриваючи її.

Завантажити Практичний посібник

Ви можете завантажити робочий зошит та потренуватися за ним.

Копіювання іншої книги Дані.xlsm

3 Різні способи копіювання даних з іншої книги без відкриття за допомогою Excel VBA

Іноді нам потрібні дані з якоїсь попередньої книги. Якщо ми поспішаємо і нам потрібні дані негайно, не відкриваючи книгу, ми можемо скористатися кнопкою Excel VBA За допомогою Excel VBA ми можемо швидко скопіювати дані з інших книг, для цього нам просто потрібно знати місце розташування цієї книги.

Для копіювання даних будемо використовувати ім'я робочої книги Продукт_Деталі І ми хочемо скопіювати діапазон даних ( 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:="Виберіть діапазон даних", Default:="A1", Type:=8) wb.Activate Set rn2 = Application.InputBox(prompt:="Виберіть діапазон призначення", Default:="A1", Type:=8) rn1.Copy rn2 rn2.CurrentRegion.EntireColumn.AutoFit newwb.Close False End If End With End SubEnd With End 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 
  • Тут запускаємо код за допомогою Біжи 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("Товар").Range("B5:E10").Copy currentworkbook.Activate currentworkbook.Worksheets("Лист3").Activate currentworkbook.Worksheets("Лист3").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 та онлайн-навчання, щоб допомогти окремим особам і компаніям повністю розкрити свій потенціал.