- Katılım
- 15 Mart 2005
- Mesajlar
- 42,249
- Excel Vers. ve Dili
- Microsoft 365 Tr-En 64 Bit
Alternatif;
Hız olarak avantaj sağlayabilir.
Hız olarak avantaj sağlayabilir.
Kod:
Option Explicit
Sub Verileri_Aktar()
Dim K1 As Workbook, S1 As Worksheet, Yol As String
Dim Dosya As String, Son As Long, Zaman As Double
Zaman = Timer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set K1 = ThisWorkbook
Set S1 = K1.Sheets("Sayfa1")
Yol = K1.Path & Application.PathSeparator
S1.Range("A2:AH" & S1.Rows.Count).ClearContents
Son = 2
Dosya = Dir(Yol & "*.xls*")
While Dosya <> ""
If Dosya <> K1.Name Then
S1.Cells(Son, 1) = Dosya
With Range("B" & Son & ":L" & Son)
.Formula = "=INDEX('" & Yol & "[" & Dosya & "]Sayfa1'!$E:$E,MATCH(B$1," & "'" & Yol & "[" & Dosya & "]Sayfa1'!$D:$D,0))"
.Value = .Value
End With
With Range("M" & Son & ":W" & Son)
.Formula = "=INDEX('" & Yol & "[" & Dosya & "]Sayfa1'!$H:$H,MATCH(M$1," & "'" & Yol & "[" & Dosya & "]Sayfa1'!$F:$F,0))"
.Value = .Value
End With
With Range("X" & Son & ":AH" & Son)
.Formula = "=INDEX('" & Yol & "[" & Dosya & "]Sayfa1'!$I:$I,MATCH(X$1," & "'" & Yol & "[" & Dosya & "]Sayfa1'!$J:$J,0))"
.Value = .Value
End With
Son = Son + 1
End If
Dosya = Dir
Wend
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
If Son - 1 > 1 Then
MsgBox "Veri aktarım işlemi tamamlanmıştır." & Chr(10) & Chr(10) & _
"İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye"
Else
MsgBox "Klasörde veri aktarımı yapılacak dosya bulunamadı!", vbExclamation
End If
End Sub