שאלה למומחים: החזרת הערות לגוף הטקסט בוורד

איילת שלו

משתמש מקצוען
עיצוב גרפי
שלום.

שאלה:

יש טקסט (ארוך מאד) בוורד עם הערות שוליים. אנחנו מעוניינים ל'החזיר' את ההערות לטקסט - כלומר במקום הערות שוליים יופיעו המקורות בגוף הטקסט, בתוך סוגריים (ובכתב קטן יותר.)
יש איזו דרך לעשות את זה? (אשמח לשמוע על כל פתרון, גם אם הוא בתשלום.)

תודה רבה
 

גרפיקנער

משתמש סופר מקצוען
עיצוב גרפי
עימוד ספרים
עריכה תורנית
יש שני דרכים.

א. על ידי שימוש בתוכנת מאקרו חיצונית (ארוך, מסובך, ומעצבן).

ב. 'קרש' יכתוב סקריפט קצר, בכמה דקות (קצר, פשוט, ועובד נפלא).


קרש, מחכים לך.
 

איילת שלו

משתמש מקצוען
עיצוב גרפי
אקרא בבוקר. תודה רבה מאד על ההתייחסות.
 

לייזער

משתמש צעיר
עימוד ספרים
להלן מאקרא ממוקדת יותר לצורך הענין, ובזה יתרונו (הקל מאד, יש לציין) על התוסף (פלאג-אין) הנזכר -- שמפני התמקדותו אפשר לחסוך 'בדרך' כמה פעולות שאפשר ויהי' צורך-הכרח לעשות לאחר ההשתמשות עם הפלאג-אין (וכגון להקטנת ההערות: שאפשרי הדבר ע"י הפלאג-אין - רק באם שותלים על-ידה גם קוד לפני ואחרי, שאז אפשר לחפש ולהחליף את אלו הקודים ומה שביניהם, ולהקטינם).
בנוסף ('על הדרך') נרשם כאן במאקרא, אשר באם ההערות הם בעלי יותר מפיסקא אחת, שאז במקום סימון פיסקא יהי' טאב (ואפשר כמובן להחליפו לסימן אחר, או לבטל כליל אופצי' זו - ע"י מחיקת הנצבע בכחול דלקמן). והסיבה לזה הוא, מפני שכל סימון פיסקא (בווארד) כולל בתוכו את העיצוב של כל הפיסקא, ובאם ייכנס סימון פיסקא של ההערות לתוך פנים הטעקסט - יקבל זה הפיסקא כולו את עיצובו של פיסקאות ההערות, וכמדומה שאין זה דבר הנרצה...

הנצבע בצבע אדום דלקמן:
() הם הסוגריים הנשתלים בפנים הטעקסט לפני ואחרי ההערה המיובאת. 8 הוא הגודל של ההערה (עם הסוגריים). ואפשר כמובן להחליף להנ"ל למשהו אחר.

קוד:
[LEFT]Sub FootnotesToMain()
    Dim i As Integer, myRange As Range
    For i = 1 To ActiveDocument.Footnotes.Count
        Set myRange = ActiveDocument.Footnotes(1).Range
[COLOR="blue"]        If InStr(myRange, Chr(13)) > 0 Then _
            myRange.Find.Execute FindText:=Chr(13), replacewith:=Chr(9), _
            Wrap:=wdFindStop, Replace:=wdReplaceAll[/COLOR]
        myRange.Copy
        With ActiveDocument.Footnotes(1).Reference
            .Paste: .InsertBefore "[COLOR="Red"]([/COLOR]": .InsertAfter "[COLOR="red"])[/COLOR]": .Font.SizeBi = [COLOR="red"]8[/COLOR]
        End With
    Next i
End Sub
[/LEFT]

ואני מקווה שאין בזה בבחי' כל המוסיף גורע.
 

איילת שלו

משתמש מקצוען
עיצוב גרפי
לייזער

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

אברימי

מנהל פורום סוכרת
מנהל
מנוי פרימיום
לייזער!
איך האב ליב דיין הערליכע היברו...
ישר כח אויף אלעס!
 

לייזער

משתמש צעיר
עימוד ספרים
בהמשך למאקרא שהועלה לעיל (ועד שיתברר היכן נמצאת אופצי' כזו מובנית בתוך ווארד) - הנה נמלכתי בדעתי אשר למען שלימות הענין (אף אם לעת-עתה אינו נוגע כ"כ אל הפועל) כדאי לבצע בה כמה שינויים 'קוסמטיים' (אשר יפורטו להלן), ומצורף בזה שוב כאשר ההוספות (המשמעותיים) צבועים בצבע חום (או איזה צבע שזה רק יהי').


