جدا کردن کلمات انگلیسی از متن فارسی در نرم افزار word

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • bnyamin

    • 2013/05/29
    • 111

    [حل شده] جدا کردن کلمات انگلیسی از متن فارسی در نرم افزار word

    سلام
    من یک متن دارم در ووورد که در داخل متن فارسی ؛ کلمات انگلیسی وجود داره .
    میخواهم ماکرویی داشته باشم که به هر کلمه انگلیسی رسید ؛ بعد اون کلمه انگلیسی یک اینتر بخوره و بره خط جدید

    با تشکر
  • M_ExceL

    • 2018/04/23
    • 677

    #2
    سلام،
    نمونه ای از متنتون را در قالب فایل ورد پیوست کنید
    تا مورد بررسی قرار گیرد
    [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
    [/CENTER]

    کامنت

    • bnyamin

      • 2013/05/29
      • 111

      #3
      نوشته اصلی توسط M_ExceL
      سلام،
      نمونه ای از متنتون را در قالب فایل ورد پیوست کنید
      تا مورد بررسی قرار گیرد
      با تشکر
      همان گونه که مشخص است ؛متن دارای کلمات انگلیسی است
      میخواهیم بعد از این کلمات انگلیسی ؛ ادامه متن در خط جدید قرار بگیرد
      فایل های پیوست شده

      کامنت

      • bnyamin

        • 2013/05/29
        • 111

        #4
        نوشته اصلی توسط M_ExceL
        سلام،
        نمونه ای از متنتون را در قالب فایل ورد پیوست کنید
        تا مورد بررسی قرار گیرد
        ابته ما باید این سنخ فایلها رو متاثر از فایل ووورد در یک نرم افزار دیگر ایمپورت کنیم (x mind) و چون اون نرم افزار دیگر نمیتواند بین زبان فارسی و انگلیسی تفاوت بگذارد متن رو بهم ریخته میکند
        و بدیهی است که فایلی که قرار داده ام یک نمونه کوچک است و فایلهای اصلی مثلا چندین صفحه است که در بین آنها کلمات انگلیسی وجود دارد .

        کامنت

        • M_ExceL

          • 2018/04/23
          • 677

          #5
          نوشته اصلی توسط bnyamin
          ابته ما باید این سنخ فایلها رو متاثر از فایل ووورد در یک نرم افزار دیگر ایمپورت کنیم (x mind) و چون اون نرم افزار دیگر نمیتواند بین زبان فارسی و انگلیسی تفاوت بگذارد متن رو بهم ریخته میکند
          و بدیهی است که فایلی که قرار داده ام یک نمونه کوچک است و فایلهای اصلی مثلا چندین صفحه است که در بین آنها کلمات انگلیسی وجود دارد .
          سلام،
          کد زیر رو تست کنید :
          کد:
          Sub M_ExceL()
          
                  Dim icounter As Long
                  Dim doc As Document
                  Set doc = ActiveDocument
                  
                  icounter = 1
                  
                  While icounter <> doc.Range.Characters.Count
                  
                          If Asc(doc.Range.Characters(icounter)) > 96 _
                          And Asc(doc.Range.Characters(icounter)) < 123 Then
                              Do Until Asc(doc.Range.Characters(icounter)) = 32 _
                              Or Asc(doc.Range.Characters(icounter)) = 41
                                  icounter = icounter + 1
                              Loop
                         doc.Range.Characters(icounter + 1) = vbNewLine
                         End If
                         
                  icounter = icounter + 1
                  
                  Wend
          
          End Sub
          [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
          [/CENTER]

          کامنت

          • bnyamin

            • 2013/05/29
            • 111

            #6
            نوشته اصلی توسط M_ExceL
            سلام،
            کد زیر رو تست کنید :
            کد:
            Sub M_ExceL()
            
                    Dim icounter As Long
                    Dim doc As Document
                    Set doc = ActiveDocument
                    
                    icounter = 1
                    
                    While icounter <> doc.Range.Characters.Count
                    
                            If Asc(doc.Range.Characters(icounter)) > 96 _
                            And Asc(doc.Range.Characters(icounter)) < 123 Then
                                Do Until Asc(doc.Range.Characters(icounter)) = 32 _
                                Or Asc(doc.Range.Characters(icounter)) = 41
                                    icounter = icounter + 1
                                Loop
                           doc.Range.Characters(icounter + 1) = vbNewLine
                           End If
                           
                    icounter = icounter + 1
                    
                    Wend
            
            End Sub


            با تشکر
            متاسفانه پاسخ گو نیست .
            البته برخی از اوقات هم فقط یک کلمه انگلیسی نیست وبلکه شاید دو کلمه و یا حتی جمله باشد .
            بنده فایل اصلی خود را خدمتتون قرار میدهم
            فایل فوق در محیط اوتلاین سطح بندی شده است
            فایل های پیوست شده

            کامنت

            • M_ExceL

              • 2018/04/23
              • 677

              #7
              نوشته اصلی توسط bnyamin
              با تشکر
              متاسفانه پاسخ گو نیست .
              البته برخی از اوقات هم فقط یک کلمه انگلیسی نیست وبلکه شاید دو کلمه و یا حتی جمله باشد .
              بنده فایل اصلی خود را خدمتتون قرار میدهم
              فایل فوق در محیط اوتلاین سطح بندی شده است
              سلام،
              این یکی رو تست بفرمایید :
              توضیح :
              به دلیل این که کد کلمه به کلمه تمام متن را بررسی می کند مقداری زمان می برد
              بعد از اجرای کد محیط vba را مینیمایز نمایید سپس شاهد بررسی خط به خط متن خواهید بود
              کد:
              Sub M_ExceL()
              
                  Dim i As Long
                  Dim b As Boolean
                  
                  i = 1
                  While i <> ActiveDocument.Range.Words.Count
                      ActiveDocument.Range.Words(i).Select
                      If Asc(LCase(ActiveDocument.Range.Words(i).Characters(1))) > 96 And Asc(LCase(ActiveDocument.Range.Words(i).Characters(1))) < 123 Then
                          b = False
                          Do While b = False
                              If Asc(LCase(ActiveDocument.Range.Words(i).Characters(1))) > 96 And Asc(LCase(ActiveDocument.Range.Words(i).Characters(1))) < 123 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) > 47 And Asc(ActiveDocument.Range.Words(i).Characters(1)) < 58 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 32 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 40 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 41 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 44 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 46 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 47 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 58 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 60 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 39 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 34 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 147 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 148 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 59 Then
                              b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 96 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 45 Then
                                  b = False
                              ElseIf Asc(ActiveDocument.Range.Words(i).Characters(1)) = 150 Then
                              b = False
                              Else
                                  b = True
                              End If
                              i = i + 1
                          Loop
                          ActiveDocument.Range.Words(i - 1).InsertBefore (vbNewLine)
                      End If
                      DoEvents
                      i = i + 1
                  Wend
              
              End Sub
              [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
              [/CENTER]

              کامنت

              چند لحظه..