מה? אתה לא מבין מה כתוב?
לתועלת כל מי שלא הבין, הנה האשכול בשפת המדינה.
#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
בטח יסלחני על כך, אך לא ידוע לי איך מתמודדים עם מחמאות שכאלו אשר אינני מרגיש כלל ראוי להם...
ועכ"פ, עיקר תגובתי הוא לגבי 'חלוקת הקרדיטים' - אשר חשוב לי להבהיר שהתוסף הנזכר לא לבד עשיתיו, כי אם הי' בכח הרבים, ע"י שיתוף רעיונותיהם של כמה וכמה מהחברים, ועל כולם: מנהל פורום זה - קרש שי' - שעזרני ברעיונותיו ועצותיו המועילות על כל צעד ושעל, וכפי שפירטתי שם.