Let's say that data we want to retrieve is a table made of 5 columns in the first sheet of 'Source file'.
First, we need to create a 'Data retrieval' sheet in 'My Macro.xlsm' file. Then, we can retrieve 'Source file.xlsx' data without opening it with the following VBA code :
Set appxl = CreateObject("Excel.application")
Dim myfile As Window
Dim currentSheet As Worksheet
Dim lastRow As Double
Dim sourceFileName As String
sourceFileName = "Source File.xlsx"
'Open Source File.xlsx
With appxl
.Workbooks.Open ActiveWorkbook.Path & "\" & sourceFileName
.Visible = False
End With
'Get first sheet data
Set myfile = appxl.Windows(sourceFileName)
myfile.Activate
Set currentSheet = appxl.Sheets(1)
'Past the table in my current Excel file
lastRow = currentSheet.Range("A1").End(xlDown).Row
Sheets("Data retrieval").Range("A1:E" & lastRow) = currentSheet.Range("A1:E" & lastRow).Value
'Close Source File.xlsx
appxl.Workbooks(sourceFileName).Close
As you can see, we actually open the source file with a false visible status and then we close it.
Bonjour,
ReplyDeleteJe viens de tomber sur votre code qui est vraiment pratique. Cependant j'aurai voulu savoir si il y'a possibilité de filtrer les données selon un critère basé dans mon fichier source ?
cordialement,
Arnaud
Thank you ! your code is so helpful !
ReplyDelete