filesystemobject fileexists يعمل على جهاز كمبيوتر واحد ولكن ليس آخر

StackOverflow https://stackoverflow.com//questions/25026553

سؤال

في Excel 2010 VBA، أنا أستخدم خاصية Fileexists الخاصة ب FileSystemObject للتحقق مما إذا كان الملف موجودا. على جهاز الكمبيوتر الخاص بي يعمل بشكل جيد. ولكن على جهاز كمبيوتر Excel 2010 آخر، فإنه يفيد بأن الملف ليس موجودا عندما نرى في مستكشف Windows أن الملف موجود. في كلتا الحالتين، يتم فحص الملف الموجود على القرص الصلب المحلي.

أنا أتحقق من الملف مباشرة بعد استخدام Shell إلى UNZIP الملف. أنا استخدم dections بعد الاضطراب. يتم استخراج الملف إلى نفس المجلد الذي يوجد فيه ملف ZIP.

إليك الرمز:

giveacodicetagpre.

أي أفكار لماذا يعمل هذا جيدا على جهاز كمبيوتر واحد، ولكن على تقارير كمبيوتر آخر أن الملف ليس هناك على الرغم من أنه نرى أنه بوضوح؟

تحديث:

اعتقدت أنني سأضيف هذه الملاحظة في حالة قد يكون مفيدا للآخرين يعملون في نفس العقم.

القضية الأساسية الأساسية هي أنه عند استخدام Shell لاستخراج ملف مضغوط، لا يتضمن خاصية اسم كائن الملف المضغوط التمديد إذا كان Windows Explorer هو اخفاء الملحقات والملف يحتوي على ملحق مسجل. على سبيل المثال:

giveacodicetagpre.

إذا تم تعيين Windows Explorer لإخفاء الملحقات والملف المضغوط لديه امتداد مسجل، لا يشمل Strshellzpredfileinzipfilefilefilename الملحق.

ومع ذلك، فإن كائن الملف المضغوط (Oshellzperfileinzipfile) يحتوي أيضا على خاصية مسار تشمل الملحق. حتى تتمكن من الحصول على اسم الملف بما في ذلك التمديد مثل هذا:

giveacodicetagpre.

هل كانت مفيدة؟

المحلول

شيء واحد يجب مراعاته هو خيارات المجلد داخل مستكشف Windows.قد لا يساعدك هذا في هذه الحالة، لكن لدي عدد من التفاعلات FSO التي لها مشكلة كبيرة مع كيفية عرض الملفات في مستكشف Windows.شيء بسيط مثل نظامك يعرض ملحق الملف، والآخر ليس، يمكن أن يكون في بعض الأحيان الجاني في البحث عن الملفات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top