VBA ملف مربع الحوار .Filename إزالة .1 من نهاية اسم الملف

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

  •  11-12-2019
  •  | 
  •  

سؤال

أنا أستخدم Visual Basic لكتابة ماكرو للمخترع Autodesk. قمت بإنشاء ماكرو يستدعي مربع حوار ملف، راجع التعليمات البرمجية أدناه. كل شيء يعمل بشكل جيد إلا عندما يضع المستخدم اسم ملف في فترة ورقم أكبر من الصفر بعد ذلك.

على سبيل المثال، إذا كان المستخدم يضع TestFile.test في المربع ويضرب موافق. عندما أطلب ما وضعوه هناك باستخدام .filename، أحصل على "testfile.test". تماما مثل أنا يجب أن.

ومع ذلك، إذا وضع المستخدم TestFile.1 أو testfile.10 أو testfile.1mdksj أو أي شيء طالما عددا أكبر من الصفر يتبع مباشرة الفترة التي أعود فيها "TestFile". لسبب ما، كل شيء بعد الفترة والفترة التي تتم إزالتها.

ما هو سبب هذا؟ هل هذا خطأ في Visual Basic أو أفعل شيئا خاطئا؟ giveacodicetagpre.

تحديث:

انتهى بي الأمر بعمل "الاختراق" التالية لجعل الأمور لا تزال تعمل أثناء التعامل مع فترة: giveacodicetagpre.

هذا يعمل بشكل جيد لفترة طويلة على نظام التشغيل Windows 7 ثم Windows 10. لسوء الحظ، يبدو أن التحديث الإبداعي لنظام التشغيل Windows 10 قد تغير كيفية عمل مربع حوار الملف. مع الرمز أعلاه، سيعود FullName فارغا إذا لم تكن هناك فترات في الاسم وستقلع كل شيء من الفترة الأولى من اليسار إذا كانت هناك فترة في الاسم.

أنا لست متأكدا حقا ما الذي يتغير في نظام التشغيل Windows 10، لكنه دمر كثيرا الاختراق. لا يزال Windows 7 يعمل بشكل جيد ويندوز 10 قبل أن يعمل التحديث الإبداعي. انتهى بي الأمر في القيام بما يلي لجعل كل شيء يعمل مرة أخرى في إصدار Windows الذي ذكرته أعلاه. giveacodicetagpre.

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

المحلول

هذه هي خاصية VB، ولكن قد تمتد إلى VBA أيضا. هل حاولت تحديد إعدادات الحفظ لدعم الملحقات المتعددة جرب شيئا مثل هذا: giveacodicetagpre.

هذا الإعداد هو التصريح المقصود استخدام الامتدادات المنقطة - وهذا يعني استخدام الفترات في اسم الملف. راجع هذه المرجع MSDN للوثائق والمعلومات: http://msdn.microsoft.com/en-us/library/system.windows.forms.filedialog.supportmultidottedextensionsions.aspx#1129

هذا لذلك قد يتم إلقاء المادة أيضا الضوء الإضافي: مربع حوار Saveas مع فترة في اسم الملف لا يعود التمديد

تحرير

بعد التحقق من وثائق Autodesk - مهمة صعبة وغير سارة، في رأيي - يبدو أن هناك بالفعل لا تدعم للأشخاص متعدد الأقدام. ومع ذلك، أجد وظيفة على VBAExpress التي قمت بتكييفها عن كثب. يمكن استخدام الوظيفة لتصفية السلاسل تحتوي على أحرف غير مقبولة. تتميز مدونة Jimmy Pena بوظيفة ممتازة لمثل هذا الغرض فقط: http:// www. jpsoftwaretech.com/excel-vba/validate-filenames/ . لقد أضافت بشكل جوهري فقط واستبدال الرمز: giveacodicetagpre.

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

يمكنك تصفية أي سلاسل لاستخدامها كاسكام بأسلوب مع حرف آخر - مساحة في هذه الحالة. هل يمكن استخدام السفلات السطرية أو أي شخصية أخرى تعتبرها ممتعة.

بشكل عام، إذا كنت تحاول استخدام فترات النسخة أو الغرض المماثل، فلن يسمح لك المخترع بذلك، وأود أن نصح بشدة الذهاب إلى حرف آخر أو مجموعة من الأحرف التي يمكن أن توفر مثل هذا المؤشر، مثل هذه السفلية " _ "، نظام ترقيم،" 001 "،" 002 "، نظام حروف،" AAA "،" AAB "، أو أي شيء منطقي تركيزك.

إذا كنت مجرد جعل التطبيق سهل الاستخدام، أود أن أقترح تصفية السلاسل التي تم إدخالها قبل حفظها في الملف الفاتي المطلوب، وفصل تصفية السلاسل من مربع الحوار "حفظ" إذا كانت تصفية الفترة يمنحك الحزن. قد يضيف خطوة إضافية، ولكن قد يكون أفضل وأسهل طريقة لتصفية الأحرف غير الصحيحة المزعجة دون إنشاء متاعب إضافية غير ضرورية للمستخدمين الخاص بك.

~ JOL

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