- Tham gia
- 27/8/13
- Bài viết
- 19
- Được thích
- 1
Em có 2 file excel file 1 : book12 và file 2 : HN450
Bây giờ em muốn copy dữ liệu từ file : HN450 sang file book12 mà không cần mở file HN450
Em có dùng đoạn code bên dưới tham khảo từ diễn đàn nhưng tốc đọ copy chậm quá vì file book12 của mình tới hơn 7000 ngàn dòng lận, mong mọi người chỉ giáo dùm cho.
Thank trước nha.
Option Explicit
Sub Test()
Dim sFile As String, sSheet As String, sAddr As String
Sheet1.Activate
Range(Cells(3, 1), Cells(65000, 8)).ClearContents
If Sheet4.Cells(4, 19).Value = "HCM-350" Then
sFile = "C:\dutoan\HCM350\350hcm.xls" ' ten file can lay du lieu vao phan mem
sSheet = "dongia" ' ten sheet can lay du lieu vao
sAddr = "A3:g7400" ' o nay va o duoi phai bang nhau
Sheets("dongia").Range("A3:g7400") = GetData(sFile, sSheet, sAddr)
ElseIf Sheet4.Cells(4, 19).Value = "HN-450" Then
sFile = "C:\dutoan\HN450\HN450.xls" ' ten file can lay du lieu vao phan mem
sSheet = "dongia" ' ten sheet can lay du lieu vao
sAddr = "A3:g5828" ' o nay va o duoi phai bang nhau
Sheets("dongia").Range("A3:g5828") = GetData(sFile, sSheet, sAddr)
End If
'ActiveSheet.Paste Link:=True
End Sub
Function GetData(sFile As String, sSheet As String, sAddr As String)
Dim pLink As String, iR As Long, iC As Long, Arr
If Len(Dir(sFile)) Then
Arr = Range(sAddr)
pLink = "'" & Replace(sFile, Dir(sFile), "[" & Dir(sFile) & "]") & sSheet & "'!"
For iR = 1 To Range(sAddr).Rows.Count
For iC = 1 To Range(sAddr).Columns.Count
Arr(iR, iC) = ExecuteExcel4Macro(pLink & Range(sAddr).Cells(iR, iC).Address(, , 2))
Next iC
Next iR
GetData = Arr
End If
End Function
Bây giờ em muốn copy dữ liệu từ file : HN450 sang file book12 mà không cần mở file HN450
Em có dùng đoạn code bên dưới tham khảo từ diễn đàn nhưng tốc đọ copy chậm quá vì file book12 của mình tới hơn 7000 ngàn dòng lận, mong mọi người chỉ giáo dùm cho.
Thank trước nha.
Option Explicit
Sub Test()
Dim sFile As String, sSheet As String, sAddr As String
Sheet1.Activate
Range(Cells(3, 1), Cells(65000, 8)).ClearContents
If Sheet4.Cells(4, 19).Value = "HCM-350" Then
sFile = "C:\dutoan\HCM350\350hcm.xls" ' ten file can lay du lieu vao phan mem
sSheet = "dongia" ' ten sheet can lay du lieu vao
sAddr = "A3:g7400" ' o nay va o duoi phai bang nhau
Sheets("dongia").Range("A3:g7400") = GetData(sFile, sSheet, sAddr)
ElseIf Sheet4.Cells(4, 19).Value = "HN-450" Then
sFile = "C:\dutoan\HN450\HN450.xls" ' ten file can lay du lieu vao phan mem
sSheet = "dongia" ' ten sheet can lay du lieu vao
sAddr = "A3:g5828" ' o nay va o duoi phai bang nhau
Sheets("dongia").Range("A3:g5828") = GetData(sFile, sSheet, sAddr)
End If
'ActiveSheet.Paste Link:=True
End Sub
Function GetData(sFile As String, sSheet As String, sAddr As String)
Dim pLink As String, iR As Long, iC As Long, Arr
If Len(Dir(sFile)) Then
Arr = Range(sAddr)
pLink = "'" & Replace(sFile, Dir(sFile), "[" & Dir(sFile) & "]") & sSheet & "'!"
For iR = 1 To Range(sAddr).Rows.Count
For iC = 1 To Range(sAddr).Columns.Count
Arr(iR, iC) = ExecuteExcel4Macro(pLink & Range(sAddr).Cells(iR, iC).Address(, , 2))
Next iC
Next iR
GetData = Arr
End If
End Function