PDA

View Full Version : سوال: مشکل با حرف ی در نام فایل



ahmad24shargh
یک شنبه 19 مرداد 1393, 21:12 عصر
قطعه کدی در vba دارم به صورت زیر :


...
dtmOldTime = dtmNow
strfile = Dir$(strpath & "\*." & strext)
While strfile <> ""
If FileDateTime(strpath & "\" & strfile) < dtmOldTime Then
dtmOldTime = FileDateTime(strpath & "\" & strfile)
strOldName = strpath & "\" & strfile
End If
strfile = Dir
Wend
If fso.FileExists(strOldName) Then
fso.deletefile strOldName
End If
...


تابع dir به خوبی فایلهای موجود تو دایرکتوری رو لیست میکنه و تو متغیر رشته ای strfile قرار میده.
اما توابع FileDateTime و متد FileExists شی filesystemobject با حرف ی تو نام فایل مشکل داره.یعنی اگر نام فایلی حاوی حرف ی باشه
خطای file not found رخ میده.

اگر کسی به این مشکل برخورد کرده لطفا راهنمایی کنه.چیزی که تو اینترنت بهش رسیدم فراخوانی api ویندوزه به جای توابع داخلی vba هست
اما میخوام علت مشکل و راه حل اساسی اونو یاد بگیرم.

amirzazadeh
سه شنبه 21 مرداد 1393, 18:15 عصر
قطعه کدی در vba دارم به صورت زیر :


...
dtmOldTime = dtmNow
strfile = Dir$(strpath & "\*." & strext)
While strfile <> ""
If FileDateTime(strpath & "\" & strfile) < dtmOldTime Then
dtmOldTime = FileDateTime(strpath & "\" & strfile)
strOldName = strpath & "\" & strfile
End If
strfile = Dir
Wend
If fso.FileExists(strOldName) Then
fso.deletefile strOldName
End If
...


تابع dir به خوبی فایلهای موجود تو دایرکتوری رو لیست میکنه و تو متغیر رشته ای strfile قرار میده.
اما توابع FileDateTime و متد FileExists شی filesystemobject با حرف ی تو نام فایل مشکل داره.یعنی اگر نام فایلی حاوی حرف ی باشه
خطای file not found رخ میده.

اگر کسی به این مشکل برخورد کرده لطفا راهنمایی کنه.چیزی که تو اینترنت بهش رسیدم فراخوانی api ویندوزه به جای توابع داخلی vba هست
اما میخوام علت مشکل و راه حل اساسی اونو یاد بگیرم.
احتمالا مشكل به kbdfa.dll برميگرده اگر از نسخه عربي استفاده كنيد ي و ك به اين شكل ديده ميشه ودر نسخه فارسي به اين شكل ی ک
براي حل اين مشكل دو تا كار ميتونين انجام بدين:
1- در حالت safe mode ويندوز رو بوت كنيد و dll متناسب با بانك داده خودتون رو جايگزين كنيد.
2- بعد از باز كردن ديتابيس با عمل find and replace حروف مورد نظر رو به نوع مناسب (عربي يا فارسي) تغيير بدين.
قبل از هر كار بكاپ فراموش نشه!

ahmad24shargh
پنج شنبه 23 مرداد 1393, 06:33 صبح
ورودی توابعی که با حرف ی مشکل دارند از خروجی تابع توکار dir بدست میاد و کلا این کد هیچ تعاملی با کاربر و صفحه کلید نداره.
تنها ثابت استفاده شده نیز پسوند فایل accde هست و خلاصه نمیتونه مشکل از تفاوت انکودینگ باشه.