2016-06-14 8 views
-2

Мне нужно взять таблицу и сравнить ее с электронной таблицей из другой книги. Я знаю, что могу это сделать с помощью VBA, но мне нужно будет скопировать электронную таблицу из другой книги, чтобы обе таблицы находились в одной книге и были доступны для сравнения. Как скопировать таблицу из одной книги в другую с помощью VBA?Использование VBA для копирования таблицы из вторичной книги в основную.

+0

Ваш вопрос является слишком общим и неясным. Пожалуйста, постарайтесь дать более подробную информацию. – ehh

+0

Пожалуйста, напишите, что вы пробовали, и результаты, которые не работают ... и обратитесь за помощью. – skkakkar

+0

Спасибо, я переписал вопрос, надеюсь, быть более ясным. – Jehiel238

ответ

0

Вам не нужно копировать листы, чтобы сравнить их. Просто откройте оба WorkBooks и установите ссылку на WorkSheets.

Sub CompareWorkBooks() 
    Dim wbPending As Workbook 
    Dim wsPending As Worksheet 

    Set wbPending = Workbooks("Items Pending") 
    Set wsPending = wsPending.Worksheet("Items") 

    Dim wbRecieved As Workbook 
    Dim wsRecieved As Worksheet 

    Set wbRecieved = Workbooks("Items Recieved") 
    Set wsRecieved = Worksheet("Items") 

End Sub 

Если вы предоставляете имена Workbooks & листы и предоставить информацию столбца, мы можем дать вам лучшие ответы в более короткий период времени. Не бойтесь выставлять свой код.

Если вы хотите, чтобы пользователь, чтобы выбрать целевую рабочую книгу и лист:

  • Создать UserForm
  • Declare targetWorkbook и tartgetWorksheet в верхней части модуля кода
  • Добавление кнопки и комбо коробка
  • При нажатии на кнопку открывается диалоговое файл открывается
  • ссылка теперь устанавливается на открытый файл
  • Имена всех рабочих листов добавляются в комбо
  • Изменение значения поля со списком будет установить Refernce в tartgetWorksheet

Option Explicit 
 
Public targetWorkbook As Workbook 
 
Public tartgetWorksheet As Worksheet 
 

 
Private Sub CommandButton1_Click() 
 
    Dim targetWorkbook As Workbook 
 
    Dim ws As Worksheet 
 
    Set targetWorkbook = getTargetWorkbook 
 

 
    If targetWorkbook = Nothing Then 
 
     MsgBox "Sowmthing went wrong", vbCritical, "Try Again" 
 
    Else 
 
     For Each ws In targetWorkbook.Worksheets 
 
      ComboBox1.AddItem ws.Name 
 
     Next 
 
    End If 
 

 
End Function 
 

 
Function getTargetWorkbook() As Workbook 
 
    With Application.FileDialog(msoFileDialogOpen) 
 
     .AllowMultiSelect = False 
 
     .Show 
 
     On Error Resume Next 
 
     Set getTargetWorkbook = Application.Workbooks.Open(.SelectedItems(1)) 
 
     On Error GoTo 0 
 
    End With 
 
End Function 
 

 
Private Sub ComboBox1_Change() 
 
    Set tartgetWorksheet = targetWorkbook.Worksheets(ComboBox1.Value) 
 
End Sub

+0

Спасибо! Можно ли предлагать пользователю выбирать две книги при каждом запуске программы? – Jehiel238

+0

Вы хотите, чтобы диалоговое окно браузера файлов открывалось для выбора книги? Имеет ли рабочий лист одноименное имя или пользователь должен выбрать его тоже? –

+0

Рабочие листы будут иметь разные имена, а предпочтительным является диалоговое окно браузера файлов. – Jehiel238

Смежные вопросы