2015-12-10 10 views
0

Im в настоящее время работает над кодом, который мы надеемся, делает этот набор вещей:Перенос данных из одной книги в другую

  1. из файла базы данных, спросите меня, чтобы выбрать и открыть исходный файл
  2. Перейти к Источнику Лист и скопируйте все данные в столбцы A, B, D, E и F из исходного файла
  3. Вернитесь к файлу базы данных (лист данных) и найдите следующую пустую строку в столбцах A, B, D, E , и F.
  4. Затем вставьте все данные в колонку
  5. Закрыть исходный файл и не сохранить

Текущий код, который у меня удовлетворяет требованиям 1 & 5 только. Вот мой текущий код:

Option Explicit 


    Sub Copy_data() 
    Dim databasewkb As Workbook, sourcewkb As Workbook 
    Dim Ret1, Ret2 
    Dim srcws As Worksheet ' Variable for source workbook worksheets 
    Dim databasews As Worksheet ' Variable for portal workbook worksheets 
    Dim srcLR As Long ' last row of the source worksheet 
    Set databasewkb = ActiveWorkbook 

    '~~> Get the first File 
    Ret1 = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", _ 
    , "Please select the source file file") 
    If Ret1 = False Then 
     ' Tell the user why the code has been terminated 
     MsgBox ("Sorry, unable to proceed without a file.") 
     Exit Sub 
    End If 

    ' Open the Source file 
    Set sourcewkb = Workbooks.Open(Ret1) 

    ' Set the source worksheet 
    Set srcws = sourcewkb.Sheets("Source Sheet") 

    ' Set the first destination worksheet 
    Set databasews = databasewkb.Sheets("Data Sheet") 

With srcws 
    ' Find the last row of data in the Source worksheet 
    srcLR = .Cells(Rows.Count, 1).End(xlUp).Row 

    'im not sure what to put here 



    ' close the source workbook, don't save any changes 
    sourcewkb.Close SaveChanges:=False 

    ' Clear the objects 
    Set srcws = Nothing 
    Set sourcewkb = Nothing 
    Set databasews = Nothing 
    Set databasewkb = Nothing 
    End Sub 
+0

Колонка C не является частью операции? –

+0

Hi A.S.H, на самом деле нет. Я пропустил это намеренно, потому что я только намеревался скопировать те, что были в указанных столбцах. – user5500328

+0

Привет. Вы можете попытаться поместить код, указанный в моем ответе, в отсутствующий раздел вашего кода. И BTW не забывают «End With»;) –

ответ

0

'im not sure what to put here

srcLR = .Cells(.Rows.Count, 1).End(xlUp).Row 
    ' Beware here, use ".Rows.Count" instead of "Rows.Count", because 
    ' I suspect you are opening an old workbook in compatibility mode 

    Dim srcRange as Range, destRange as Range 

    Set srcRange = .Range("A1:B" & srcLR) 
    Set destRange = databasews.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 
    srcRange.Copy destRange 

    Set srcRange = .Range("D1:F" & srcLR) 
    Set destRange = destRange.Offset(0, 3) 
    srcRange.Copy destRange 

End With 
+0

Привет, ASH, имейте ошибки с (.Rows.Count, 1), его высказывание компилирует ошибку: Неверная или неквалифицированная ссылка – user5500328

+0

Пожалуйста, убедитесь, что вы поместили ее внутри блока 'With'? –

+0

Ой, извините. Кстати, вы случайно знаете альтернативный способ автоматизации процесса. Я имею в виду вместо открытия файла. В моей книге будут автоматически открываться файлы, которые я хочу открыть, и получить все эти данные выше и сделать то же самое, но сделать это по мере открытия книги. Есть ли смысл? hehe sorry – user5500328

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