2015-04-10 5 views
0

Я хочу, чтобы скопировать данные из двух файлов XLS, Rahul.xls и Rohit.xls и вставить их в мастер-файле «Macro.xls»VBA кодирования Копировать Вставить

Код вставки копии Rahul.xls, но когда при вставке Rohit.xls он перекрывает данные, в результате чего все данные из Rahul.xls исчезнут, и я могу видеть только данные из Rohit.xls.

Во-вторых, это то, что он не закрывает исходные файлы после копирования.

Может кто-нибудь помочь мне при внесении изменений этот код так, что

  • данные Рохит придет после того, как данные Рахул в
  • после копирования данных наклеивая Рахул в лист закроется автоматически

    Sub OpenCopyPaste() 
    
    ' open the source workbook and select the source sheet 
    
        Workbooks.Open Filename:="C:\Rahul.xls" 
    
        Sheets("Case Tracker").Select 
    
        ' copy the source range 
    
        Sheets("Case Tracker").Range("A:J").Select 
    
        Selection.Copy 
    
        ' select current workbook and paste the values starting at A1 
    
        Windows("Macro.xls").Activate 
    
        Sheets("Sheet1").Select 
    
        Sheets("Sheet1").Range("A1").Select 
    
        ActiveSheet.Paste 
    
        Application.CutCopyMode = False 
    
        ActiveWorkbook.Save 
    
        Workbooks.Open Filename:="C:\Rohit.xls" 
    
        Sheets("Case Tracker").Select 
    
        ' copy the source range 
    
        Sheets("Case Tracker").Range("A:J").Select 
    
        Selection.Copy 
    
        ' select current workbook and paste the values starting at A1 
    
        Windows("Macro.xls").Activate 
    
        Sheets("Sheet1").Select 
    
        Sheets("Sheet1").Range("A1").Select 
    
        ActiveSheet.Paste 
    
        Application.CutCopyMode = False 
    
        ActiveWorkbook.Save 
    
    End Sub 
    

ответ

0

Код переписывает данные в диапазоне Sheet1 начиная с A1 после того, как он открывает второй файл. Подумайте, как найти конец диапазона и начать там новые данные.

Workbooks.Open Filename:="C:\Rohit.xls" 

    Sheets("Case Tracker").Select 

    ' copy the source range 

    Sheets("Case Tracker").Range("A:J").Select 
    Selection.Copy 

    ' select current workbook and paste the values starting at A1 

    Windows("Macro.xls").Activate 

    Sheets("Sheet1").Select 

    ' the code is overwriting the data in Sheet1 range starting at A1 
    Sheets("Sheet1").Range("A1").Select 

    ActiveSheet.Paste 

    Application.CutCopyMode = False 

    ActiveWorkbook.Save 

Для закрытия книги, я считаю, что это так же просто, как:

Workbooks(fileName).Close 
0

Попробуйте что-то вроде этого. Надеюсь, это то, что вам нужно, но если нет, я надеюсь, что это по крайней мере может привести вас к пути к ответу. Приветствия.

Workbooks.Open Filename:="C:\Rahul.xls" 

    Sheets("Case Tracker").Select 

    ' copy the source range 

    Sheets("Case Tracker").Range("A:J").Select 

    Selection.Copy 

    ' select current workbook and paste the values starting at A1 

     Windows("Macro.xls").Activate 

     Sheets("Sheet1").Select 

     Sheets("Sheet1").Range("A1").Select 

     ActiveSheet.Paste 

     Application.CutCopyMode = False 

     ActiveWorkbook.Save 

     workbooks("Rahul.xls").close workbooks("Rahul.xls").saved=true 

     Workbooks.Open Filename:="C:\Rohit.xls" 

     Sheets("Case Tracker").Select 

     ' copy the source range 

     Sheets("Case Tracker").Range("A:J").Select 
     Selection.Copy 

     ' select current workbook and paste the values starting at A1 

     Windows("Macro.xls").Activate 

     Sheets("Sheet1").Select 


     'Sheets("Sheet1").Range("A1").Select-take this bit and replace it with the following 

    emptyrow=worksheetfunction.counta(sheets("sheet1").range("A")) 'you can use any column to reference, one with continuous data is the best 
    sheets("Sheet1").cells(emptyrow,1).select 

     ActiveSheet.Paste 

     Application.CutCopyMode = False 

     ActiveWorkbook.Save 

     workbooks("Rohit.xls").close workbooks("Rohit.xls").saved=true 

     End Sub 
+0

Привет @USFBS ... я думаю, что есть какая-то ошибка. .. поскольку я не могу выполнить этот код. Появление ошибки на Sub «OpenCopyPaste() –

+0

может быть проблемой в моем синтаксисе. Я написал для этого похожий код, но в моем я всегда устанавливаю файл, который должен быть открыт как переменная (например,' set b1 = workbooks .open (filename) ') .Кроме того, я ошибочно написал' .Saved = True' как '.Save = True'. Чтобы уточнить, это должно быть' .Saved', некоторые настройки должны давать результаты, которые вы ищете. – USFBS

+0

Это Sub OpenCopyPaste() not Sub "OpenCopyPaste() – niton

0

Вы можете использовать переменный, чтобы определить последнюю использованную строку в листе назначения и addedd плюса один в диапазоне желания:

Sub CopySheets() 
    Workbooks.Open Filename:="C:\Rahul.xls" 
    'Variable to the last available row 
    Dim lLastRow As Long 

    Sheets("Case Tracker").Range("A:J").Copy Destination:=Windows("Macro.xls").Sheets("Sheet1").Range("A1") 

    Application.CutCopyMode = False 

    Workbooks.Open Filename:="C:\Rohit.xls" 

    'Retrieve the last used row in the destination 
    lLastRow = Workbooks("Macro").Worksheets("Sheet1").Cells(Workbooks("Macro").Worksheets("Sheet1").Rows.Count, "A").End(xlUp).Row 

    'Use the Lastrow variable aded to the range of the destination + 1 (the next empty row) 
    Sheets("Case Tracker").Range("A:J").Copy Destination:=Windows("Macro.xls").Sheets("Sheet1").Range("A" & lLastRow + 1) 

    Application.CutCopyMode = False 

    Workbooks("Macro").Save 
    Workbooks("Macro").Close 

    End Sub 

то время в вашей срочности, вы можете использовать только

Dim lLastRow As Long

и другая линия

lLastRow = Workbooks("Macro").Worksheets("Sheet1").Cells(Workbooks("Macro").Worksheets("Sheet1").Rows.Count, "A").End(xlUp).Row

и только добавить переменную модификации второго назначения, как это:

Sheets("Sheet1").Range("A" & lLastRow + 1)

в исходном коде

+0

Привет @Zegad, я пробовал это, однако он выдает ошибку« Object dowsn't поддерживает это свойство или метод ».... любая идея, что это все о –

+0

Его непроверенный, но если вы сообщите мне, какая строка отправит вам отладочную почту, я могу ее исправить. см. править – Zegad

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