excele aktarma kodunuzu aşağıdaki kodla değiştirip dener misiniz?
Private Sub aktarexcel_Click()
Dim excl As Excel.Application
Dim KTP1 As Excel.Workbook
Dim SYF As Excel.Worksheet
Dim Sql As String
DoCmd.SetWarnings False
Dim rs1 As Recordset
If MsgBox("Bilgileriniz Excele Aktarılsın mı?", vbInformation + vbYesNo + vbDefaultButton1, "deneme") = vbNo Then Exit Sub
Set excl = CreateObject("Excel.Application")
With excl
.Application.Visible = True
.UserControl = True
End With
Set KTP1 = excl.Workbooks.Add
Set SFY = KTP1.Worksheets(1)
Dim ADO_RS As ADODB.Recordset
Set ADO_RS = New ADODB.Recordset
SQL = "SELECT Rs1.id, Rs1.sicil, Rs1.adsoyad, Rs1.rutbe, ""KOM"" AS İfade1, Rs0.E1, Rs0.E2, Rs0.E3, Rs0.E4, Rs0.E5, " & _
"Rs0.E6, Rs0.E7, Rs0.E8, Rs0.E9, Rs0.E10, Rs0.E11, Rs0.E12, Rs0.E13, Rs0.E14, Rs0.E15, Rs0.E16, Rs0.E17, Rs0.E18, " & _
"Rs0.E19, Rs0.E20, Rs0.E21, Rs0.E22, Rs0.E23, Rs0.E24, Rs0.E25, Rs0.E26, Rs0.E27, Rs0.E28, Rs0.E29, Rs0.E30, Rs0.E31, " & _
"Rs0.CalisilanGun, Rs2.katsayi, Rs2.puan, [katsayi]*[puan] AS Gcn " & _
"FROM tblhsp AS Rs2, PERSONEL1 AS Rs1 INNER JOIN tazminat AS Rs0 ON Rs1.id = Rs0.ADISOYADI " & _
"WHERE (((Rs0.YIL)=" & Me.cmbYear & ") AND ((Rs0.AY)=" & Me.cmbMonth & "));"
ADO_RS.CursorLocation = adUseClient
ADO_RS.Open SQL, CurrentProject.Connection, 3, 1
SyfAdi = "OPERASYON LİSTESİ"
SyfAdiTmp = SyfAdi
SyfNo = 0
Do While WorksheetExists(SyfAdiTmp, KTP1) = True
SyfNo = SyfNo + 1
SyfAdiTmp = SyfAdi & IIf(SyfNo = 0, "", "(" & SyfNo & ")")
Loop
excl.Sheets.Add.Name = SyfAdiTmp
excl.Sheets(SyfAdiTmp).PageSetup.Orientation = xlLandscape
excl.Sheets(SyfAdiTmp).PageSetup.LeftMargin = "18"
excl.Sheets(SyfAdiTmp).PageSetup.RightMargin = "15"
excl.Sheets(SyfAdiTmp).PageSetup.TopMargin = "15"
excl.Sheets(SyfAdiTmp).PageSetup.BottomMargin = "15"
excl.Sheets(SyfAdiTmp).PageSetup.HeaderMargin = "18"
excl.Sheets(SyfAdiTmp).PageSetup.FooterMargin = "18"
excl.Sheets(SyfAdiTmp).PageSetup.Zoom = 59
With SYF
excl.Range("A1:AN1").MergeCells = True
excl.Range("A2:AN2").MergeCells = True
excl.Range("A1") = "............... TAZMİNATI LİSTESİDİR"
excl.Range("A2") = "........................... ŞUBE MÜDÜRLÜĞÜ ( )TARİHLERİ ARASI ........... TAZMİNATI"
excl.Range("A3") = "S/NO"
excl.Range("A:A").HorizontalAlignment = xlCenter
excl.Range("A3").VerticalAlignment = xlCenter
excl.Range("A3").HorizontalAlignment = xlCenter
excl.Range("B3") = "SİCİL"
excl.Range("B3").VerticalAlignment = xlCenter
excl.Range("B3").HorizontalAlignment = xlLeft
excl.Range("C3") = "ADI SOYADI"
excl.Range("C3").VerticalAlignment = xlCenter
excl.Range("C3").HorizontalAlignment = xlLeft
excl.Range("D3") = "RÜTBE"
excl.Range("D3").VerticalAlignment = xlCenter
excl.Range("D3").HorizontalAlignment = xlLeft
excl.Range("E3") = "BİRİMİ"
excl.Range("E3").VerticalAlignment = xlCenter
excl.Range("E3").HorizontalAlignment = xlCenter
excl.Range("E3:E90").HorizontalAlignment = xlLeft
excl.Range("AK3") = "Çalışılan Gün"
excl.Range("AL3") = "KATSAYI"
excl.Range("AM3") = "PUAN"
excl.Range("AN3") = "ELE GEÇEN"
excl.Range("AK3:AN3").VerticalAlignment = xlCenter
excl.Range("AK3:AN3").HorizontalAlignment = xlCenter
excl.Range("A1:AN2").Font.Bold = True
excl.Range("A1:AN2").VerticalAlignment = xlCenter
excl.Range("A1:AN2").HorizontalAlignment = xlCenter
excl.Range("A1:AN2").RowHeight = 15
excl.Range("A3:E3").Font.Bold = True
excl.Range("A3:E3").Font.Size = 12
excl.Range("F3") = 1
excl.Range("F3").DataSeries _
Rowcol:=xlRows, _
Type:=xlLinear, _
Date:=xlDay, _
Step:=1, _
Stop:=31, _
Trend:=False
excl.Range("A1:AN2").Borders.LineStyle = xlContinuous
excl.Range("A3:AN70").HorizontalAlignment = xlCenter
excl.Range("A:A").ColumnWidth = 7
excl.Range("B:B").ColumnWidth = 10
excl.Range("C").ColumnWidth = 20
excl.Range("E:E").ColumnWidth = 7
excl.Range("F:AJ").ColumnWidth = 4
excl.Range("AK:AN").ColumnWidth = 10
excl.Range("F4:AJ90").HorizontalAlignment = xlCenter
On Error Resume Next
excl.Range("A4").CopyFromRecordset ADO_RS
i = ADO_RS.RecordCount + 4
ADO_RS.Close
excl.Range("A3", "AN" & i - 1).Borders.LineStyle = xlContinuous
End With
excl.Visible = True
Set excl = Nothing
DoCmd.SetWarnings True
End Sub
aşağıda bazı kodların daha pratik halleri gösterilmiştir
döngüyle aktarmak yerine toplu olarak aktarma kodunu kullanmanız işlemi hızlandırır
50 satırlık döngülü kod yerine aşağıdaki kod daha pratik
en azından döngü olmadığından daha hızlı
Dim ADO_RS As ADODB.Recordset
Set ADO_RS = New ADODB.Recordset
SQL = "SELECT Rs1.id, Rs1.sicil, Rs1.adsoyad, Rs1.rutbe, ""KOM"" AS İfade1, Rs0.E1, Rs0.E2, Rs0.E3, Rs0.E4, Rs0.E5, " & _
"Rs0.E6, Rs0.E7, Rs0.E8, Rs0.E9, Rs0.E10, Rs0.E11, Rs0.E12, Rs0.E13, Rs0.E14, Rs0.E15, Rs0.E16, Rs0.E17, Rs0.E18, " & _
"Rs0.E19, Rs0.E20, Rs0.E21, Rs0.E22, Rs0.E23, Rs0.E24, Rs0.E25, Rs0.E26, Rs0.E27, Rs0.E28, Rs0.E29, Rs0.E30, Rs0.E31, " & _
"Rs0.CalisilanGun, Rs2.katsayi, Rs2.puan, [katsayi]*[puan] AS Gcn " & _
"FROM tblhsp AS Rs2, PERSONEL1 AS Rs1 INNER JOIN tazminat AS Rs0 ON Rs1.id = Rs0.ADISOYADI " & _
"WHERE (((Rs0.YIL)=" & Me.cmbYear & ") AND ((Rs0.AY)=" & Me.cmbMonth & "));"
ADO_RS.CursorLocation = adUseClient
ADO_RS.Open SQL, CurrentProject.Connection, 3, 1
excl.Range("A4").CopyFromRecordset ADO_RS
31 satırlık
yerine