#1
|
|||
|
|||
Data transfer between workbooks
Hello,
Do you have any hint how to quickly transfer data from one workbook to another? I have programmed macro to open random workbook, i want to transfer data from that opened workbook into the main workbook (the one i have macro). i have tried to use for loop, but considering thousands rows to be transfered it takes lots of time to finish the macro. Is here any other way how to transfer data? Or maybe speed up for loop code? It takes 2 minutes to finish the code :s Thank you for any reply Filip |
#2
|
|||
|
|||
Without seeing your macro it's difficult to suggest what might be right for you, but the quickest way to transfer data from one workbook to another is likely populating an array with the source data then writing the array to the destination.
|
#3
|
|||
|
|||
My code
Code:
Sub data_transfer() Dim File As String Dim xApp As Object File = Application.GetOpenFilename("Excel Files, *.xls*") If File = "False" Then Exit Sub Set xApp = CreateObject("Excel.Application") xApp.Visible = True xApp.Workbooks.Open File Dim i As Integer For i = 1 To 4000 Workbooks("makro.xlsm").Worksheets("List1").Range("A" & i).Value = xApp.Workbooks(1).Worksheets(1).Range("A" & i).Value Workbooks("makro.xlsm").Worksheets("List1").Range("B" & i).Value = xApp.Workbooks(1).Worksheets(1).Range("B" & i).Value Workbooks("makro.xlsm").Worksheets("List1").Range("C" & i).Value = xApp.Workbooks(1).Worksheets(1).Range("C" & i).Value Next i End Sub I have attached two files macro.xlsm and data.xlsx, in the workbook macro is button and code to open file and transmit its data. |
#4
|
|||
|
|||
Try replacing this part
Code:
Dim i As Integer For i = 1 To 4000 Workbooks("makro.xlsm").Worksheets("List1").Range("A" & i).Value = xApp.Workbooks(1).Worksheets(1).Range("A" & i).Value Workbooks("makro.xlsm").Worksheets("List1").Range("B" & i).Value = xApp.Workbooks(1).Worksheets(1).Range("B" & i).Value Workbooks("makro.xlsm").Worksheets("List1").Range("C" & i).Value = xApp.Workbooks(1).Worksheets(1).Range("C" & i).Value Next i Code:
Dim ray1 As Variant ray1 = xApp.Workbooks(1).Worksheets(1).UsedRange.Value Workbooks("makro.xlsm").Worksheets("List1").Range("A1").Resize(UBound(ray1, 1), UBound(ray1, 2)) = ray1 |
#5
|
|||
|
|||
Quote:
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
How to look up data from one of two workbooks | ColM1 | Excel | 2 | 09-10-2016 01:47 AM |
Syncing data between two excel workbooks using multiple criteria | Merlot | Excel | 2 | 05-04-2016 06:41 AM |
Formulas transferring to other pages in workbooks, but data isn't. | Melissa Ames | Excel | 4 | 03-02-2016 01:58 PM |
Pull the data from different closed workbooks paste into master vba | manilara | Excel Programming | 2 | 11-19-2015 08:41 PM |
How to transfer my data? | dexoey | Outlook | 0 | 09-15-2012 05:44 AM |