نویسنده موضوع: بازهم مشکل ی فارسی اینبار در ماکرو  (دفعات بازدید: 5294 بار)

دکتر قاسم زاده

  • کاربر فعال
  • ***
  • ارسال: 115
  • جمع امتیازها: +55/-3
با سلام خدمت اساتید.
همانطور که میدانید دو نوع ی داریم یکی فارسی"ی" و دیگری عربی"ي".
همینطور در مورد ک هم دو تا هست.
حال برای اینکه همه ی های یک فایل اکسل یکجور شوند و با توجه به فراگیر شدن ی فارسی در ویندوزهای XP به بعد، خواستم یک ماکرو ضبط کنم که همه ي ها را به ی تبدیل کند. این تبدیل با کمک CTRL+H کار میکند ولی متاسفانه ماکروی ضبط شده هر دو ی را بصورت عربی "ي" درج میکند و عملا ماکرو کاری انجام نمیدهد. آیا این علت خاصی دارد؟ راه حل چیست؟
Sub Macro1()
'
' Macro1 Macro
'

'
    Cells.Replace What:="ي", Replacement:="ي", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
البته دوستان توجه داشته باشند، قبل از استفاده از CTRL+H یا ماکرو، حتما نام شیت ها را باید اصلاح کرده باشند که اگر ی یا ک عربی در نام آنها بکار رفته باشد به فارسی تبدیل نمایند.

lamp

دانلود فهرست + فصل اول کتاب توابع و فرمول نویسی اکسل

خبر: کامل ترین کتاب توابع و فرمول نویسی در اکسل ترجمه تیم فرساران


me_aldvm

  • کاربر تازه‌وارد
  • *
  • ارسال: 9
  • جمع امتیازها: +1/-0
پاسخ : بازهم مشکل ی فارسی اینبار در ماکرو
« پاسخ #1 : 30 فروردین 1392 - 10:52 »
اگه به ماکرو نگاه کنید حرفی که قراره جایگزین ﻱ  بشه همون ﻱ عربی هست در واقع ماکرو درست عمل می کنه. من هم تست کردم حرف ﻱ رو به سبک فارسی نمی پذیره واسه همین شما تفاوتی در کار نمی بینید. خواستم حرف ی رو در ماکرو جایگزین کنم جاش علامت سوال گذاشت ظاهرا این بخش از آفیس هنوز با فونت فارسی سازگار نیست

علی فیروزجایی

  • عضو ارشد انجمن
  • ****
  • ارسال: 260
  • جمع امتیازها: +192/-2
  • گاهی سکوت نشانه بی تفاوتی است نه رضایت.
    • توسعه و عمران شاخص
