Arkadaşlar merhaba,
Aşağıdaki kod örneğin küçük bir datada sorunsuz çalışıyor (örneğin 10 satırlık veri)
Fakat yüksek satırlı bir datada (örneğin 20 bin satırlı veri) çalışmıyor, hata vermiyor ama çok bekletiyor ve sonra işlemi bitirmiş gibi yapıyor fakat sonucu vermiyor
Bu konuda ne yapabiliriz, yüksek verilerin olduğu satırlarda da işlemi yapması için kodu nasıl düzenlemeliyiz.
Şimdiden yardımcı olacak arkadaşlar için çok çok teşekkürler.
Sub SayfaKaydet()
Dim S1 As Worksheet, S2 As Worksheet, son As Long, dosya As String
Dim i As Long, IlkAdres As Variant, c As Range
Set S1 = Sheets("Sheet1")
Set S2 = Sheets("Sheet2")
Application.ScreenUpdating = False
S1.Range("A1:L1").Copy S2.Range("A1")
S1.[O:O].Clear
S2.Range("A2:L" & Rows.Count).ClearContents
S1.Range("B:B").AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("O1"), Unique:=True
sat = 2
For i = 2 To S1.Cells(Rows.Count, "O").End(xlUp).Row
With S1.Range("B:B")
Set c = .Find(S1.Cells(i, "O"), , LookIn:=xlValues)
If Not c Is Nothing Then
IlkAdres = c.Address
Do
If S2.Range("A2") = "" Then
sat = 2
End If
S1.Range("A" & c.Row & ":L" & c.Row).Copy S2.Range("A" & sat)
sat = sat + 1
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> IlkAdres
End If
End With
S2.Select
dosya = CreateObject("Wscript.Shell").SpecialFolders.Item("Desktop") & _
"\Dosya" & Application.PathSeparator & S2.[B2] & ".xlsx"
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=dosya
ActiveWorkbook.Close
S2.Columns("A:L").EntireColumn.AutoFit
S2.Range("A2:L" & Rows.Count).ClearContents
Next i
S1.Select
[O:O].Clear
Application.ScreenUpdating = True
End Sub
Aşağıdaki kod örneğin küçük bir datada sorunsuz çalışıyor (örneğin 10 satırlık veri)
Fakat yüksek satırlı bir datada (örneğin 20 bin satırlı veri) çalışmıyor, hata vermiyor ama çok bekletiyor ve sonra işlemi bitirmiş gibi yapıyor fakat sonucu vermiyor
Bu konuda ne yapabiliriz, yüksek verilerin olduğu satırlarda da işlemi yapması için kodu nasıl düzenlemeliyiz.
Şimdiden yardımcı olacak arkadaşlar için çok çok teşekkürler.
Sub SayfaKaydet()
Dim S1 As Worksheet, S2 As Worksheet, son As Long, dosya As String
Dim i As Long, IlkAdres As Variant, c As Range
Set S1 = Sheets("Sheet1")
Set S2 = Sheets("Sheet2")
Application.ScreenUpdating = False
S1.Range("A1:L1").Copy S2.Range("A1")
S1.[O:O].Clear
S2.Range("A2:L" & Rows.Count).ClearContents
S1.Range("B:B").AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("O1"), Unique:=True
sat = 2
For i = 2 To S1.Cells(Rows.Count, "O").End(xlUp).Row
With S1.Range("B:B")
Set c = .Find(S1.Cells(i, "O"), , LookIn:=xlValues)
If Not c Is Nothing Then
IlkAdres = c.Address
Do
If S2.Range("A2") = "" Then
sat = 2
End If
S1.Range("A" & c.Row & ":L" & c.Row).Copy S2.Range("A" & sat)
sat = sat + 1
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> IlkAdres
End If
End With
S2.Select
dosya = CreateObject("Wscript.Shell").SpecialFolders.Item("Desktop") & _
"\Dosya" & Application.PathSeparator & S2.[B2] & ".xlsx"
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=dosya
ActiveWorkbook.Close
S2.Columns("A:L").EntireColumn.AutoFit
S2.Range("A2:L" & Rows.Count).ClearContents
Next i
S1.Select
[O:O].Clear
Application.ScreenUpdating = True
End Sub