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:="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 
  • Наконец, запустите код, нажав кнопку Run Sub с другой стороны, нажмите на клавиатуре сочетание клавиш F5 чтобы запустить код.

ПРИМЕЧАНИЕ: Вам не нужно изменять код. Просто скопируйте и вставьте код.

  • Запустив код Открыть файл появится окно с вашего компьютера.
  • После этого нажмите на рабочую книгу, по которой вы хотите собрать данные.
  • Затем нажмите на OK кнопка.

  • Теперь выберите данные из исходного файла, перетащив их за диапазон B5:E10 а затем нажмите OK .

  • После выбора диапазона данных. Теперь выберите диапазон назначения, в который вы хотите поместить данные.
  • И, нажмите OK .

  • В итоге исходный файл будет закрыт, а данные скопированы в конечный файл.

Читать далее: 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("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 .

ПРИМЕЧАНИЕ: Вы можете скопировать код, вам просто нужно изменить путь к файлу и диапазон данных.

  • И, наконец, если вы нажмете на Командная кнопка1 это позволит скопировать данные из другой рабочей книги, не открывая ее.

Читать далее: Макрос для копирования данных из одной рабочей книги в другую на основе критериев

Заключение

Приведенные выше критерии являются руководством для копирования данных из другой рабочей книги, не открывая ее с помощью Excel VBA Если у вас есть вопросы, предложения или отзывы, пожалуйста, сообщите нам об этом в разделе комментариев. Вы также можете просмотреть другие наши статьи в разделе ExcelWIKI.com блог!

Хью Уэст — опытный тренер и аналитик Excel с более чем 10-летним опытом работы в отрасли. Он имеет степень бакалавра в области бухгалтерского учета и финансов и степень магистра делового администрирования. Хью страстно любит преподавать и разработал уникальный подход к обучению, которому легко следовать и который легко понять. Его экспертные знания Excel помогли тысячам студентов и специалистов по всему миру улучшить свои навыки и преуспеть в своей карьере. В своем блоге Хью делится своими знаниями со всем миром, предлагая бесплатные учебные пособия по Excel и онлайн-обучение, чтобы помочь отдельным лицам и компаниям полностью раскрыть свой потенциал.