דילוג לתוכן
  • חוקי הפורום
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
לוגו מותג
  1. דף הבית
  2. תוכנות
  3. יישומי אופיס
  4. וורד
  5. עזרה הדדית - וורד
  6. להורדה | מאקרו המרת מרווח שורות בוורד ל'מדויק'

להורדה | מאקרו המרת מרווח שורות בוורד ל'מדויק'

מתוזמן נעוץ נעול הועבר עזרה הדדית - וורד
13 פוסטים 3 כותבים 265 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • P מנותק
    P מנותק
    pcinfogmach מדריכים
    השיב לשלמה11 נערך לאחרונה על ידי pcinfogmach
    #3

    @שלמה11
    סיקרנת אותי
    הנה מאקרו לבדיקת התיאוריה:

    Sub CalculateLineHeight()
    Dim newDoc As Document
    Dim i As Single, x As Single
    
    Selection.CopyFormat
    
    Set newDoc = Documents.Add
    newDoc.Content = Chr(11)
    newDoc.Content.Select
    Selection.PasteFormat
    
    Selection.ParagraphFormat.SpaceBefore = 0
    Selection.ParagraphFormat.SpaceAfter = 0
    Selection.ParagraphFormat.LineSpacingRule = wdLineSpaceSingle
    
    i = Selection.Information(wdVerticalPositionRelativeToPage)
    
    Selection.Collapse Direction:=wdCollapseEnd
    Debug.Print "Exact line-height by RelativeToTextBoundary: " & Selection.Information(wdVerticalPositionRelativeToTextBoundary)
    x = Selection.Information(wdVerticalPositionRelativeToPage)
    Debug.Print "Exact line-height by RelativeToPage: " & x - i
    newDoc.Close SaveChanges:=False
    
    End Sub
    

    למעשה אולי @מאקרו או @menajemmendel יש לכם רעיון איך לתקן את הסטייה ש @שלמה11 כבר הזכיר?
    כמו"כ מעניין לציין ששני השיטות מחזירים תוצאות שונות במיקצת

    עריכה: שיניתי את ה-intger ל- single יותר מדוייק

    גמ"ח עזרה וייעוץ בנושאי מחשבים

    menajemmendelM ש 3 תגובות תגובה אחרונה
    0
    • menajemmendelM מנותק
      menajemmendelM מנותק
      menajemmendel
      השיב לpcinfogmach נערך לאחרונה על ידי
      #4

      @pcinfogmach כתב בלהורדה | מאקרו המרת מרווח שורות בוורד ל'מדויק':

      Dim i, x As Integer

      עוד לא בדקתי אבל סתם ידיעה, שבאופן מאד לא אינטואיטיבי באופן זה אתה מגדיר כINTEGER רק את הX, והוא מקביל לעשות

      Dim i
      Dim X as integer
      
      P תגובה 1 תגובה אחרונה
      1
      • P מנותק
        P מנותק
        pcinfogmach מדריכים
        השיב לmenajemmendel נערך לאחרונה על ידי
        #5

        @menajemmendel

        לא הבנתי כוונתך שניהם מוגדרים כ-integer באותה שורה הרבה יותר נקי מלהגדיר אותם בנפרד

        תנסה ב-option explicit ותראה ששניהם מוגדרים כראוי

        גמ"ח עזרה וייעוץ בנושאי מחשבים

        menajemmendelM תגובה 1 תגובה אחרונה
        0
        • menajemmendelM מנותק
          menajemmendelM מנותק
          menajemmendel
          השיב לpcinfogmach נערך לאחרונה על ידי menajemmendel
          #6

          @pcinfogmach כתב בלהורדה | מאקרו המרת מרווח שורות בוורד ל'מדויק':

          @menajemmendel

          לא הבנתי כוונתך שניהם מוגדרים כ-integer באותה שורה הרבה יותר נקי מלהגדיר אותם בנפרד

          תנסה ב-option explicit ותראה ששניהם מוגדרים כראוי

          כשהייתי צעיר גם אני חשבתי כמוך, אבל השנים עושים את שלו, 😂 😂 😂 סתם,
          בהגיון אתה צודק, אבל האמת היא שלו, אם אתה רוצה שיהיה בשורה אחת תצטרך לכתוב כך:

          Dim i as integer, x as integer
          

          אני יודע שזה מעצבן אבל הסיבה שזה קורה, משום שיש אפשרות להגדיר משתנה בלי להגדיר לו סוג משתנה, אתה יכול לבדוק לכתוב עם OPTION EXPLICIT

          Dim i
          

          ותראה שלא יתן לך שגיאה.

          menajemmendelM תגובה 1 תגובה אחרונה
          2
          • menajemmendelM מנותק
            menajemmendelM מנותק
            menajemmendel
            השיב לmenajemmendel נערך לאחרונה על ידי
            #7

            @pcinfogmach
            יותר מזה תנסה:

            Sub sample()
            Dim i, x As Integer
            x = 10
            Set i = Selection.Range
            End Sub
            
            

            ותראה שלא יתן שגיאה

            תגובה 1 תגובה אחרונה
            1
            • menajemmendelM מנותק
              menajemmendelM מנותק
              menajemmendel
              השיב לpcinfogmach נערך לאחרונה על ידי menajemmendel
              #8

              @pcinfogmach אני לא יודע, אבל מה שהעליתי במחקרים שלי, הוא שהבודד וכו', הם גודל בנקודות של הכתב כפול 1.15 ולפי זה עשיתי את החישוב הבא: אבל לא יוצא ממש מדוייק, לא יודע למה

              Sub macro3()
              Dim ACTUAL_SPACING As Single, font_size As Single, meduyak_spacing As Single
              Dim para As Paragraph
              
              
              For Each para In Selection.Paragraphs
                  If para.Format.LineSpacingRule <> wdLineSpaceExactly Then
                      ACTUAL_SPACING = LinesToPoints(para.Format.LineSpacing) / 144
                      font_size = para.Range.Font.SizeBi
                      meduyak_spacing = font_size * 1.15 * ACTUAL_SPACING
                      
                      With para.Format
                          .LineSpacingRule = wdLineSpaceExactly
                          .LineSpacing = meduyak_spacing
                      End With
                  End If
              Next para
              End Sub
              
              

              שאלה בקשר לפורום: למה לפעמים הקודים יוצאים צבעונים ולפעמים הכל ירוק?

              P תגובה 1 תגובה אחרונה
              0
              • P מנותק
                P מנותק
                pcinfogmach מדריכים
                השיב לmenajemmendel נערך לאחרונה על ידי pcinfogmach
                #9

                @menajemmendel
                זה לא יעבוד בפונטים עם גובה שאינו סטנדרטי

                לגבי הקודים הציבעוניים זה בגלל המציד של הקודים לא בנוי דווקא ל-vba אז אם יש משהו בקוד שהוא מסויים ל-vba האו לא מצליח לצבוע אותו

                גמ"ח עזרה וייעוץ בנושאי מחשבים

                תגובה 1 תגובה אחרונה
                0
                • ש מנותק
                  ש מנותק
                  שלמה11
                  השיב לpcinfogmach נערך לאחרונה על ידי שלמה11
                  #10

                  @pcinfogmach כתב בלהורדה | מאקרו המרת מרווח שורות בוורד ל'מדויק':

                  הנה מאקרו לבדיקת התיאוריה:

                  לא הבנתי מה רע במאקרו שעשיתי עד ש"קלטתי שהוא נעול בסיסמא..."
                  אז הנה

                  Sub המרת_מרווח_בין_שורות_למדויק()
                  
                      Dim Firstline As Double
                      Dim Secondline As Double
                      Dim Exactspacing As Double
                      Dim lineCount As Integer
                      Dim currentPage As Integer
                      Dim paragraphCount As Long
                      Dim savedRange As Range
                      
                      Application.ScreenUpdating = False
                      Application.UndoRecord.StartCustomRecord
                      Set savedRange = Selection.Range
                     
                      ' הגדרת מיקום השורה הראשונה והשניה
                      Selection.SetRange Start:=Selection.Paragraphs(1).Range.Start, End:=Selection.Paragraphs(1).Range.Start
                      Firstline = Selection.Information(wdVerticalPositionRelativeToPage)
                      lineCount = Selection.Paragraphs(1).Range.ComputeStatistics(wdStatisticLines)
                      currentPage = Selection.Information(wdActiveEndPageNumber)
                      If lineCount = 1 Then
                          Selection.TypeText text:=Chr(11)
                          If currentPage < Selection.Information(wdActiveEndPageNumber) Then
                              Firstline = Selection.Information(wdVerticalPositionRelativeToPage)
                              Selection.TypeText text:=Chr(11)
                          End If
                      Else
                          Selection.MoveDown unit:=wdLine, Count:=1
                      End If
                      Secondline = Selection.Information(wdVerticalPositionRelativeToPage)
                           ' חישוב מרווח השורות והגדרת המרווח למדויק
                      Exactspacing = Secondline - Firstline
                      Selection.ParagraphFormat.LineSpacingRule = wdLineSpaceExactly
                      Selection.ParagraphFormat.LineSpacing = Exactspacing
                           ' מחיקת השורות הריקות שנוספו
                      If lineCount = 1 Then
                          Selection.TypeBackspace
                      End If
                      If currentPage < Selection.Information(wdActiveEndPageNumber) Then
                          Selection.TypeBackspace
                      End If
                      savedRange.Select
                      Application.UndoRecord.EndCustomRecord
                      Application.ScreenUpdating = True
                  End Sub
                  
                  

                  דרך אגב מאוד מומלץ להוסיף את 3 השורות הראשונות והאחרונות בקוד לכל קוד בvba
                  בפשטות זה השיטה הכי מדויקת, כי אם תריץ אותה על פיסקה שכבר מוגדרת על מרווח שורות מדויק התוצאה תהיה זהה בדיוק למצב הקיים.

                  menajemmendelM תגובה 1 תגובה אחרונה
                  0
                  • menajemmendelM מנותק
                    menajemmendelM מנותק
                    menajemmendel
                    השיב לשלמה11 נערך לאחרונה על ידי
                    #11

                    @שלמה11 כתב בלהורדה | מאקרו המרת מרווח שורות בוורד ל'מדויק':

                    דרך אגב מאוד מומלץ להוסיף את 3 השורות הראשונות והאחרונות בקוד לכל קוד בvba

                    נכון, אבל אם אתה מוסיף את זה אז עוד יותר חשוב להוסיף גם error handeling, כמו שהסברתי כאן

                    תגובה 1 תגובה אחרונה
                    2
                    • ש מנותק
                      ש מנותק
                      שלמה11
                      כתב נערך לאחרונה על ידי שלמה11
                      #12

                      על פי הוראותיו של @pcinfogmach מפה
                      עריכה: 26.01.25

                      Sub המרת_מרווח_בין_שורות_למדויק2()
                      
                          Dim savedRange As Range
                          Dim paraRange As Range
                          Dim LineSpacing As Double
                      
                          Application.ScreenUpdating = False
                          Application.UndoRecord.StartCustomRecord
                      
                          Set savedRange = Selection.Range
                      
                          Set paraRange = Selection.Paragraphs(1).Range
                          With paraRange
                              If Not .ParagraphFormat.LineSpacingRule = wdLineSpaceExactly Then
                                  .Collapse wdCollapseStart
                                  .Text = " " & Chr(11)
                                  .Collapse wdCollapseStart
                                  .MoveEnd wdCharacter, 2
                                  .Collapse wdCollapseEnd
                                  LineSpacing = .Information(wdVerticalPositionRelativeToTextBoundary)
                      
                                  .ParagraphFormat.LineSpacingRule = wdLineSpaceExactly
                                  .ParagraphFormat.LineSpacing = LineSpacing
                      
                                  .MoveStart wdCharacter, -2
                                  .Delete
                              End If
                          End With
                      
                          savedRange.Select
                          Application.UndoRecord.EndCustomRecord
                          Application.ScreenUpdating = True
                      
                      End Sub
                      

                      הבעיה במרווח מדויק זה שהרווח נמצא מעל השורה ולא מתחת אם מישהו יודע לסדר את זה
                      אולי צריך משהו כמו יישור למעלה כמו שיש בתיבות טקסט
                      הבעיה שלא מצאתי משהו כזה בשביל פיסקאות רגילות

                      תגובה 1 תגובה אחרונה
                      2
                      • ש מנותק
                        ש מנותק
                        שלמה11
                        כתב נערך לאחרונה על ידי
                        #13

                        הנה מאקרו להסרה:

                        Sub RemoveLineSpacingExactly()
                        
                            Dim Paragraph As Range
                            Dim LineSpacingExactly As Double
                            Dim LineSpacingSingle As Double
                            Dim LineSpacing As Double
                            
                            Set Paragraph = Selection.Paragraphs(1).Range
                            With Paragraph
                                If Selection.ParagraphFormat.LineSpacingRule = wdLineSpaceExactly Then
                                    LineSpacingExactly = .ParagraphFormat.LineSpacing
                                    .ParagraphFormat.LineSpacingRule = wdLineSpaceSingle
                                    .Collapse wdCollapseStart
                                    .text = " " & Chr(11): .Collapse wdCollapseStart
                                    .MoveEnd wdCharacter, 2: .Collapse wdCollapseEnd
                                    LineSpacingSingle = .Information(wdVerticalPositionRelativeToTextBoundary)
                                    .MoveStart wdCharacter, -2: .Delete
                                    LineSpacing = LineSpacingExactly / LineSpacingSingle
                                    .ParagraphFormat.LineSpacingRule = wdLineSpaceMultiple
                                    .ParagraphFormat.LineSpacing = LinesToPoints(LineSpacing)
                                End If
                            End With
                        End Sub
                        
                        
                        תגובה 1 תגובה אחרונה
                        1

                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • חוקי הפורום
                        • לא נפתר
                        • משתמשים
                        • חיפוש גוגל בפורום
                        • צור קשר