پاسخ : بازهم مشکل ی فارسی اینبار در ماکرو
« پاسخ #2 : 30 فروردین 1392 - 11:23 »
سلام دوستان عزیز
هر دوی شما درست می فرمایید.
اشتباه کار در اینجاست که شما باید بجای قرار دادن "ي" از کد اسکی استفاده نمایید. مثلا: (ChrW(1740

    Cells.Replace What:=ChrW(1594), Replacement:=ChrW(1588), LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False


دکتر قاسم زاده

  • کاربر فعال
  • ***
  • ارسال: 115
  • جمع امتیازها: +55/-3
پاسخ : بازهم مشکل ی فارسی اینبار در ماکرو
« پاسخ #3 : 30 فروردین 1392 - 18:43 »
شرط ادب است علاوه بر زدن کلید تشکر سبز در اینجا نیز از جناب فیروزجایی تشکر کنم.

دکتر قاسم زاده

  • کاربر فعال
  • ***
  • ارسال: 115
  • جمع امتیازها: +55/-3
پاسخ : بازهم مشکل ی فارسی اینبار در ماکرو
« پاسخ #4 : 31 فروردین 1392 - 01:29 »
حل نهایی(یا به قول خارجی ها SOLVED):
 کل "ك" و "ي" های عربی در یک فایل تنها با یک ماکرو به "ک" و "ی" فارسی تبدیل شد.
اول در نام شیت ها(تا فرمولها خود بخود اصلاح شوند) و سپس در تمام سلولهای همه شیتها.
اگر این دو حرف عربی را در تعداد زیادی از فایلهایتان دارید و مثل من قصد پارسی سازی همه آنها را دارید میتوانید این ماکرو را در ماکروهای personal بگذارید تا همه جا با کلید مبانبر (CTRL+ض) قابل خوانده شدن باشد.
فایل پیوست برای تست گذاشته شده و ماکرو هم در آن هست.
Sub ye()
'
' ye Macro
'
' Keyboard Shortcut: Ctrl+ض
'
    Dim ws As Worksheet
   
    For Each ws In Worksheets
       
        ws.Name = Replace(ws.Name, ChrW(1610), ChrW(1740), vbTextCompare)
        ws.Name = Replace(ws.Name, ChrW(1603), ChrW(1705), vbTextCompare)
    Next ws
         
       
    Cells.Replace What:=ChrW(1610), Replacement:=ChrW(1740), LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:=ChrW(1603), Replacement:=ChrW(1705), LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
 
    MsgBox "ي و ک عربي به فارسي تبديل شد", vbInformation, "تبريک"

End Sub

lamp

دانلود فهرست + فصل اول کتاب توابع و فرمول نویسی اکسل

خبر: کامل ترین کتاب توابع و فرمول نویسی در اکسل ترجمه تیم فرساران


afshin3a

  • کاربر انجمن
  • **
  • ارسال: 52
  • جمع امتیازها: +1/-0
پاسخ : بازهم مشکل ی فارسی اینبار در ماکرو
« پاسخ #5 : 29 اسفند 1393 - 02:48 »
سلام دوستان عزیز
هر دوی شما درست می فرمایید.
اشتباه کار در اینجاست که شما باید بجای قرار دادن "ي" از کد اسکی استفاده نمایید. مثلا: (ChrW(1740

    Cells.Replace What:=ChrW(1594), Replacement:=ChrW(1588), LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

اگر من بخواهم این کد را در پایگاه داده ام (اکسس) بکار ببرم، چه کدی را باید بنویسم؟ کجای یک فرم باید این کد را بنویسم؟ ممنون میشم راهنمایی کنید.

فرشید میدانی

  • مدیر سایت
  • *****
  • ارسال: 756
  • جمع امتیازها: +228/-14
    • فرساران
پاسخ : بازهم مشکل ی فارسی اینبار در ماکرو
« پاسخ #6 : 11 فروردین 1394 - 10:32 »
در اکسس باید با یک update query اینکار را انجام دهید و لزومی به استفاده از ابزار Find نیست.
(لطفا ادامه این مبحث را در صورت لزوم در انجمن اکسس پیگیری نمایید)

SkyNet

  • کاربر تازه‌وارد
  • *
  • ارسال: 45
  • جمع امتیازها: +2/-0
حل نهایی(یا به قول خارجی ها SOLVED):
 کل "ك" و "ي" های عربی در یک فایل تنها با یک ماکرو به "ک" و "ی" فارسی تبدیل شد.
اول در نام شیت ها(تا فرمولها خود بخود اصلاح شوند) و سپس در تمام سلولهای همه شیتها.
اگر این دو حرف عربی را در تعداد زیادی از فایلهایتان دارید و مثل من قصد پارسی سازی همه آنها را دارید میتوانید این ماکرو را در ماکروهای personal بگذارید تا همه جا با کلید مبانبر (CTRL+ض) قابل خوانده شدن باشد.
فایل پیوست برای تست گذاشته شده و ماکرو هم در آن هست.
Sub ye()
'
' ye Macro
'
' Keyboard Shortcut: Ctrl+ض
'
    Dim ws As Worksheet
   
    For Each ws In Worksheets
       
        ws.Name = Replace(ws.Name, ChrW(1610), ChrW(1740), vbTextCompare)
        ws.Name = Replace(ws.Name, ChrW(1603), ChrW(1705), vbTextCompare)
    Next ws
         
       
    Cells.Replace What:=ChrW(1610), Replacement:=ChrW(1740), LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:=ChrW(1603), Replacement:=ChrW(1705), LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
 
    MsgBox "ي و ک عربي به فارسي تبديل شد", vbInformation, "تبريک"

End Sub



با تشکر ویژه از شما جناب دکتر قاسم زاده
من زمان استفاده از این کد در فایلم فقط در شیت فعال تغییرات صورت میپذیرد ! و سایر شیت هایی فایل، بدون تغییر باقی می مانند ! دلیل چیست ؟
نحوه استفاده ام از این کد به این صورت هست که یک ماکرو ضبط می کنم و سپس محتویات داخل آنرا پاک می کنم و سپس کد شما رو در اون جایگزین می کنم ! و با اجرای کد فقط شیتی که داخل آن هستم ک و ی عربی به پارسی تغییر می یابد !
ممنون میشم اگر راهنمایی بفرمایید

bnyamin

  • کاربر تازه‌وارد
  • *
  • ارسال: 3
  • جمع امتیازها: +0/-0
پاسخ : بازهم مشکل ی فارسی اینبار در ماکرو
« پاسخ #8 : 22 اردیبهشت 1396 - 01:48 »
حل نهایی(یا به قول خارجی ها SOLVED):
 کل "ك" و "ي" های عربی در یک فایل تنها با یک ماکرو به "ک" و "ی" فارسی تبدیل شد.
اول در نام شیت ها(تا فرمولها خود بخود اصلاح شوند) و سپس در تمام سلولهای همه شیتها.
اگر این دو حرف عربی را در تعداد زیادی از فایلهایتان دارید و مثل من قصد پارسی سازی همه آنها را دارید میتوانید این ماکرو را در ماکروهای personal بگذارید تا همه جا با کلید مبانبر (CTRL+ض) قابل خوانده شدن باشد.
فایل پیوست برای تست گذاشته شده و ماکرو هم در آن هست.
Sub ye()
'
' ye Macro
'
' Keyboard Shortcut: Ctrl+ض
'
    Dim ws As Worksheet
   
    For Each ws In Worksheets
       
        ws.Name = Replace(ws.Name, ChrW(1610), ChrW(1740), vbTextCompare)
        ws.Name = Replace(ws.Name, ChrW(1603), ChrW(1705), vbTextCompare)
    Next ws
         
       
    Cells.Replace What:=ChrW(1610), Replacement:=ChrW(1740), LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:=ChrW(1603), Replacement:=ChrW(1705), LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
 
    MsgBox "ي و ک عربي به فارسي تبديل شد", vbInformation, "تبريک"

End Sub

 با عرض ارادت و تشکر
دکتر فکر کنم یک ی دیگر هم وجود دارد با کد 236 و در ASCW با کد 1609

moharram

  • کاربر تازه‌وارد
  • *
  • ارسال: 17
  • جمع امتیازها: +0/-0
پاسخ : بازهم مشکل ی فارسی اینبار در ماکرو
« پاسخ #9 : 23 اردیبهشت 1396 - 02:28 »
سلام . این روش هم جواب نداد و باز مشکل ی باقی هست

lamp

دانلود فهرست + فصل اول کتاب توابع و فرمول نویسی اکسل

خبر: کامل ترین کتاب توابع و فرمول نویسی در اکسل ترجمه تیم فرساران


tav

  • عضو ارشد انجمن
  • ****
  • ارسال: 336
  • جمع امتیازها: +82/-3
    • اکسل به زبان مثال...!
پاسخ : بازهم مشکل ی فارسی اینبار در ماکرو
« پاسخ #10 : 23 اردیبهشت 1396 - 21:39 »
سلام
توکلی

bnyamin

  • کاربر تازه‌وارد
  • *
  • ارسال: 3
  • جمع امتیازها: +0/-0
پاسخ : بازهم مشکل ی فارسی اینبار در ماکرو
« پاسخ #11 : 24 اردیبهشت 1396 - 00:40 »
سلام دوستان
اصل مشگل در مورد ی 63 می باشه !
بقیه رو که با فاید و ریپلیس که میشه حل کرد ! فقط کافیه که ی درست رو داشته باشیم که در همین فایل بالا قرار داره Ascci harf
این نکته رو هم باید دقت کنیم که مشگل ی 63 هست که فارسیه ! چون تداخل کد داره با علامت سوال ! یا بهتر بگیم کاراکترهای ناشناخته که همشونو علامت سوال فرض میکنه!
دوستان زحمت کشیدن کدهایی رو قرار دادن که همه ی ها رو به ی 63 تبدیل میکنه ! در حالی که اصلا خود ی 63 اصل ایراده ! و باید ی 63 به ی های دیگری تبدیل بشوند تا تداخلی در کد نویسی نداشته باشیم .
که فکر کنم با تابع {کد دريافتي از تابع ASCW } مشگل حل میشه و دیگه ی 63 شناسایی میشه با 1770 و -1028 که در این حالت میشه فرمولش کرد و تبدیل کرد به یکی از ی های عربی و ...
و آماده برای فرمول نویسی ...