اذهب الي المحتوي
أوفيسنا

حل مشكلة فتح الملف اكثر من مرة عند استخدام تقنية ADO


الردود الموصى بها

الاصدقاء الاكارم تحية طيبة

الكود التالي يقوم بعملية فلترة البيانات و نسخها الى صفحة جديدة باستخدام 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

رابط هذا التعليق
شارك

السلام عليكم 

لم اجد اي مشكلة بالكود

تفذت الخطوات  ....

خطوات ظهور المشكلة

1- افتح اي مصنف اكسل

2- افتح الملف المرفق في مثيل جديد لاكسل

3- جرب الكود

صورة لتنفيذ الخطوات

2022-05-12.png.7e4a042c8909a74afd79169727c354d2.png

 

رابط هذا التعليق
شارك

الله و ايدك

الفلترة تتم حسب الاسبوع و الاسم لكن الاسم يتغير دوما ( طبعا الاسم مخزن في متغير و لكن اختصرت الكود في المرفق )

اخ محمد هل جربت فتح المصنف في مثيل جديد ام قمت بفتحه بشكل عادي ( المشكلة لا تظهز اذا فتحت الملف بشكل عادي )

رابط هذا التعليق
شارك

بالفعل هذا ماتم عملة ولا توجد اي مشكلة لديا ... اخي.. انصحك ب ازالة نسخة الاوفيس ثم اعادة تشغيل جهازك -ثم تثطيب  النسخة مرة اخري... بعدها ان لم تنجح لبد من اخذ خطوة اخري وهي تغير الملف ونقل  البيانات اليه

رابط هذا التعليق
شارك

اخي عمر افتح اي مصنف اكسل

ثم اضغط زر Alt + برنامج الاكسل نفسه ( ستظهر رسالة هل تريد بدء تشغيل مثيل جديد ل اكسل ) اختر نعم

سيفتح برنامج الاكسل ( ملف - فتح ملف المثال ) ثم جرب الكود

 

1.png

2.png

رابط هذا التعليق
شارك

الوينذوز عندي  به بعض المشاكل ..سيكون الاتصال غير جيد ..سأخبرك بعد بضعة أيام حتي اركب ويندوز جديد

وسأخبرك لعمل اتصال

 

رابط هذا التعليق
شارك

اخي ..لقد دققت في الكود الخاص بك جيدا

وعملت كود يعطي نفس النائج ولكن بطريقة اخري

نفذ الكود الخاص بي

ونفذ الكود الخاص بك

ودقق في النتائج ستجد انهم متطابقين تمام

بعد عن تقنية  ADO

وهو سريع جدا  ..واخبرنى هل زالت المشكلة ام لا

المصنف4.xlsm

 

رابط هذا التعليق
شارك

تحية طيبة استاذ @omar elhosseini

بداية اشكرك جزيل الشكر على مساعدتك لي اما بعد

تاكدت و بشكل قطعي من سبب مشكلة تكرار فتح الملف و السبب عند فتح اي مصنف اكسل يتم اضافته الى مدير المهام

و عند فتح الملف الثاني بمثيل جديد يتم تسجيل الاكسل مرة ثانية في مدير المهام ( على عكس طريقة فتح المصنفات بشكل افتراضي حيث يتم تسجيل الاكسل في مدير المهام لمرة واحدة فقط ) لاحظ الاختلاف بين الصورتين

وبالتالي عندما نصل في الكود الى سطر فتح الاتصال سيبحث عن اول عملية لاكسل و سيجد ان الملف غير مفتوح ( علما انه مفتوح ولكن في عملية جديدة و هذا ما سيؤدي الى فتح الملف مرة ثانية لكن للقراءة فقط )

ولا اعتقد انه يوجد حل لهذه المشكلة الا اذا كان ado او dao يدعم جلب البيانات بدون فتح الملف !!!! 

سبب رغبتي في استخدام ado هو امكانية استخدام عبارات sql لفلترة البيانات بشكل اسرع دون الدوران في مصفوفة طويلة عريضة لاستخلاص البيانات المطلوبة ( نحن نتكلم عن ما يقارب 11000 صف )

المرفق الذي ارسلته لي ممتاز و لكن اعتقد انك اغفلت نقطة هامة و هي :

بعد احتساب الرصيد المدور من نهاية الاسبوع السابق يجب ان يتم تسجيل قيم الفواتير و الدفعات كل في صف جديد

بينما المرفق الذي ارسلته يقوم باحتساب الرصيد النهائي فقط !!! لاحظ الصور

قمت ببعض التعديلات و حصلت على النتيجة المطلوبة و لكنني غير راضي بصراحة لااني مازات اجد الكود بطيئ بعض الشي ( على عكس استخدام sql ) 😅

وفي الختام اكرر شكري لك

 

 

1.png

2.png

3.png

4.png

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • المتواجدين الان   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information