الاصدقاء الاكارم تحية طيبة
الكود التالي يقوم بعملية فلترة البيانات و نسخها الى صفحة جديدة باستخدام ADO و RecordSet
المشكلة : عند فتح ( اكثر ) من مصنف اكسل الكود يقوم بفتح المصنف مرة ثانية للقراءة فقط و الكود يصبح بطيئ جدا جدا
كيف يمكن حل المشكلة
Sub testado()
On Error GoTo ErrSub
Dim SDate As Date
Dim ii As Integer
SDate = Date - Weekday(Date)
Dim connection As New ADODB.connection
connection.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name & _
";Extended Properties=""Excel 12.0;HDR=Yes;"";"
Dim query As String
Dim rs As New ADODB.Recordset
ii=8
query = "select * from [subrs$] where [الاسم]='محمود' and [التاريخ]>=" & CDbl(SDate)
rs.Open query, connection
Sheets("ملخص الارصدة").Select
Do While Not rs.EOF
Sheets("ملخص الارصدة").Range("B" & ii) = rs.Fields(0)
Sheets("ملخص الارصدة").Range("C" & ii) = rs.Fields(1)
Sheets("ملخص الارصدة").Range("D" & ii) = rs.Fields(2)
Sheets("ملخص الارصدة").Range("E" & ii) = rs.Fields(3)
Sheets("ملخص الارصدة").Range("F" & ii) = rs.Fields(4)
rs.MoveNext
ii = ii + 1
Loop
rs.Close
ErrSub:
If Err.Number <> 0 Then MsgBox Err.Number & vbCrLf & Err.Description
End Sub
خطوات ظهور المشكلة
1- افتح اي مصنف اكسل
2- افتح الملف المرفق في مثيل جديد لاكسل
3- جرب الكود
المصنف2.xlsm