עזרה | עזרה בכתיבת פקודות מאקרו שונות
-
שלום וברכה אני צריך עזרה בכמה פקודות של מאקרו
א. יש לי בעיה שבכמה מסמכים שלי נכנסו הרבה סגנונות מיותרים ואני רוצה למוחק אותם אבל בחלון ניהול סגונות של וורד שמאפשר מחיקת סגונות יש בעיה שאי אפשר למחוק כמה סגנונות יחד אלא אחד אחד, האם אפשר לעשות מאקרו שמוחק את כל הסגנונות שלא משתמשים בהם כעת במסמך זה.ב ראיתי בפורום באיזשהו מקום פקודת מאקרו שמאפשרת שמירה אוטמטית, ורציתי לשאול האם אפשר לעשות חלון מסודר שמאפשר בחירה האם להפעיל את הפקודה וכן בחירת זמן של השמירה אוטמטית ועוד
וכן פקודה זו מכילה מאקרו שמאפשר הפעלת מאקרו בצורה אוטמטית בפתיחת מסמך אולי אפשר לעשות חלון שמאפשר הכנסת והוצאת מאקרו להפעלה אוטמטית בפתיחת המסמךSub AutoOpen() 'פקודות שמופעלות אוטמטי בפתיחת הוורד WordSaver End Sub Sub WordSaver() 'פקודת שמירה חלק ראשון Application.OnTime When:=Now + _ TimeValue("00:05:00"), _ Name:="Saver" End Sub Sub Saver() 'פקודת שמירה חלק שני 'חלק הראשון במקרה שאין שגיאה כלומר מסמך שנשמר בעבר On Error Resume Next ActiveDocument.Save WordSaver End Sub
ג. בניתי מאקרו שעושה חלון בהערות שולים מתחת למספור הערה
אמנם צריך לשפר אותו בכמה נקודות
1 שהמאקרו יכנס בצורה אוטמטית להערות שולים
2 שהמאקרו יאפשר בחירה האם להפעיל על כל המסמך או על חלק מהערות.
מצורף הקוד שעשיתי שמצריך לפני ההפעלה להעמיד את הסמן בהערות שולים וכן שצריך להקליד את מספר הערות שהמאקרו יעשה להם חלון
3. הגבלת המאקרו שלא יעשה חלון בהערה שיש בה שורה אחת, וכן שיאפשר בחירה האם לעשות חלון בהערה שיש בה שתי שורות.Sub הערות_שולים_חלון_מתחת_להפניה() ' ' הערות_שולים_חלון_מתחת_להפניה Macro ' ' 'שאלת פתיחה Dim interaction As VbMsgBoxResult interaction = MsgBox("האם להפעיל את המאקרו?, לפני ההפעלה יש להעמיד את הסמן בהערת שולים לפני ההפניה להערות שולים", vbQuestion + vbYesNoCancel + vbMsgBoxRight + vbMsgBoxRtlReading, "הערות שולים - חלון מתחת להפניה") Select Case interaction Case vbCancel Exit Sub Case vbNo Exit Sub Case vbYes 'הגדרת ביטול פעולה אחרונה פתיחה Dim my_undo As Object Set my_undo = Application.UndoRecord my_undo.StartCustomRecord ("הערות שולים חלון מתחת ההפניה") On Error GoTo ending 'קביעת מספר הערות שהמאקרו יעצב על ידי שאלה Dim iterations As Integer On Error Resume Next iterations = InputBox("כתבו במספרים כמה הפניות להערת שולים המאקרו יעצב") On Error GoTo 0 For i = 1 To iterations With para 'המאקרו עצמו 'חיפוש סימון הערת שולים Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^f" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute 'מעבר לאחר הסימון והרווח Selection.MoveRight Unit:=wdWord, Count:=1 'מחיקת הרווח Selection.TypeBackspace 'כתיבת הסימן שווה Selection.TypeText Text:="=" 'בחירת תו אחורה Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend 'הסתרת הטקסט - צביעה בצבע לבן With Selection.Font .Color = -603914241 End With 'הרחבת הבחירה מילה אחורה Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend 'העתקה Selection.Copy 'הזזת הסמן לפני ההפניה להערת שולים Selection.MoveLeft Unit:=wdWord, Count:=1 'מעבר לסוף השורה Selection.EndKey Unit:=wdLine 'הזזת החץ תו קדימה לא צריך כיון שהמעבר שורה אוטמטי נוסף בסוף השורה ומזיז את החץ קדימה ' Selection.MoveRight Unit:=wdCharacter, Count:=1 'הוספת מעבר שורה ידני Selection.TypeText Text:=Chr(11) 'הדבקה Selection.PasteAndFormat (wdFormatOriginalFormatting) Selection.MoveLeft Unit:=wdCharacter, Count:=1 Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend 'הסתרת הטקסט - צביעה בצבע לבן With Selection.Font .Color = -603914241 End With 'הזזת הסמן Selection.MoveRight Unit:=wdWord, Count:=1 End With 'חזרה על המאקרו כפי מספר הפעמים שנקבע Next i 'סיום הגדרת ביטול פעולה אחרונה ending: my_undo.EndCustomRecord 'סיום שאלה פתיחה האם להפעיל את המאקרו End Select End Sub
תודה מראש
-
@ASDF1345 כתב בעזרה | עזרה בכתיבת פקודות מאקרו שונות:
א. יש לי בעיה שבכמה מסמכים שלי נכנסו הרבה סגנונות מיותרים ואני רוצה למוחק אותם אבל בחלון ניהול סגונות של וורד שמאפשר מחיקת סגונות יש בעיה שאי אפשר למחוק כמה סגנונות יחד אלא אחד אחד, האם אפשר לעשות מאקרו שמוחק את כל הסגנונות שלא משתמשים בהם כעת במסמך זה.
- החלף את הסיומת של הקובץ לZIP.
- פתח כקובץ מכווץ.
- מחק את הקובץ styles.xml שבתוך תיקיית WORD.
- שנה חזרה את הסיומת לDOCX.
שים לב! כל הסגנונות הקיימים ימחקו, ויופיעו רק סגנונות ברירת מחדל.
אם אתה רוצה כמה סגנונות מסויימים, תוכל להעתיק מקובץ שכבר קיים בו הסגנונות הרצויים, ולהחליף בקבצים שברצונך למחוק / לשנות.
-
@דאנציג
עשיתי כפי ההוראות, והסגנונות של המסמך נמחקו, ומימלא כל העיצוב של המסמך נמחק (כגון כותרות הדגשה וכו'), ולאחר שהעתקתי למסמך זה ממסמך אחר שיש בו את כל העיצובים, חזרו כל הסגנונות למקומם ולא רק הסגנונות שהשתמשתי במסמך זה, וממילא הבעיה לא נפתרה וגם בעתיד אם העתיק למסמך זה ממסמך אחר שיש בו סגנונות נוספים הם יכנסו למסמך זה. -
@ASDF1345
ניסית את הפקודה שכתבתי לך ?
ActiveDocument.FormattingShowFilter = wdShowFilterStylesInUse
וסתם ככה, האם פשוט תעשה העתק הדבק למסמך חדש את הכל התוכן, לכאורה יעבור רק הסגנונות בשימוש, ואם לא עובד, אז אולי תנסה לעשות העתק הדבק אבל לא כל המסמך בבת אחת, אלא פעם 1 כל המסמך מלבד הפסקה אחרונה, ואחרי זה תעתיק רק את הפיסקה אחרונה, אולי באופן כזה יעותקו רק הסגנונת בשימוש [ההגיון בעצה זו הוא כדלהלן: יש מאפניים של טקטס, מאפניים של פסקה, ומאפניים של מסמך עצמו [כפי שאתה יודע בכתיבת מאקרו] כשאתה בוחר טקסט את כל המסמך אז הוא מעתיק גם את המאפניים של המסמך עצמו, וזה אתה לא רוצה, אתה רוצה שיעתיק רק את הסגנונות של הטקסט המסויים] -
@דאנציג @menajemmendel
לאחר מחיקת הסגנונות והעתקת חלק מהמסמך עדיין הועברו כל הסגנונות, וזה מקור הבעיה שגם אם אתקן את הבעיה במסמך אחד לאחר העתקה ממסמך אחר שיש בו את כל הסגנונות יחזרו כל הסגנונות שוב.
פקודת הסתרת הסגנונות לא מועילה כיון שפקודה זו מועילה רק בחלון 'סגנונות' ולא במקומות אחרים (כגון בחלון קיצורי דרך לסגנונות מופיעים כל הסגנונות). -