ואלו הן ההוספות:
א. בעת העתקת ההערה -- התו הראשון שבהערה מועתקת יחד עם ההערה, מלבד אם הוא סימון הפניית ההערה שאז אינה מועתקת.
ב. אינו מעתיק את אלו הרווחים המיותרים שישנם (באם ישנם..) בתחילת ההערה או בסופה (הנקרא בלע"ז: leading/trailing spaces).
ג. בעת ההדבקה בתוך הטעקסט -- מקודם לא נלקח בחשבון את פונקציית ה"העתק והדבק החכמים" המובנית בווארד (ראה: כלים>אפשרויות>עריכה), אשר גורמת בעת הדבקת טעקסט כלשהו - שיתווספו רווחים לפני ואחרי הטעקסט; וזה גרם כאן לאי-אסתטיקה, מאחר והסוגר הפותח שבתחילת ההערה (שנשתלה בתוך הטעקסט ע"י המאקרא - לאחר ההדבקה) נכנסה לפני הרווח שבתחילת ההערה. -- כאן סודר זה ע"י ניטרול הפונקצי' הנ"ל תוך כדי הרצת המאקרא.
ד. עיצוב הסוגריים שמסביב להערה -- הושם דגש שיהיו זהים בעיצובם (=ישנם כמה סיבות שיכולים לגרום שלא יהיו באותו העיצוב).
ה. כללי -- הוספת שורת מצב (מופיע בתחתית המסך) בעת הרצת המאקרא, בכדי לדעת היכן מחזיק (תועלתי במיוחד לטעקסטים ארוכים..).

ואפשר כמובן להוסיף ולשנות עוד ועוד בכדי שיתאים לתנאים מסויימים, אלא שבשביל זה יש כבר צורך לראות בפועל במה דברים אמורים.


אגב: כדאי לקחת בחשבון אשר בעת ההדבקה לתוך הטעקסט - ההערה מקבלת כברירת מחדל את עיצוב סגנון הפיסקא שאליו הודבקה (ההקטנה נעשית לאחר מכן). ולדוגמא: באם סגנון הפיסקא (שאליו מדביקים את ההערה) הוגדרה כברירת מחדל שתהי' מודגשת, הנה כאשר מעתיקים הערה שעיצוב ברירת המחדל שלה היא שאינה מודגשת - המודגש יהפוך לאינו מודגש, והאינו מודגש למודגש. (אלא אם כן שינו באופן ידני בתוך ההערות את העיצוב שלה, שאז באם אינה מתאימה לעיצוב ברירת המחדל שלה (כפי שהיא במקומה), הנה אף בהעברתה למקום אחר אינה מקבלת שינויים).


קוד:
[LEFT]Sub FootnotesToMain()
    Dim Adjust As Boolean, myRange As Range
    Dim i As Integer, X As Integer
    
    Application.ScreenUpdating = False
[COLOR="Sienna"]    Adjust = Options.PasteAdjustWordSpacing: Options.PasteAdjustWordSpacing = False[/COLOR]
    X = ActiveDocument.Footnotes.Count
    For i = 1 To X
[COLOR="sienna"]        StatusBar = i & ":" & X[/COLOR]
        Set myRange = ActiveDocument.Footnotes(1).Range
        With myRange
            If InStr(myRange, Chr(13)) > 0 Then _
                .Find.Execute FindText:=Chr(13), ReplaceWith:=Chr(9), _
                Wrap:=wdFindStop, Replace:=wdReplaceAll
[COLOR="sienna"]            .MoveStart Count:=-1: If .Characters(1) = Chr(2) Then .MoveStart Count:=1
            .MoveStart Count:=Len(myRange) - Len(LTrim(myRange))
            .MoveEnd Count:=Len(RTrim(myRange)) - Len(myRange)[/COLOR]
            .Copy
        End With
        With ActiveDocument.Footnotes(1).Reference
            .Paste: .InsertBefore " (": .InsertAfter ")"
[COLOR="sienna"]                Set DupFont1 = .Characters(2).Font.Duplicate
                Set DupFont2 = .Characters.Last.Font.Duplicate
                .Characters.Last.Font = DupFont1: .Characters.First.Font = DupFont2[/COLOR]
            .MoveStart Count:=1: .Font.SizeBi = 8
        End With
    Next i
    Application.ScreenUpdating = True: [COLOR="sienna"]Options.PasteAdjustWordSpacing = Adjust[/COLOR]
End Sub[/LEFT]


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

איילת שלו

משתמש מקצוען
עיצוב גרפי
מדהים כמה שזה פשוט.

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

גמר חתימה טובה
 

tkh

משתמש מקצוען
עימוד ספרים
עריכה תורנית
ר' לייזער
כל הכבוד
אתה אוסף זכויות ליום הדין בכמויות...
כה לחי
גמח"ט
 

גרפיקנער

משתמש סופר מקצוען
עיצוב גרפי
עימוד ספרים
עריכה תורנית
רבותי, לר' לייזר יש קרדיט עצום אצל משתמשי תג. הוא יצר תוסף תוכנה ל'וורד' ששולף את כל סגנונות הטקסט שבמסמך, ומאפשר לשים קוד לפניהם וקוד לאחריהם, בלי להסתבך עם עשרות 'חפש החלף'.(ראה כאן:http://prog.co.il/showpost.php?p=119528&postcount=41)

הבן אדם הוא 'נותן' במלא מובן המילה!!!
 

לייזער

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

ועכ"פ, עיקר תגובתי הוא לגבי 'חלוקת הקרדיטים' - אשר חשוב לי להבהיר שהתוסף הנזכר לא לבד עשיתיו, כי אם הי' בכח הרבים, ע"י שיתוף רעיונותיהם של כמה וכמה מהחברים, ועל כולם: מנהל פורום זה - קרש שי' - שעזרני ברעיונותיו ועצותיו המועילות על כל צעד ושעל, וכפי שפירטתי שם.
 

בר בי רב

משתמש פעיל
@גרפיקנער, @לייזער @tkh או כל מישהו אחר,
האם יש למישהו גיבוי מהמאקרו הזה?
מדובר במשהו מאוד יעיל, והכל נהיה מטושטש כאן, וחבל
[אולי הטכנאים יספיקו לתקן את הבאג שתקף את האשכול הזה?]
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
מה? אתה לא מבין מה כתוב?

לתועלת כל מי שלא הבין, הנה האשכול בשפת המדינה.

#1
שלום.

שאלה:

יש טקסט (ארוך מאד) בוורד עם הערות שוליים. אנחנו מעוניינים ל'החזיר' את ההערות לטקסט - כלומר במקום הערות שוליים יופיעו המקורות בגוף הטקסט, בתוך סוגריים (ובכתב קטן יותר.)
יש איזו דרך לעשות את זה? (אשמח לשמוע על כל פתרון, גם אם הוא בתשלום.)

תודה רבה


#2
יש שני דרכים.

א. על ידי שימוש בתוכנת מאקרו חיצונית (ארוך, מסובך, ומעצבן).
ב. 'קרש' יכתוב סקריפט קצר, בכמה דקות (קצר, פשוט, ועובד נפלא).

קרש, מחכים לך.

#3
אקרא בבוקר. תודה רבה מאד על ההתייחסות.

#4
להלן מאקרא ממוקדת יותר לצורך הענין, ובזה יתרונו (הקל מאד, יש לציין) על התוסף (פלאג-אין) הנזכר -- שמפני התמקדותו אפשר לחסוך 'בדרך' כמה פעולות שאפשר ויהי' צורך-הכרח לעשות לאחר ההשתמשות עם הפלאג-אין (וכגון להקטנת ההערות: שאפשרי הדבר ע"י הפלאג-אין - רק באם שותלים על-ידה גם קוד לפני ואחרי, שאז אפשר לחפש ולהחליף את אלו הקודים ומה שביניהם, ולהקטינם).
בנוסף ('על הדרך') נרשם כאן במאקרא, אשר באם ההערות הם בעלי יותר מפיסקא אחת, שאז במקום סימון פיסקא יהי' טאב (ואפשר כמובן להחליפו לסימן אחר, או לבטל כליל אופצי' זו - ע"י מחיקת הנצבע בכחול דלקמן). והסיבה לזה הוא, מפני שכל סימון פיסקא (בווארד) כולל בתוכו את העיצוב של כל הפיסקא, ובאם ייכנס סימון פיסקא של ההערות לתוך פנים הטעקסט - יקבל זה הפיסקא כולו את עיצובו של פיסקאות ההערות, וכמדומה שאין זה דבר הנרצה...
הנצבע בצבע אדום דלקמן:
() הם הסוגריים הנשתלים בפנים הטעקסט לפני ואחרי ההערה המיובאת. 8 הוא הגודל של ההערה (עם הסוגריים). ואפשר כמובן להחליף להנ"ל למשהו אחר.
קוד:

Sub FootnotesToMain()
Dim i As Integer, myRange As Range
For i = 1 To ActiveDocument.Footnotes.Count
Set myRange = ActiveDocument.Footnotes(1).Range
If InStr(myRange, Chr(13)) > 0 Then _
myRange.Find.Execute FindText:=Chr(13), replacewith:=Chr(9), _
Wrap:=wdFindStop, Replace:=wdReplaceAll

myRange.Copy
With ActiveDocument.Footnotes(1).Reference
.Paste: .InsertBefore "(": .InsertAfter ")": .Font.SizeBi = 8
End With
Next i
End Sub


ואני מקווה שאין בזה בבחי' כל המוסיף גורע.

#5
לייזער
תודה רבה על הושטת העזרה.
ברגע שזה יהיה ממש למעשה כנראה שיהיו לי עוד שאלות...עדיין לא הוחלט סופית אם להשאיר ההערות (ציון מקורות) במקומן או להחזירן לטקסט.

#6
לייזער!
איך האב ליב דיין הערליכע היברו...
ישר כח אויף אלעס!

#7
בהמשך למאקרא שהועלה לעיל (ועד שיתברר היכן נמצאת אופצי' כזו מובנית בתוך ווארד) - הנה נמלכתי בדעתי אשר למען שלימות הענין (אף אם לעת-עתה אינו נוגע כ"כ אל הפועל) כדאי לבצע בה כמה שינויים 'קוסמטיים' (אשר יפורטו להלן), ומצורף בזה שוב כאשר ההוספות (המשמעותיים) צבועים בצבע חום (או איזה צבע שזה רק יהי').


ואלו הן ההוספות:
א. בעת העתקת ההערה -- התו הראשון שבהערה מועתקת יחד עם ההערה, מלבד אם הוא סימון הפניית ההערה שאז אינה מועתקת.
ב. אינו מעתיק את אלו הרווחים המיותרים שישנם (באם ישנם..) בתחילת ההערה או בסופה (הנקרא בלע"ז: leading/trailing spaces).
ג. בעת ההדבקה בתוך הטעקסט -- מקודם לא נלקח בחשבון את פונקציית ה"העתק והדבק החכמים" המובנית בווארד (ראה: כלים>אפשרויות>עריכה), אשר גורמת בעת הדבקת טעקסט כלשהו - שיתווספו רווחים לפני ואחרי הטעקסט; וזה גרם כאן לאי-אסתטיקה, מאחר והסוגר הפותח שבתחילת ההערה (שנשתלה בתוך הטעקסט ע"י המאקרא - לאחר ההדבקה) נכנסה לפני הרווח שבתחילת ההערה. -- כאן סודר זה ע"י ניטרול הפונקצי' הנ"ל תוך כדי הרצת המאקרא.
ד. עיצוב הסוגריים שמסביב להערה -- הושם דגש שיהיו זהים בעיצובם (=ישנם כמה סיבות שיכולים לגרום שלא יהיו באותו העיצוב).
ה. כללי -- הוספת שורת מצב (מופיע בתחתית המסך) בעת הרצת המאקרא, בכדי לדעת היכן מחזיק (תועלתי במיוחד לטעקסטים ארוכים..).

ואפשר כמובן להוסיף ולשנות עוד ועוד בכדי שיתאים לתנאים מסויימים, אלא שבשביל זה יש כבר צורך לראות בפועל במה דברים אמורים.

אגב: כדאי לקחת בחשבון אשר בעת ההדבקה לתוך הטעקסט - ההערה מקבלת כברירת מחדל את עיצוב סגנון הפיסקא שאליו הודבקה (ההקטנה נעשית לאחר מכן). ולדוגמא: באם סגנון הפיסקא (שאליו מדביקים את ההערה) הוגדרה כברירת מחדל שתהי' מודגשת, הנה כאשר מעתיקים הערה שעיצוב ברירת המחדל שלה היא שאינה מודגשת - המודגש יהפוך לאינו מודגש, והאינו מודגש למודגש. (אלא אם כן שינו באופן ידני בתוך ההערות את העיצוב שלה, שאז באם אינה מתאימה לעיצוב ברירת המחדל שלה (כפי שהיא במקומה), הנה אף בהעברתה למקום אחר אינה מקבלת שינויים).


קוד:

Sub FootnotesToMain()
Dim Adjust As Boolean, myRange As Range
Dim i As Integer, X As Integer

Application.ScreenUpdating = False
Adjust = Options.PasteAdjustWordSpacing: Options.PasteAdjustWordSpacing = False
X = ActiveDocument.Footnotes.Count
For i = 1 To X
StatusBar = i & ":" & X
Set myRange = ActiveDocument.Footnotes(1).Range
With myRange
If InStr(myRange, Chr(13)) > 0 Then _
.Find.Execute FindText:=Chr(13), ReplaceWith:=Chr(9), _
Wrap:=wdFindStop, Replace:=wdReplaceAll
.MoveStart Count:=-1: If .Characters(1) = Chr(2) Then .MoveStart Count:=1
.MoveStart Count:=Len(myRange) - Len(LTrim(myRange))
.MoveEnd Count:=Len(RTrim(myRange)) - Len(myRange)

.Copy
End With
With ActiveDocument.Footnotes(1).Reference
.Paste: .InsertBefore " (": .InsertAfter ")"
Set DupFont1 = .Characters(2).Font.Duplicate
Set DupFont2 = .Characters.Last.Font.Duplicate
.Characters.Last.Font = DupFont1: .Characters.First.Font = DupFont2

.MoveStart Count:=1: .Font.SizeBi = 8
End With
Next i
Application.ScreenUpdating = True: Options.PasteAdjustWordSpacing = Adjust
End Sub​


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

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

גמר חתימה טובה

#9
ר' לייזער
כל הכבוד
אתה אוסף זכויות ליום הדין בכמויות...
כה לחי
גמח"ט

#10
רבותי, לר' לייזר יש קרדיט עצום אצל משתמשי תג. הוא יצר תוסף תוכנה ל'וורד' ששולף את כל סגנונות הטקסט שבמסמך, ומאפשר לשים קוד לפניהם וקוד לאחריהם, בלי להסתבך עם עשרות 'חפש החלף'.(ראה כאן:http://prog.co.il/showpost.php?p=119528&postcount=41)

הבן אדם הוא 'נותן' במלא מובן המילה!!!

#11
בטח יסלחני על כך, אך לא ידוע לי איך מתמודדים עם מחמאות שכאלו אשר אינני מרגיש כלל ראוי להם...

ועכ"פ, עיקר תגובתי הוא לגבי 'חלוקת הקרדיטים' - אשר חשוב לי להבהיר שהתוסף הנזכר לא לבד עשיתיו, כי אם הי' בכח הרבים, ע"י שיתוף רעיונותיהם של כמה וכמה מהחברים, ועל כולם: מנהל פורום זה - קרש שי' - שעזרני ברעיונותיו ועצותיו המועילות על כל צעד ושעל, וכפי שפירטתי שם.
 

צורת הדף

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

גרפיקנער

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

====
הוראות:

לאחר ייצוא מתג, מכניסים ההערות בסוף קובץ הראשי. מכניסים פסקה עם "+++" (ללא המרכאות) בין טקסט הראשי לטקסט ההערות. המאקרו מזהה את טקסט ההערות מסימן "+++" ואילך.

כדאי להריץ את המאקרו כאשר עוד ישנם כל הקודים וסימנים של תג – כפי שהם מוארים בצבע צהוב ע"י הייצוא. כי על פיהם בודק המאקרו באם כל הערה היא בפיסקא בפני עצמה, או שכמה הערות באים בתוך פיסקא אחת.

להפעיל המאקרו יש להריץ פקודת ConnectFootnotes.

בברירת מחדל – ייחוס הקישורים בפנים ובהערות שהמאקרו מחבר ביניהם הם 0, היינו ללא ייחוס. באם רוצים לשנות את ייחוס הקישורים – ניתן לשנות כן במאקרו, בשורה: Notes 0, 0. המספר הראשון הוא לקישורים שבפנים, והמספר השני הוא לקישורים שבהערות.

באם אין קישורים בטקסט, אך ישנם סימנים אחרים שרוצים לקשר את הטקסטים על פיהם – ניתן כמובן להחליף (לפני הרצת המאקרו) את אותם הסימנים לסימני קישורי הערה כפי שנראים בייצוא מתג (כגון: "<*1>"); או, לחילופין, לסימנים שבהם המאקרו משתמש: "+|+" (לפנים) ו"+|#" (להערות) [אגב: באם ישנם מכבר סימנים אלו בתוך הטקסט, מסיבה כלשהי, ואין רוצים שהמאקרו יפעל על פיהם, יש להסיר סימן ' שבתחילת השורה התשיעית של הפונקצי' Notes, בכדי שיחליף את הסימנים הנ"ל לסימן אחר, ובכך לא יפריע למהלכו של המאקרו].

שים לב: לאחר שהמאקרו ישתול את כל ההערות במקומם - גם ימחוק מסימן "+++" האמור עד לסיום הקובץ, וזאת גם אם יש טקסט נוסף כלשהוא בין סימן הנ"ל לבין סימון ההערה הראשונה (שמשם ואילך יושתל בהערות במקומם).

והנה המאקרו (שנכתבה בשותפות עם כמה מידידיי, ותודתי להם):

קוד:

קוד:
Sub ConnectFootnotes()
   Notes 0, 0
End Sub
Function Notes(Optional iFN1 As Integer, Optional iFN2 As Integer, Optional bIn As Boolean) As Integer
   Dim i As Integer, sFN(1) As String, J(1) As Long, myRange() As Range, sMsg As String, iViewType As Integer, bSmartCut As Boolean
   If Not bIn Then Application.ScreenUpdating = False: iViewType = ActiveDocument.ActiveWindow.View.Type
   If Application.Version >= 12 Then ActiveDocument.ActiveWindow.View.Type = wdPrintView Else ActiveDocument.ActiveWindow.View.Type = wdNormalView
   ActiveDocument.StoryRanges(1).Select: Selection.End = 0: If Not bIn Then Call initial
   If Val(iFN1) = 0 Then sFN(0) = "\*" Else sFN(0) = "$" & CStr(iFN1) & " "
   If Val(iFN2) = 0 Then sFN(1) = "\*" Else sFN(1) = "$" & CStr(iFN2) & " "
   With Selection.Find
       If .Execute(findText:="+++", Wrap:=wdFindContinue) Then Selection.Collapse wdCollapseEnd Else sMsg = "הכנס ""+++"" לפני טעקסט ההערות!": GoTo X3
       'If .Execute(FindText:="+(|[+#])", ReplaceWith:="#\1", Replace:=wdReplaceAll, MatchWildcards:=True, Wrap:=wdFindContinue) Then i = 1
       If .Execute(findText:="\<" & sFN(1) & "[0-9 ]{1,}\>", ReplaceWith:="+|#", Replace:=wdReplaceAll, MatchWildcards:=True, Wrap:=wdFindStop) Then i = i + 1
       If .Execute(findText:="\<" & sFN(0) & "[0-9 ]{1,}\>", ReplaceWith:="+|+", Replace:=wdReplaceAll, MatchWildcards:=True, Wrap:=wdFindContinue) Then i = i + 1
       J(0) = UBound(split(ActiveDocument.Range.Text, "+|+")): J(1) = UBound(split(ActiveDocument.Range.Text, "+|#"))
       If J(0) <> J(1) Then sMsg = "אין תאימות לקישורים! (" & J(0) & "<>" & J(1) & ")": ActiveDocument.Undo i: GoTo X3
       If J(0) = 0 Then GoTo X3
       ReDim myRange(J(0)): i = 1: Selection.End = 0: .Text = "+|#": .Wrap = wdFindContinue
       While .Execute
           StatusBar = "Setting footnote range " & i & ":" & UBound(myRange)
           With Selection
               J(1) = (.MoveStartUntil(Chr(13), wdBackward)) + 1: If .Range.HighlightColorIndex = 9999999 Or .Range.HighlightColorIndex = 0 Then If J(1) < 0 Then .MoveStart 1, J(1) * -1
               If Not i = 1 Then myRange(i - 1).SetRange start:=myRange(i - 1).start, End:=.start
               Set myRange(i) = ActiveDocument.Range(start:=.start, End:=.End)
               If i = UBound(myRange) Then myRange(i).SetRange start:=myRange(i).start, End:=ActiveDocument.Range.End: GoTo X1
               i = i + 1: .Collapse wdCollapseEnd
           End With
       Wend
X1:     Selection.End = 0: .Execute "+|+": bSmartCut = Options.SmartCutPaste: Options.SmartCutPaste = False
       With Selection: .Delete: .Footnotes.Add Range:=Selection.Range, Reference:=""
           ActiveDocument.StoryRanges(1).Footnotes(1).Reference.Select: .Range.HighlightColorIndex = wdNoHighlight: .Copy: .Collapse wdCollapseEnd
       End With
       .Execute ReplaceWith:="^c", Replace:=wdReplaceAll, Wrap:=wdFindContinue
       For i = 1 To UBound(myRange)
           StatusBar = "Inserting footnotes " & i & ":" & UBound(myRange): While Right(myRange(i), 1) = Chr(13): myRange(i).MoveEnd wdCharacter, -1: Wend
           ActiveDocument.StoryRanges(2).Footnotes(i).Range.Select: Selection.ParagraphFormat = myRange(i).Paragraphs.First.Range.ParagraphFormat
           myRange(i).Copy: Selection.PasteAndFormat wdPasteDefault: If i = UBound(myRange) Then Exit For
       Next i
       Options.SmartCutPaste = bSmartCut: ActiveDocument.StoryRanges(2).Find.Execute "+|#", ReplaceWith:="", Replace:=wdReplaceAll, Wrap:=wdFindContinue
       ActiveDocument.StoryRanges(1).Select: Selection.End = 0: .Execute "+++", Wrap:=wdFindContinue: With Selection: .MoveEnd wdStory: .Delete: .End = 0: End With
       .Text = "": .MatchWildcards = False
   End With
   If Not bIn Then ActiveDocument.ActiveWindow.View.Type = iViewType: Application.ScreenUpdating = True
   Notes = 2: Exit Function
X3: With Selection.Find: .Text = "": .Replacement.Text = "": .MatchWildcards = False: End With: Notes = 1
   If Not bIn And sMsg <> "" Then MsgBox sMsg, vbMsgBoxRtlReading + vbMsgBoxRight: ActiveDocument.ActiveWindow.View.Type = iViewType: Application.ScreenUpdating = True
End Function
Private Sub initial()
   With Selection.Find: .ClearFormatting: .Replacement.ClearFormatting: .Replacement.Text = ""
       If Not .Execute(findText:="?", Forward:=True, MatchWildcards:=True, MatchCase:=False, Wrap:=wdFindContinue) Then Application.Browser.Next
       .Text = "": .MatchWildcards = False: Selection.MoveLeft
   End With
End Sub
 

בר בי רב

משתמש פעיל
מה? אתה לא מבין מה כתוב?

לתועלת כל מי שלא הבין, הנה האשכול בשפת המדינה.

#1
שלום.

שאלה:

יש טקסט (ארוך מאד) בוורד עם הערות שוליים. אנחנו מעוניינים ל'החזיר' את ההערות לטקסט - כלומר במקום הערות שוליים יופיעו המקורות בגוף הטקסט, בתוך סוגריים (ובכתב קטן יותר.)
יש איזו דרך לעשות את זה? (אשמח לשמוע על כל פתרון, גם אם הוא בתשלום.)

תודה רבה


#2
יש שני דרכים.

א. על ידי שימוש בתוכנת מאקרו חיצונית (ארוך, מסובך, ומעצבן).
ב. 'קרש' יכתוב סקריפט קצר, בכמה דקות (קצר, פשוט, ועובד נפלא).

קרש, מחכים לך.

#3
אקרא בבוקר. תודה רבה מאד על ההתייחסות.

#4
להלן מאקרא ממוקדת יותר לצורך הענין, ובזה יתרונו (הקל מאד, יש לציין) על התוסף (פלאג-אין) הנזכר -- שמפני התמקדותו אפשר לחסוך 'בדרך' כמה פעולות שאפשר ויהי' צורך-הכרח לעשות לאחר ההשתמשות עם הפלאג-אין (וכגון להקטנת ההערות: שאפשרי הדבר ע"י הפלאג-אין - רק באם שותלים על-ידה גם קוד לפני ואחרי, שאז אפשר לחפש ולהחליף את אלו הקודים ומה שביניהם, ולהקטינם).
בנוסף ('על הדרך') נרשם כאן במאקרא, אשר באם ההערות הם בעלי יותר מפיסקא אחת, שאז במקום סימון פיסקא יהי' טאב (ואפשר כמובן להחליפו לסימן אחר, או לבטל כליל אופצי' זו - ע"י מחיקת הנצבע בכחול דלקמן). והסיבה לזה הוא, מפני שכל סימון פיסקא (בווארד) כולל בתוכו את העיצוב של כל הפיסקא, ובאם ייכנס סימון פיסקא של ההערות לתוך פנים הטעקסט - יקבל זה הפיסקא כולו את עיצובו של פיסקאות ההערות, וכמדומה שאין זה דבר הנרצה...
הנצבע בצבע אדום דלקמן:
() הם הסוגריים הנשתלים בפנים הטעקסט לפני ואחרי ההערה המיובאת. 8 הוא הגודל של ההערה (עם הסוגריים). ואפשר כמובן להחליף להנ"ל למשהו אחר.
קוד:


Sub FootnotesToMain()
Dim i As Integer, myRange As Range
For i = 1 To ActiveDocument.Footnotes.Count
Set myRange = ActiveDocument.Footnotes(1).Range
If InStr(myRange, Chr(13)) > 0 Then _
myRange.Find.Execute FindText:=Chr(13), replacewith:=Chr(9), _
Wrap:=wdFindStop, Replace:=wdReplaceAll

myRange.Copy
With ActiveDocument.Footnotes(1).Reference
.Paste: .InsertBefore "(": .InsertAfter ")": .Font.SizeBi = 8
End With
Next i
End Sub


ואני מקווה שאין בזה בבחי' כל המוסיף גורע.

#5
לייזער
תודה רבה על הושטת העזרה.
ברגע שזה יהיה ממש למעשה כנראה שיהיו לי עוד שאלות...עדיין לא הוחלט סופית אם להשאיר ההערות (ציון מקורות) במקומן או להחזירן לטקסט.

#6
לייזער!
איך האב ליב דיין הערליכע היברו...
ישר כח אויף אלעס!

#7
בהמשך למאקרא שהועלה לעיל (ועד שיתברר היכן נמצאת אופצי' כזו מובנית בתוך ווארד) - הנה נמלכתי בדעתי אשר למען שלימות הענין (אף אם לעת-עתה אינו נוגע כ"כ אל הפועל) כדאי לבצע בה כמה שינויים 'קוסמטיים' (אשר יפורטו להלן), ומצורף בזה שוב כאשר ההוספות (המשמעותיים) צבועים בצבע חום (או איזה צבע שזה רק יהי').


ואלו הן ההוספות:
א. בעת העתקת ההערה -- התו הראשון שבהערה מועתקת יחד עם ההערה, מלבד אם הוא סימון הפניית ההערה שאז אינה מועתקת.
ב. אינו מעתיק את אלו הרווחים המיותרים שישנם (באם ישנם..) בתחילת ההערה או בסופה (הנקרא בלע"ז: leading/trailing spaces).
ג. בעת ההדבקה בתוך הטעקסט -- מקודם לא נלקח בחשבון את פונקציית ה"העתק והדבק החכמים" המובנית בווארד (ראה: כלים>אפשרויות>עריכה), אשר גורמת בעת הדבקת טעקסט כלשהו - שיתווספו רווחים לפני ואחרי הטעקסט; וזה גרם כאן לאי-אסתטיקה, מאחר והסוגר הפותח שבתחילת ההערה (שנשתלה בתוך הטעקסט ע"י המאקרא - לאחר ההדבקה) נכנסה לפני הרווח שבתחילת ההערה. -- כאן סודר זה ע"י ניטרול הפונקצי' הנ"ל תוך כדי הרצת המאקרא.
ד. עיצוב הסוגריים שמסביב להערה -- הושם דגש שיהיו זהים בעיצובם (=ישנם כמה סיבות שיכולים לגרום שלא יהיו באותו העיצוב).
ה. כללי -- הוספת שורת מצב (מופיע בתחתית המסך) בעת הרצת המאקרא, בכדי לדעת היכן מחזיק (תועלתי במיוחד לטעקסטים ארוכים..).

ואפשר כמובן להוסיף ולשנות עוד ועוד בכדי שיתאים לתנאים מסויימים, אלא שבשביל זה יש כבר צורך לראות בפועל במה דברים אמורים.

אגב: כדאי לקחת בחשבון אשר בעת ההדבקה לתוך הטעקסט - ההערה מקבלת כברירת מחדל את עיצוב סגנון הפיסקא שאליו הודבקה (ההקטנה נעשית לאחר מכן). ולדוגמא: באם סגנון הפיסקא (שאליו מדביקים את ההערה) הוגדרה כברירת מחדל שתהי' מודגשת, הנה כאשר מעתיקים הערה שעיצוב ברירת המחדל שלה היא שאינה מודגשת - המודגש יהפוך לאינו מודגש, והאינו מודגש למודגש. (אלא אם כן שינו באופן ידני בתוך ההערות את העיצוב שלה, שאז באם אינה מתאימה לעיצוב ברירת המחדל שלה (כפי שהיא במקומה), הנה אף בהעברתה למקום אחר אינה מקבלת שינויים).


קוד:


Sub FootnotesToMain()
Dim Adjust As Boolean, myRange As Range
Dim i As Integer, X As Integer

Application.ScreenUpdating = False
Adjust = Options.PasteAdjustWordSpacing: Options.PasteAdjustWordSpacing = False
X = ActiveDocument.Footnotes.Count
For i = 1 To X
StatusBar = i & ":" & X
Set myRange = ActiveDocument.Footnotes(1).Range
With myRange
If InStr(myRange, Chr(13)) > 0 Then _
.Find.Execute FindText:=Chr(13), ReplaceWith:=Chr(9), _
Wrap:=wdFindStop, Replace:=wdReplaceAll
.MoveStart Count:=-1: If .Characters(1) = Chr(2) Then .MoveStart Count:=1
.MoveStart Count:=Len(myRange) - Len(LTrim(myRange))
.MoveEnd Count:=Len(RTrim(myRange)) - Len(myRange)

.Copy
End With
With ActiveDocument.Footnotes(1).Reference
.Paste: .InsertBefore " (": .InsertAfter ")"
Set DupFont1 = .Characters(2).Font.Duplicate
Set DupFont2 = .Characters.Last.Font.Duplicate
.Characters.Last.Font = DupFont1: .Characters.First.Font = DupFont2

.MoveStart Count:=1: .Font.SizeBi = 8
End With
Next i
Application.ScreenUpdating = True: Options.PasteAdjustWordSpacing = Adjust
End Sub​


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

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

גמר חתימה טובה

#9
ר' לייזער
כל הכבוד
אתה אוסף זכויות ליום הדין בכמויות...
כה לחי
גמח"ט

#10
רבותי, לר' לייזר יש קרדיט עצום אצל משתמשי תג. הוא יצר תוסף תוכנה ל'וורד' ששולף את כל סגנונות הטקסט שבמסמך, ומאפשר לשים קוד לפניהם וקוד לאחריהם, בלי להסתבך עם עשרות 'חפש החלף'.(ראה כאן:http://prog.co.il/showpost.php?p=119528&postcount=41)

הבן אדם הוא 'נותן' במלא מובן המילה!!!

#11
בטח יסלחני על כך, אך לא ידוע לי איך מתמודדים עם מחמאות שכאלו אשר אינני מרגיש כלל ראוי להם...

ועכ"פ, עיקר תגובתי הוא לגבי 'חלוקת הקרדיטים' - אשר חשוב לי להבהיר שהתוסף הנזכר לא לבד עשיתיו, כי אם הי' בכח הרבים, ע"י שיתוף רעיונותיהם של כמה וכמה מהחברים, ועל כולם: מנהל פורום זה - קרש שי' - שעזרני ברעיונותיו ועצותיו המועילות על כל צעד ושעל, וכפי שפירטתי שם.
לצערי זו התגובה (על אף שנבחר טקסט)
 

קבצים מצורפים

  • ttt.png
    ttt.png
    KB 7.3 · צפיות: 17

בר בי רב

משתמש פעיל
מצאתי שמור אצלי:

====
הוראות:

לאחר ייצוא מתג, מכניסים ההערות בסוף קובץ הראשי. מכניסים פסקה עם "+++" (ללא המרכאות) בין טקסט הראשי לטקסט ההערות. המאקרו מזהה את טקסט ההערות מסימן "+++" ואילך.

כדאי להריץ את המאקרו כאשר עוד ישנם כל הקודים וסימנים של תג – כפי שהם מוארים בצבע צהוב ע"י הייצוא. כי על פיהם בודק המאקרו באם כל הערה היא בפיסקא בפני עצמה, או שכמה הערות באים בתוך פיסקא אחת.

להפעיל המאקרו יש להריץ פקודת ConnectFootnotes.

בברירת מחדל – ייחוס הקישורים בפנים ובהערות שהמאקרו מחבר ביניהם הם 0, היינו ללא ייחוס. באם רוצים לשנות את ייחוס הקישורים – ניתן לשנות כן במאקרו, בשורה: Notes 0, 0. המספר הראשון הוא לקישורים שבפנים, והמספר השני הוא לקישורים שבהערות.

באם אין קישורים בטקסט, אך ישנם סימנים אחרים שרוצים לקשר את הטקסטים על פיהם – ניתן כמובן להחליף (לפני הרצת המאקרו) את אותם הסימנים לסימני קישורי הערה כפי שנראים בייצוא מתג (כגון: "<*1>"); או, לחילופין, לסימנים שבהם המאקרו משתמש: "+|+" (לפנים) ו"+|#" (להערות) [אגב: באם ישנם מכבר סימנים אלו בתוך הטקסט, מסיבה כלשהי, ואין רוצים שהמאקרו יפעל על פיהם, יש להסיר סימן ' שבתחילת השורה התשיעית של הפונקצי' Notes, בכדי שיחליף את הסימנים הנ"ל לסימן אחר, ובכך לא יפריע למהלכו של המאקרו].

שים לב: לאחר שהמאקרו ישתול את כל ההערות במקומם - גם ימחוק מסימן "+++" האמור עד לסיום הקובץ, וזאת גם אם יש טקסט נוסף כלשהוא בין סימן הנ"ל לבין סימון ההערה הראשונה (שמשם ואילך יושתל בהערות במקומם).

והנה המאקרו (שנכתבה בשותפות עם כמה מידידיי, ותודתי להם):

קוד:

קוד:
Sub ConnectFootnotes()
   Notes 0, 0
End Sub
Function Notes(Optional iFN1 As Integer, Optional iFN2 As Integer, Optional bIn As Boolean) As Integer
   Dim i As Integer, sFN(1) As String, J(1) As Long, myRange() As Range, sMsg As String, iViewType As Integer, bSmartCut As Boolean
   If Not bIn Then Application.ScreenUpdating = False: iViewType = ActiveDocument.ActiveWindow.View.Type
   If Application.Version >= 12 Then ActiveDocument.ActiveWindow.View.Type = wdPrintView Else ActiveDocument.ActiveWindow.View.Type = wdNormalView
   ActiveDocument.StoryRanges(1).Select: Selection.End = 0: If Not bIn Then Call initial
   If Val(iFN1) = 0 Then sFN(0) = "\*" Else sFN(0) = "$" & CStr(iFN1) & " "
   If Val(iFN2) = 0 Then sFN(1) = "\*" Else sFN(1) = "$" & CStr(iFN2) & " "
   With Selection.Find
       If .Execute(findText:="+++", Wrap:=wdFindContinue) Then Selection.Collapse wdCollapseEnd Else sMsg = "הכנס ""+++"" לפני טעקסט ההערות!": GoTo X3
       'If .Execute(FindText:="+(|[+#])", ReplaceWith:="#\1", Replace:=wdReplaceAll, MatchWildcards:=True, Wrap:=wdFindContinue) Then i = 1
       If .Execute(findText:="\<" & sFN(1) & "[0-9 ]{1,}\>", ReplaceWith:="+|#", Replace:=wdReplaceAll, MatchWildcards:=True, Wrap:=wdFindStop) Then i = i + 1
       If .Execute(findText:="\<" & sFN(0) & "[0-9 ]{1,}\>", ReplaceWith:="+|+", Replace:=wdReplaceAll, MatchWildcards:=True, Wrap:=wdFindContinue) Then i = i + 1
       J(0) = UBound(split(ActiveDocument.Range.Text, "+|+")): J(1) = UBound(split(ActiveDocument.Range.Text, "+|#"))
       If J(0) <> J(1) Then sMsg = "אין תאימות לקישורים! (" & J(0) & "<>" & J(1) & ")": ActiveDocument.Undo i: GoTo X3
       If J(0) = 0 Then GoTo X3
       ReDim myRange(J(0)): i = 1: Selection.End = 0: .Text = "+|#": .Wrap = wdFindContinue
       While .Execute
           StatusBar = "Setting footnote range " & i & ":" & UBound(myRange)
           With Selection
               J(1) = (.MoveStartUntil(Chr(13), wdBackward)) + 1: If .Range.HighlightColorIndex = 9999999 Or .Range.HighlightColorIndex = 0 Then If J(1) < 0 Then .MoveStart 1, J(1) * -1
               If Not i = 1 Then myRange(i - 1).SetRange start:=myRange(i - 1).start, End:=.start
               Set myRange(i) = ActiveDocument.Range(start:=.start, End:=.End)
               If i = UBound(myRange) Then myRange(i).SetRange start:=myRange(i).start, End:=ActiveDocument.Range.End: GoTo X1
               i = i + 1: .Collapse wdCollapseEnd
           End With
       Wend
X1:     Selection.End = 0: .Execute "+|+": bSmartCut = Options.SmartCutPaste: Options.SmartCutPaste = False
       With Selection: .Delete: .Footnotes.Add Range:=Selection.Range, Reference:=""
           ActiveDocument.StoryRanges(1).Footnotes(1).Reference.Select: .Range.HighlightColorIndex = wdNoHighlight: .Copy: .Collapse wdCollapseEnd
       End With
       .Execute ReplaceWith:="^c", Replace:=wdReplaceAll, Wrap:=wdFindContinue
       For i = 1 To UBound(myRange)
           StatusBar = "Inserting footnotes " & i & ":" & UBound(myRange): While Right(myRange(i), 1) = Chr(13): myRange(i).MoveEnd wdCharacter, -1: Wend
           ActiveDocument.StoryRanges(2).Footnotes(i).Range.Select: Selection.ParagraphFormat = myRange(i).Paragraphs.First.Range.ParagraphFormat
           myRange(i).Copy: Selection.PasteAndFormat wdPasteDefault: If i = UBound(myRange) Then Exit For
       Next i
       Options.SmartCutPaste = bSmartCut: ActiveDocument.StoryRanges(2).Find.Execute "+|#", ReplaceWith:="", Replace:=wdReplaceAll, Wrap:=wdFindContinue
       ActiveDocument.StoryRanges(1).Select: Selection.End = 0: .Execute "+++", Wrap:=wdFindContinue: With Selection: .MoveEnd wdStory: .Delete: .End = 0: End With
       .Text = "": .MatchWildcards = False
   End With
   If Not bIn Then ActiveDocument.ActiveWindow.View.Type = iViewType: Application.ScreenUpdating = True
   Notes = 2: Exit Function
X3: With Selection.Find: .Text = "": .Replacement.Text = "": .MatchWildcards = False: End With: Notes = 1
   If Not bIn And sMsg <> "" Then MsgBox sMsg, vbMsgBoxRtlReading + vbMsgBoxRight: ActiveDocument.ActiveWindow.View.Type = iViewType: Application.ScreenUpdating = True
End Function
Private Sub initial()
   With Selection.Find: .ClearFormatting: .Replacement.ClearFormatting: .Replacement.Text = ""
       If Not .Execute(findText:="?", Forward:=True, MatchWildcards:=True, MatchCase:=False, Wrap:=wdFindContinue) Then Application.Browser.Next
       .Text = "": .MatchWildcards = False: Selection.MoveLeft
   End With
End Sub
מה עושים אם המקרו לא מגיב.
 

אולי מעניין אותך גם...

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק קכג

א שִׁיר הַמַּעֲלוֹת אֵלֶיךָ נָשָׂאתִי אֶת עֵינַי הַיֹּשְׁבִי בַּשָּׁמָיִם:ב הִנֵּה כְעֵינֵי עֲבָדִים אֶל יַד אֲדוֹנֵיהֶם כְּעֵינֵי שִׁפְחָה אֶל יַד גְּבִרְתָּהּ כֵּן עֵינֵינוּ אֶל יְהוָה אֱלֹהֵינוּ עַד שֶׁיְּחָנֵּנוּ:ג חָנֵּנוּ יְהוָה חָנֵּנוּ כִּי רַב שָׂבַעְנוּ בוּז:ד רַבַּת שָׂבְעָה לָּהּ נַפְשֵׁנוּ הַלַּעַג הַשַּׁאֲנַנִּים הַבּוּז לִגְאֵיוֹנִים:
נקרא  3  פעמים

לוח מודעות

למעלה