@pcinfogmach
דבר ראשון תודה ענקית על היוזמה שלך.
שאלה קטנה שמטרידה אותי זמן רב במקרה שיש לי 'אנטרים' מיותרים לאורך כל המסמך, ואני רוצה מחוק אותם באמצעות 'חפש והחלף'.
כיצד עושים זאת???
יש שני אפשרויות:
חפש את ^p^p, החלף ב ^p, [וצריך לחזור על הפעולה כמה פעמים עד שהכל מסתדר].
חפש את ^13{2,} [וצריך לסמן השתמש בתווים כלליים], החלף ב ^13, [ובאופן זה הכל מסתדר בפעם אחת].
בנוסף לזה יש לי מאקרו מיוחד שמתקן את זה באופן אוטומטי על כל המסמך, וגם מוחק כל רווח מיותר לפני או אחרי פסקא.
@pcinfogmach גירסא חדשה למאקרו עיצוב טור אחד לפי מירכוז.dotm
מאקרו שמחזיר באופן אוטומטי פסקאות ממורכזות לטור בודד.
בעימוד של ספרי קודש מקובל לעצב את כל הספר בשני טורים, אולם הכותרת בראש כל סימן פרק וכדו' צריך שיהיה בטור בודד, והוא אחת מהמלאכות הקשות להחזיר באופן ידני לטור בודד בראש כל סימן וסימן, ועל זה נוצר המאקרו שלפנינו שמחזיר את הכל בלחיצה אחת, הפעולה היא יחסית פעולה פשוטה, אלא שכתוצאה מזה נוספים הרבה מעברי מקטע מיותרים, ובפרט אם חוזרים על הפעולה פעם נוספת, אכן בגירסה החדשה של המאקרו שלפנינו כל הבעיות באו על פתרונן, ויחד עם החלת המאקרו זה גם מנפה את כל המסמך מכל המעברים המיותרים, ואפשר לחזור על הפעולה כמה פעמים שרוצים והכל מסתדר באופן אוטומטי.
המאקרו כולל שני לחצנים, 1. מעצב טורים פיסקא אחת, 2. מעצב טורים כל המסמך.
הוראות הפעלה:
כדאי מאוד לעשות פעולה זו בשלב ראשוני של העימוד, בפרט לפני היישור טורים, ולפני עיצוב הכותרות עם מסגרות, [אם משתמשים עם המאקרו "רצף הערות", הסדר הוא קודם "רצף הערות" ורק אח"כ המאקרו דנן, היות שהמאקרו רצף הערות עובד לפי מעברי מקטע, וזה יחזיר את הכל לשני טורים].
בשעת החלת המאקרו, צריך שכל הפסקאות שרוצים שיחזרו לטור בודד יהיו ממורכזות, וכל הפסקאות שרוצים שישארו בשני טורים לא יהיו ממורכזות, [אם כל הכותרות עובדים עם סגנונות אפשר לשנות את זה דרך הסגנונות באופן קל מאוד].
@poker אם הכותרות מעוצבים בסגנון כותרות, אפשר שיתחלף אוטומטית ע"י שדה, לאורך כל המסמך בלי הכנסת שום מעברי מקטע באמצע, ואפשר לשלב שני הכותרות יחד עם מקף באמצע, לדוגמא סימן ב - קנסא או דינא בשיטות הראשונים.
נכנסים בכותרת העליונה, ועומדים במקום שרוצים שיכנס שם הכותרת.
נכנסים בכרטיסיה 'עיצוב', 'פרטי מסמך', 'שדה'.
בחלון שנפתח, בוחרים 'קישורים והפניות', ואח"כ השורה האחרונה באנגלית, ואח"כ בוחרים את הכותרת שרוצים שיכנס שם, ולוחצים אישור [כדאי לבחור בצד שמאל האפשרות הראשונה 'חפש מתחתית העמוד מעלה' ואכמ"ל.
עכשיו יש לאורך כל המסמך כותרת מתחלפת אוטומטית לפי הסגנון שנבחר אבל רק בעמוד אי זוגי, וכעת מעתיקים את השדה שנוצר למעלה, ומדביקים בכותרת למעלה בעמוד הזוגי, ואפשר להדביק את זה בצד המקביל.
אם רוצים שני כותרות משולבות כנ"ל, כותבים - ועושים שוב את התהליך של בחירת שדה כמו בסעיף 3, אלא שבוחרים סגנון אחר של הכותרת השניה.
נ . ב. ועל זה הדרך אפשר אח"כ להוסיף גם מספור עמודים ולהכניס במקום שרוצים, אלא שצריך לבחור באפשרויות כמו בתמונה הבאה.
אני מקוה שזה מספיק מובן, ומי שרוצה יכול להסביר יותר.
@pcinfogmach מאקרו לעיצוב אוטומטי של אותיות ההערות שוליים למטה כפי המקובל ברוב ספרי קודש.עיצוב הערות שוליים.dotm
יש ארבעה לחצנים 1. עיצוב אותיות הערות שוליים [מחליף לאותיות + הדגשה + אותיות לא עיליות + מכניס נקודה לאחר האות]. 2. עיצוב כניסה תלויה הערות שוליים. 3. ביטול כניסה תלויה בהערות שוליים. 4. עיצוב מפריד הערות.
נ. ב. אפשר להשתמש עם מאקרו 2 רק לאחר החלת מאקרו 1.
אם מוסיפים הערות לאחר העיצוב, יש להחיל שוב את המאקרו [1 ואח"כ 2], וזה מסדר את הכל מחדש.
נוסף מקש חדש 'ביטול כניסה תלויה בהערות שוליים'.
@האדם-החושב
לגבי הכותרות האם לא כדאי מראש שיחיל עליו סגנון כותרת במקום רק גופן וכו'?
@pcinfogmach צודק! ככלל הסוד [הגדול] בעימוד בוורד הוא, שכל מה שאפשר עדיף לעשות דרך סגנונות, כי באופן זה יש לך שליטה מלאה על כל המסמך, וכל שינוי שעושים עושים רק דרך הסגנון [חוץ במקרים של חריגות, וגם מזה כדאי להמנע], וכמו בעימוד באינדיזיין כולם מבינים שזה עובד רק דרך סגנונות, וככה אתה גם מרויח שיש לך סגנונות מוכנות, ולא צריך כל פעם להשקיע מחדש, אם השקעת פעם אחת בסגנונות ויש לך כל סוגי האפשרויות, אז אתה יכול לעמד ספר בכל גודל שתרצה תוך דקות ספורות [חוץ מפינישים פרטניים].
לדוגמא [חלק ממה שיש לי]: סגנון כותרת, סגנון רגיל, סגנון הקדמה, סגנון ציטוט, סגנון [ברמת תו] הדגשה, סגנון [ברמת תו] סוגריים עגולות, ועוד. ועכשיו כשאני מתחיל לעמד ספר אני מעתיק הכל על מסמך ריק, ועובד דרך החלף, החלף כל הכותרות בסגנון כותרת, כל הדגשה בסגנון מודגש, כל סוגריים בסגנון סוגריים וכו', והרווח הגדול הוא שאם אני רוצה אח"כ לשנות משהו בגופן בגודל וכו', אז אני מחליף דרך הסגנון והכל מתעדכן אוטומטית, וכן אם אני רוצה מעבר עמוד לפני כותרת אני מחיל את זה בסגנון והכל נהיה ברגע אחד לכל אורך המסמך, וכן באופן זה אפשר שההדגשות יהיה בגופן אחר לאו דוקא בגופן של כל המסמך [שימושי למי שיעמד בגופן פרנקריהל החינמי, שידוע שהבאלד בגופן זה הוא מזעזע, ולכן הכי יפה זה לשלב את ההדגשות שיהיה בגופן וילנא, השילוב של שניהם ישנו בהרבה מאוד ספרים וזה יוצא ממש מושלם], בכל אופן מי שינסה לעבוד באופן הזה יראה כמה זה קל ונח, ולא יצטרך [בעימוד רגיל] שום תוכנה אחרת.
מאקרו שמחזיר לטור אחד לפי סוג כותרת [משוכלל הרבה יותר מהמאקרו הקודם שמחזיר רק לפי מרכוז], יש אפשרות להחיל את המאקרו רק על פיסקא אחת או על כל המסמך, ומוחק כל המעברים המיותרים.
הוראות:
קודם כל צריך לפרוס את כל המסמך לשני טורים ולכוון את המרווחים.
לוחצים על הלחצן 'מחזיר לטור אחד לפי כותרת' ושואל איזה סגנון רוצים להחזיר לטור אחד.
שואל אם רוצים רק על פיסקא אחת או על כל המסמך, וכמובן אפשר ללחוץ על ביטול.
המאקרו מנקה אוטומטי את כל סוגי הכפילויות שנוצרות בגלל הפעולה.
אם רוצים אפשר לבטל הכל בלחיצה על קונטרול Z.
יש אפשרות לעשות את הפעולה גם על כמה סגנונות בכל פעם על סגנון אחר או לחזור על אותו סגנון, והמאקרו מוחקת כל הכפילויות.
אם רוצים להסיר ולהחזיר לשני טורים, יש לחצן נוסף 'מבטל פסקאות שעוצבו לטור אחד ומחזיר לשני טורים', יש שאלת בחירה לאחת משתי אפשרויות, או לבטל במקום אחד, או לבטל הכל בכל המסמך [במקרה שהסתבך, גם בזה יש אפשרות ביטול בלחיצה אחת קונטרול Z].
Sub מחזיר_לטור_אחד_לפי_כותרת()
Dim Alerts As Boolean
Dim a As Boolean
Dim headingName As String
Dim para As paragraph
Dim section As section
Dim inSelectedHeading As Boolean
Dim userChoice As VbMsgBoxResult
Dim deleteParagraphBreaks As VbMsgBoxResult
On Error GoTo ErrorHandler
Application.UndoRecord.StartCustomRecord "החזרת לטור אחד לפי כותרת"
Alerts = Application.DisplayAlerts
Application.DisplayAlerts = wdAlertsNone
Application.ScreenUpdating = False
headingName = InputBox("הזן את שם הכותרת שברצונך לשנות לטור אחד:", "בחירת כותרת")
If headingName = "" Then
MsgBox "לא הוזנה כותרת. הפעולה בוטלה.", vbExclamation
Exit Sub
End If
userChoice = MsgBox("האם ברצונך להחיל את השינוי על כל המסמך?", vbYesNoCancel + vbQuestion, "בחירת היקף פעולה")
If userChoice = vbCancel Then
MsgBox "הפעולה בוטלה.", vbExclamation
Exit Sub
End If
If userChoice = vbNo Then
Selection.MoveDown Unit:=wdParagraph, count:=1
Else
Selection.HomeKey Unit:=wdStory
End If
Do
Selection.Find.ClearFormatting
With Selection.Find
.Style = headingName
.Text = "^$"
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchControl = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
a = Selection.Find.Execute
If a = True Then
Selection.Paragraphs(1).Range.Select
ActiveDocument.Range(Start:=Selection.Start, End:=Selection.Start). _
InsertBreak Type:=wdSectionBreakContinuous
Selection.Start = Selection.Start + 1
ActiveDocument.Range(Start:=Selection.End, End:=Selection.End).InsertBreak _
Type:=wdSectionBreakContinuous
With Selection.pageSetup.TextColumns
.SetCount numColumns:=1
.EvenlySpaced = True
.LineBetween = False
End With
Selection.MoveRight Unit:=wdCharacter, count:=1
End If
Loop While a = True And (userChoice = vbYes)
Call מחיקת_מעברים_מיותרים
Selection.HomeKey Unit:=wdStory
MsgBox "הפעולה הושלמה! ניתן לבטל את כל השינויים באמצעות Ctrl+Z.", vbInformation
Cleanup:
Application.DisplayAlerts = Alerts
Application.ScreenUpdating = True
Application.UndoRecord.EndCustomRecord
Exit Sub
ErrorHandler:
MsgBox "אירעה שגיאה: " & Err.Description, vbCritical
Resume Cleanup
End Sub
Private Sub מחיקת_מעברים_מיותרים()
Dim sectionBreakRange As Range
Dim paraBefore As Range
Dim paraAfter As Range
Application.ScreenUpdating = False
Selection.HomeKey Unit:=wdStory
If Selection.Find.Execute(FindText:="^b", MatchWildcards:=False, Forward:=True, Wrap:=wdFindStop) = True Then
If Selection.Start = 0 Then
Selection.Delete
End If
End If
Dim found As Boolean
Dim specialChar As String: specialChar = ";~;"
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting: .Text = "^b^b": .Forward = True: .Wrap = wdFindStop: .Format = False: .MatchWildcards = False
End With
Do While Selection.Find.Execute
Selection.Collapse Direction:=wdCollapseEnd: Selection.TypeText Text:=specialChar
Loop
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting: .Text = "^b" & specialChar: .Forward = True: .Wrap = wdFindStop: .Format = False: .MatchWildcards = False
End With
Do While Selection.Find.Execute
Selection.Delete
Loop
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting: .Text = specialChar: .Forward = True: .Wrap = wdFindStop: .Format = False: .MatchWildcards = False
End With
Do While Selection.Find.Execute
Selection.Delete
Loop
Selection.HomeKey Unit:=wdStory
Do While Selection.Find.Execute(FindText:="^b", MatchWildcards:=False, Forward:=True, Wrap:=wdFindStop) = True
Set sectionBreakRange = Selection.Range
If sectionBreakRange.Start > 0 Then
On Error Resume Next
Set paraBefore = sectionBreakRange.Paragraphs(1).Range.Previous(wdParagraph, 1)
Set paraAfter = sectionBreakRange.Paragraphs(1).Range.Next(wdParagraph, 1)
On Error GoTo 0
If Not paraBefore Is Nothing And Not paraAfter Is Nothing Then
If paraBefore.pageSetup.TextColumns.count = 1 And _
paraAfter.pageSetup.TextColumns.count = 1 Then
sectionBreakRange.Delete
End If
End If
End If
Selection.Start = sectionBreakRange.Start
Selection.Collapse Direction:=wdCollapseEnd
Loop
Application.ScreenUpdating = True
End Sub
Sub מבטל_פסקאות_שעוצבו_לטור_אחד_ומחזיר_לשני_טורים()
On Error GoTo ErrorHandler ' הפעלת טיפול בשגיאות
Dim userChoice As VbMsgBoxResult
userChoice = MsgBox("מחזיר פיסקא נוכחית לשני טורים. האם ברצונך לעשות פעולה זו על כל המסמך?", vbYesNo + vbQuestion, "מחיקת מעברי מקטע")
If userChoice = vbYes Then
Call מחיקת_מעברי_מקטע_בכל_המסמך
ElseIf userChoice = vbNo Then
Call מחיקת_מעברי_מקטע_בפסקא_נוכחית
Else
MsgBox "הפעולה בוטלה.", vbInformation
End If
Exit Sub
ErrorHandler:
MsgBox "אירעה שגיאה: " & Err.Description, vbCritical, "שגיאה"
End Sub
Private Sub מחיקת_מעברי_מקטע_בכל_המסמך()
On Error GoTo ErrorHandler ' הפעלת טיפול בשגיאות
Dim para As paragraph
Dim paraRange As Range
Dim sectionRange As Range
Application.UndoRecord.StartCustomRecord
Application.ScreenUpdating = False
Selection.HomeKey Unit:=wdStory
For Each para In ActiveDocument.Paragraphs
Set paraRange = para.Range
If paraRange.pageSetup.TextColumns.count = 1 Then
Set sectionRange = paraRange.Duplicate
sectionRange.Collapse wdCollapseEnd
sectionRange.MoveEnd Unit:=wdCharacter, count:=1
If sectionRange.Text = Chr(12) Then
sectionRange.Delete
With ActiveDocument.Range(paraRange.Start - 1, paraRange.Start)
If .Text = Chr(12) Then
.Delete
End If
End With
End If
End If
Next para
MsgBox "הפעולה הסתיימה בהצלחה על כל המסמך", vbInformation
Application.ScreenUpdating = True
Application.UndoRecord.EndCustomRecord
Exit Sub
ErrorHandler:
Application.ScreenUpdating = True
Application.UndoRecord.EndCustomRecord
MsgBox "אירעה שגיאה: " & Err.Description, vbCritical, "שגיאה"
End Sub
Private Sub מחיקת_מעברי_מקטע_בפסקא_נוכחית()
On Error GoTo ErrorHandler ' הפעלת טיפול בשגיאות
Dim currentPara As paragraph
Dim paraRange As Range
Dim sectionRange As Range
Application.UndoRecord.StartCustomRecord
Application.ScreenUpdating = False
If Selection.Range.Paragraphs.count = 0 Then
MsgBox "נא לעמוד בתוך פסקה בטור אחד.", vbExclamation
GoTo Cleanup
End If
Set currentPara = Selection.Range.Paragraphs(1)
Set paraRange = currentPara.Range
If currentPara.Range.pageSetup.TextColumns.count <> 1 Then
MsgBox "נא לעמוד בפסקה בטור אחד בלבד.", vbExclamation
GoTo Cleanup
End If
Set sectionRange = paraRange.Duplicate
sectionRange.Collapse wdCollapseEnd
sectionRange.MoveEnd Unit:=wdCharacter, count:=1
If sectionRange.Text <> Chr(12) Then
MsgBox "נא לעמוד בפסקה האחרונה לפני מעבר לשני טורים.", vbExclamation
GoTo Cleanup
End If
sectionRange.Delete
With Selection.Find
.ClearFormatting
.Text = "^b"
.Forward = False
.Wrap = wdFindStop
If .Execute Then Selection.Delete
End With
MsgBox "הפעולה הושלמה בהצלחה עבור הפסקה הנוכחית", vbInformation
Cleanup:
Application.ScreenUpdating = True
Application.UndoRecord.EndCustomRecord
Exit Sub
ErrorHandler:
Application.ScreenUpdating = True
Application.UndoRecord.EndCustomRecord
MsgBox "אירעה שגיאה: " & Err.Description, vbCritical, "שגיאה"
End Sub
שוה בדיקה
עריכה: הוכנסו שני תיקונים במאקרו, יש להוריד מחדש.
עריכה נוספת: נוסף אפשרות לשחזר את כל השינויים בלחיצה אחת על Ctrl+Z
עריכה שלישית: נוסף לחצן להסרת הפעולה, כשאין אפשרות של ביטול פעולה אחרונה, ועוד הרבה שיפורים למניעת שגיאות של כפילויות וכדו', וכן הוראות הפעלה
מאקרו לבדיקת גודל עמודים ושוליים של המסמך, כלומר לפעמים באמצע המסמך יש שינויים בגודל, ושמים לב לזה רק אחר כל ההשקעה של העימוד ורק בהדפסה רואים את ההבדל, ובוורד המובנה אין אפשרות לראות מה המצב רק במקום שנמצאים עליו, וגם זה רק דרך כניסה לפריסה גודל מותאם אישית וכו', בקיצור אם רוצים לבדוק את כל המסמך בן מאות עמודים יקח הרבה זמן, ועל זה הגיע המאקרו דנן שבודק בלחיצה אחת את כל המסמך, ואם אין שינויים הוא מוציא רק הודעה שכל העמודים בגודל זהה, ואם יש שינויים הוא כותב את כל הפרטים לפי טווחי עמודים.
בהצלחה
Sub גודל_עמודים_ושוליים_בכל_המסמך()
Dim sec As section
Dim pageSetup As pageSetup
Dim currentWidth As Double
Dim currentHeight As Double
Dim marginTop As Double
Dim marginBottom As Double
Dim marginLeft As Double
Dim marginRight As Double
Dim startPage As Long
Dim endPage As Long
Dim msg As String
Dim totalPages As Long
Dim currentSectionIndex As Long
Dim lastWidth As Double
Dim lastHeight As Double
Dim lastTopMargin As Double
Dim lastBottomMargin As Double
Dim lastLeftMargin As Double
Dim lastRightMargin As Double
Dim allPagesUniform As Boolean
Dim firstRun As Boolean
' הודעת כותרת
msg = "מידע על גדלי העמודים והשוליים במסמך (בסנטימטרים):" & vbCrLf
totalPages = ActiveDocument.ComputeStatistics(wdStatisticPages)
currentSectionIndex = 1
startPage = 1
firstRun = True
allPagesUniform = True ' נניח בהתחלה שכולם אחידים
' לולאה לבדוק אם כל העמודים אחידים בגודל ובשוליים
Do While startPage <= totalPages
If currentSectionIndex > ActiveDocument.Sections.Count Then Exit Do
Set sec = ActiveDocument.Sections(currentSectionIndex)
Set pageSetup = sec.pageSetup
currentWidth = pageSetup.PageWidth / 28.35 ' המרת רוחב לס"מ
currentHeight = pageSetup.PageHeight / 28.35 ' המרת גובה לס"מ
marginTop = pageSetup.TopMargin / 28.35 ' המרת שוליים עליונים לס"מ
marginBottom = pageSetup.BottomMargin / 28.35 ' המרת שוליים תחתונים לס"מ
marginLeft = pageSetup.LeftMargin / 28.35 ' המרת שוליים שמאליים לס"מ
marginRight = pageSetup.RightMargin / 28.35 ' המרת שוליים ימניים לס"מ
' אם זו הפעם הראשונה, נגדיר את הערכים הראשונים
If firstRun Then
lastWidth = currentWidth
lastHeight = currentHeight
lastTopMargin = marginTop
lastBottomMargin = marginBottom
lastLeftMargin = marginLeft
lastRightMargin = marginRight
firstRun = False
End If
' אם יש שינוי בגודל או בשוליים, העמודים לא אחידים
If currentWidth <> lastWidth Or currentHeight <> lastHeight Or _
marginTop <> lastTopMargin Or marginBottom <> lastBottomMargin Or _
marginLeft <> lastLeftMargin Or marginRight <> lastRightMargin Then
allPagesUniform = False
Exit Do ' אין צורך לבדוק יותר אם העמודים לא אחידים
End If
' מעבר לעמוד הבא
startPage = startPage + 1
If startPage > ActiveDocument.Sections(currentSectionIndex).Range.Information(wdActiveEndPageNumber) Then
currentSectionIndex = currentSectionIndex + 1
If currentSectionIndex > ActiveDocument.Sections.Count Then Exit Do
End If
Loop
' אם כל העמודים אחידים, הצגת הודעה אחת
If allPagesUniform Then
MsgBox "כל העמודים במסמך הם בגודל ושוליים זהים.", vbInformation, "מידע על גדלי עמודים ושוליים"
Else
' אם יש עמודים שונים, מציגים את כל הנתונים
DisplayPageDetails
End If
End Sub
Sub DisplayPageDetails()
Dim sec As section
Dim pageSetup As pageSetup
Dim currentWidth As Double
Dim currentHeight As Double
Dim marginTop As Double
Dim marginBottom As Double
Dim marginLeft As Double
Dim marginRight As Double
Dim startPage As Long
Dim endPage As Long
Dim msg As String
Dim totalPages As Long
Dim currentSectionIndex As Long
' הודעת כותרת
msg = "מידע על גדלי העמודים והשוליים במסמך (בסנטימטרים):" & vbCrLf
totalPages = ActiveDocument.ComputeStatistics(wdStatisticPages)
currentSectionIndex = 1
startPage = 1
' לולאה לבדיקת כל העמודים
Do While startPage <= totalPages
' קבלת הגדרות הסעיף הנוכחי
If currentSectionIndex > ActiveDocument.Sections.Count Then Exit Do
Set sec = ActiveDocument.Sections(currentSectionIndex)
Set pageSetup = sec.pageSetup
currentWidth = pageSetup.PageWidth / 28.35 ' המרת רוחב לס"מ
currentHeight = pageSetup.PageHeight / 28.35 ' המרת גובה לס"מ
marginTop = pageSetup.TopMargin / 28.35 ' המרת שוליים עליונים לס"מ
marginBottom = pageSetup.BottomMargin / 28.35 ' המרת שוליים תחתונים לס"מ
marginLeft = pageSetup.LeftMargin / 28.35 ' המרת שוליים שמאליים לס"מ
marginRight = pageSetup.RightMargin / 28.35 ' המרת שוליים ימניים לס"מ
' מציאת טווח עמודים עם אותו גודל ושוליים
endPage = startPage
Do While endPage <= totalPages
If ActiveDocument.Sections(currentSectionIndex).pageSetup.PageWidth <> pageSetup.PageWidth Or _
ActiveDocument.Sections(currentSectionIndex).pageSetup.PageHeight <> pageSetup.PageHeight Or _
ActiveDocument.Sections(currentSectionIndex).pageSetup.TopMargin <> pageSetup.TopMargin Or _
ActiveDocument.Sections(currentSectionIndex).pageSetup.BottomMargin <> pageSetup.BottomMargin Or _
ActiveDocument.Sections(currentSectionIndex).pageSetup.LeftMargin <> pageSetup.LeftMargin Or _
ActiveDocument.Sections(currentSectionIndex).pageSetup.RightMargin <> pageSetup.RightMargin Then
Exit Do
End If
endPage = endPage + 1
If endPage > ActiveDocument.Sections(currentSectionIndex).Range.Information(wdActiveEndPageNumber) Then
currentSectionIndex = currentSectionIndex + 1
If currentSectionIndex > ActiveDocument.Sections.Count Then Exit Do
End If
Loop
endPage = endPage - 1
' הוספת טווח עמודים עם גודל ושוליים להודעה
If startPage <= endPage Then
msg = msg & "עמודים " & startPage & " עד " & endPage & ":" & vbCrLf
msg = msg & " גודל העמוד: " & vbCrLf
msg = msg & Format(currentWidth, "0.00") & " x " & Format(currentHeight, "0.00") & " ס''מ" & vbCrLf
msg = msg & " שוליים:" & vbCrLf
msg = msg & " עליון: " & Format(marginTop, "0.00") & " ס''מ" & vbCrLf
msg = msg & " תחתון: " & Format(marginBottom, "0.00") & " ס''מ" & vbCrLf
msg = msg & " שמאלי: " & Format(marginLeft, "0.00") & " ס''מ" & vbCrLf
msg = msg & " ימני: " & Format(marginRight, "0.00") & " ס''מ" & vbCrLf
End If
' מעבר לטווח הבא
startPage = endPage + 1
Loop
' הצגת ההודעה בעברית
MsgBox msg, vbInformation, "מידע על גדלי עמודים ושוליים"
End Sub
ולגופו של עניין, אני לא ביקשתי שיכתבו לי מאקרו לתקון שגיאות.. אלא שיכתבו לי פקודת מאקרו שתציג לי הודעה בסיום פעולת המאקרו שלי, ובה יפורט אם בוצעו תיקונים, וא"כ אלו תיוקנים.
כנראה לא קראת ולא ניסית את המאקרו שעבדתי קשה בשבילך, הכנסתי כל הפקודות שלך במאקרו חדש שמציג בסוף סיכום איזה תיקונים עשה, ומה שלא הבנתי זה הפקודות שיש שם עם האותיות מנצפכ.
@מאקרו תודה רבה רבה, שילבתי את שלך יחד עם עוד כמה דברים, וזה מה שיצא, 8 סוגי פקודות, וזה כל מה שהייתי צריך, וכשאני יוציא ספר על מסכת בבא בתרא תקבל ממני 176 תודות כפול 2, כפי העמודים שיש במסכת שצריכים להיות בעמודה אחת. עריכה: המאקרו הסופי נמצא כאן.
@pcinfogmach מאקרו שמוסיף שדה למיספור אוטומטי עד 5 סדרות, מספור אוטומטי 2.dotm
לעדכון לאחר שינויים יש ללחוץ קונטרול a לבחירת כל הטקסט, ואח"כ f9 לעדכון. [ניתן להוסיף עוד סדרות ללא הגבלה ע"י העתקת המאקרו ושינוי האות לאחר המילה SEQ, זה לא חייב להיות לפי סדר האותיות, רק כדי להחזיק ראש שלא יהיו כפילויות, כדאי שזה כן יהיה לפי סדר האותיות].
שימושי מאוד לספר עם סימנים רבים, ובכל סימן יש סעיפים, לסימנים בוחרים שדה a, ובתוך כל סימן מכניסים סדרה נפרדת לסעיפים, כגון בתוך סימן א כל סעיף מסומן עם סדרה b, וכן הלאה, והתועלת הגדולה שיש בזה הוא שאם רוצים להוסיף או למחוק סימנים או סעיפים באמצע, לא צריך לתקן ידני את הכל, כגון אם יש מאה סימנים, ורוצים להוסיף או למחוק בין סימן י לסימן יא, לא צריך לתקן כל סימן וסימן, רק לוחצים על קונטרול a לבחירת כל הטקסט, ולוחצים f9, והכל מתעדכן בפעם אחת.
נ.ב. למסמך מוכן, אפשר להוסיף את השדה על ידי החלף, ראה כאן. עדכון: נוסף מקש חדש לעדכון אוטומטי של כל השדות.
יש גם אפשרות להוסיף טקסט לפני המספור, כגון סימן וכדו', ע"י הוספת פקודה זו לתוך המאקרו, בתחילת המאקרו לפני השורה הראשונה, כתוב 'סימן ' [עם רווח] ואפשר להכניס במקום זה איזה מילה שרוצים 'פרק' או 'סעיף'.
Selection.TypeText Text:="סימן "
וזה כל המאקרו כולל פקודה זו
Sub פרק()
'
' פרק Macro
'
'
Selection.TypeText Text:="סימן "
Application.Keyboard (1033)
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
"SEQ a\* hebrew1", PreserveFormatting:=True
End Sub
@מניין אגדי! תודה רבה!!
יש מצב גם למאקרו דומה שיעשה מעבר עמוד לפי בחירת סגנון?
לדוגמא שיהיה אפשרות לבחור את סגנון 'פסקת רשימה' לדוגמה ויעבור אוטומטי בכל המסמך ויעשה לפניו מעבר עמוד.
בדרך כלל אנשים אוהבים שתחילת כל סימן יהיה בעמוד חדש, ובקובץ עם הרבה סימנים זה עבודת נמלים..
ייש"כ
את זה עושים בלחיצת מקש בהגדרות פיסקא של הסגנון המסויים, ובוחרים באפשרות מעבר עמוד לפני.
לחיצת מקש ימין על הסגנון המבוקש, ובוחרים שינוי.
ספויילר
בחלונית שנפתח בוחרים 'עיצוב' ואח"כ 'פיסקא'.
ספויילר
בחר הלשונית מעברי עמוד ושורה, סמן מעבר עמוד לפני, אישור.
ספויילר
עכשיו ברגע אחד נוצר מעבר עמוד לאורך כל המסמך לפני הסגנון הזה שבחרת.
אם זה יעזור למישהו, יש לי מאקרו שהפעולה שלו הוא, 1. החלפת אות עם אות הסמוכה לה, 2. החלפת מילה עם המילה הסמוכה לה, 3. החלפת פיסקא עם פיסקא הסמוכה לה, זה תועלתי מאוד לעובדים בהגהות ועריכה.
כאמור יש שלשה לחצנים, וכדאי שהלחצנים יהיו באופן נגיש [לא בתוך כפתור נפתח], ועדיף עם מקשי קיצור, [אני עובד עכשיו על מסמך עם כמויות של טעויות כאלו, וזה עוזר לי מאוד]. החלפת אות מילה פיסקא.dotm
עריכה: החלפת מילה עם המילה הסמוכה לה שיעבוד גם על מילים שיש בתוכם סימונים של גרשיים וכדו'. וכן אם נבחרו כמה מילים, זה מעביר את כולם יחד לאחרי המילה הבאה.
Sub החלפת_מילה()
Dim rng As Range
Set rng = Selection.Range
Application.UndoRecord.StartCustomRecord ("החלפת מילה")
Do While rng.Start > 0 And IsPartOfWord(Left(ActiveDocument.Range(rng.Start - 1, rng.Start).Text, 1))
rng.Start = rng.Start - 1
Loop
Do While rng.End < ActiveDocument.Content.End And IsPartOfWord(Right(ActiveDocument.Range(rng.End, rng.End + 1).Text, 1))
rng.End = rng.End + 1
Loop
rng.Select
Selection.Cut
Do
Selection.MoveRight Unit:=wdCharacter, count:=1
Loop While Not IsPartOfWord(Selection.Text) And Selection.Start < ActiveDocument.Content.End
Do
Selection.MoveRight Unit:=wdCharacter, count:=1
Loop While IsPartOfWord(Selection.Text) And Selection.Start < ActiveDocument.Content.End
Selection.PasteAndFormat (wdFormatOriginalFormatting)
Application.UndoRecord.EndCustomRecord
End Sub
Function IsPartOfWord(ch As String) As Boolean
IsPartOfWord = (ch Like "[א-ת0-9""'-]")
End Function
לא חילקתי שום הערות, ולא עשיתי שום דבר ידני, עשיתי את שני הפעולות שכתבתי לעיל בפחות משני שניות, והכל הסתדר באופן אוטומטי.
ובמחילה מכבודו - התוצאה רחוקה מלהיות "עימוד".
כמו שכתבתי לך לא עימדתי את זה, רק התייחסתי לבעיה שהיה עם החללים, והראיתי איך זה הסתדר בפעולה פשוטה, [ולא הבנתי מדבריך שאתה רוצה לבחון אותי כאן בעימוד ].
לא פעם ולא פעמיים מגיעים אלי אברכים שניסו לעמד לבד בוורד, שהם נתקעו עם איזה בעיה "קטנה" אם אני יוכל לסדר להם את זה,
אותו דבר [ואפילו יותר] הוא גם במי שינסה לעמד לבד באינדיזיין בלי להכיר את התוכנה, אלא שבוורד אפשר לפחות להצליח חלקית גם בלי להכיר בגלל הנגישות של התוכנה.
ברוב המקרים מה שהם חושבים לבעיה קטנה, מתברר כבעיה גדולה, שהרבה פעמים לעמד מחדש בתוכנה נורמלית לוקחת פחות זמן.
גם בוורד מי שמכיר ויודע איך לעבוד יקח מעט זמן.
אני רק בא לחדד למי שעדיין תקוע עם וורד, חבל על כל הדמיונות, וורד היא לא תוכנת עימוד! חד וחלק!
ויש חולקים.
וגם אם יש תוספים למיניהם, הטובים עולים כסף, ועדיין התוצאה ברוב מוחלט של המקרים לא יהיה אותו דבר.
יש לנו כאן הכל על מגש של כסף ובחינם התוסף עיצוב תורני וכו'.
ניתן ללמוד את הבסיס של אינדיזיין בשיעורים בודדים או אפילו לבד, אחרי שתעשו את זה לא תפסיקו לצחוק על עצמכם.
גם לאחר שלומדים את הבסיס של אינדיזיין מסתבכים הרבה, וגם שם צריך כל מיני תוספים שעולים כסף. ומעדות אישית ישבתי יחד עם חבר שמשכנע אותי כל הזמן לעבור לאינדיזיין, והוא הופתע מהפיתוחים האחרונים שהיו כאן לאחרונה, ומהקלילות איך שזה עובד.
סתם מענין להבין אחת ולתמיד מה ההבדל ביניהם...
בין שינה למצב שינה ???
שינה זה במחשב
מצב שינה- זה לבטריה
נכון?
מצב שינה לא משתמש כלל עם הבטריה, וככה זה נשמר לי לכל היום בלי הטענה, אבל שינה כן משתמש קצת עם הבטריה, וזה לא מספיק לי.
אז למה יש את שינה ???
בשביל שהמחשב ישאר איך שהשארת אותו
בשביל זה יש את מצב שינה,
לא ?!
אני חושב ששניהם אותו דבר...
שינה מתעורר יותר מהר, אבל משתמש קצת עם הבטריה, ולפעמים גם מתעורר לבד בגלל משימות מתוזמנות, אבל מצב שינה לוקח קצת יותר זמן שיתעורר, אבל לא משתמש כלל עם הבטריה כמו מחשב כבוי.
היום גיליתי דבר מועיל במיוחד, ויכול להיות שלהרבה אני מגלה את אמריקה, ובכל זאת אני מעלה את זה לציבור.
כולנו מכירים את זה - ,
ועכשיו גיליתי שכל פעם שמשתמשים עם שני חלונות ביחד, נוצר למטה בשורת המשימות כרטיסיה נוספת כזאת בשם 'קבוצה' שמצורפים בו שני הקבצים יחד -
וכן משולב משני תוכנות כך -
ניסיתי לשלב בטבלה באופן הנ"ל גם עם תיבות טקסט, וזה נראה די מוצלח, ואפשר לראות בתמונות להלן איך שהטקסט עובר מתא אחד לשני באופן אוטומטי [כמובן שעשיתי את מלמעלה בלי להשקיע על המרווחים וכו', רק לראות אם זה שייך בכלל], ובאותו דרך זה עובר גם מעמוד לעמוד, ולכל תא אפשר לקבוע לאיזה תא הוא ימשיך, ועל זה הדרך אפשר לעמד כל הספר בצ'יק, מעתיקים הכל מעמוד ראשון לכל העמודים הבאים, לא צריך כל עמוד להתחיל מחדש, צריך להשקיע רק בעמוד הראשון את התבנית וכו' ומעתיקים לכל העמודים הבאים.
צריך לקחת בחשבון שוורד הגבילו את התאים, משהו כמו 50 אולי פחות.
ומנסיון שלי שאחרי כמות מסוימת של עמודים המסמך עלול לקרוס פתאום וזהו... אם השינוי האחרון לא נשמר זה הסיכוי היחיד שאני מכיר...
אני אישית התרגלתי לעשות כל עמוד במסמך חדש, זה לא כזה נפק"מ, זה קצת יותר ידני אך לא מורגש כ"כ.
אח"כ מחברים הכל לPDF בכמה שניות, בוחרים הכל ומכניסים, זה מסתדר אוטומטית לפי א"ב.
דבר ראשון זה יכול להועיל גם על כל עמוד בנפרד, שיגלוש מתא אחת לשניה.
דבר שני, עשיתי עכשיו תוך כמה שניות ניסיון להעתיק את שני העמודים על מאה חמישים עמודים [75 פעמים], וזה עדיין עובד מצויין בקלי קלות בלי להתקע אפי' פעם אחד.
לא נתקע? מעניין...
לא יודע למה, אבל לי נתקע כמה פעמים עד שהתחלתי את השיטה השניה, וגם חברה שניסתה לפתח תוסף אוטומטי לזה, אמרו לי שהם לא יכולים להמשיך את השיטה הזו כי הם גילו שוורד תומך רק במעט ולא יותר.
לאחר בדיקה מעמיקה באפשרויות של התיבות טקסט, אין מגבלה על כמות התיבות כלל, רק בדבר אחד שהאפשרות של רצף אחד מוגבל ל32 תיבות, זאת אומרת שכל 32 תיבות הולכים בנפרד.
ובכל זאת גם עם הגבלה זו עדיין זה מביא הרבה תועלת, כי לא צריך להעתיק כל פעם כמה מילים וכו', אלא משחקים רק עם גודל התיבה, ברגע שמגדילים את התיבה ויש מקום פנוי, אז המילים חוזרים פנימה באופן אוטומטי.
ולכן מי שיכול לפתח תוסף נוח ואוטומטי לזה, נראה לי שזה ישתלם לו, ותבא עליו ברכה.
לא לעשות מעברי עמודים לפני תחילת חבורה חדשה וכדו', במקום זאת לעשות שורה לפני החבורה ולכתוב בה סימן היכר כלשהו שכאן אנו מעוניינים לעשות מעבר עמוד. לדוגמה, @@@
עדיף לעשות הערת סקירה, הסימונים הללו עלולים להכנס לעימוד בטעות.
לכאורה מספיק לקבוע כותרת מיוחדת למקומות שרוצים לעשות מעבר עמוד, ואח"כ בשעת העימוד מגדירים בכותרת הזאת בהגדרות פסקא 'מעבר עמוד לפני', ובכל מקום שהוגדר פיסקא זו נוסף באופן אוטומטי מעבר עמוד, [ובאופן זה גם מרוויחים שזה לא משבש אח"כ את הכותרות האוטומטיים למעלה].