שינוי בין הקלטת מאקרו לבין ביצועה
-
-
@pcinfogmach כתב בשינוי בין הקלטת מאקרו לבין ביצועה:
תודה.
אבל לא שווה לי הזמן שאני הולך לבזבז באתר הזה עד שאני יראה התוצאה...
ידנית זה ילך כבר יותר מהר... -
@חוות-דעת כתב בשינוי בין הקלטת מאקרו לבין ביצועה:
הייתי רוצה שהמאקרו 'יכריח' לסגור הקובץ המקורי בלי שמירה.
ActiveDocument.Close SaveChanges:=False
ייתכן שאפשר למקד אותו למסמך מסויים עם משתנים
כלומר בתחילת המאקרו לפני הכל תכניסdim doc as document set doc = activedocument ואז בסוף המאקרו doc.Close SaveChanges:=False
-
@חוות-דעת כתב בשינוי בין הקלטת מאקרו לבין ביצועה:
אני רוצה לשמור את הכל הטקסטים המייוצאים כפורמט RTF ולא קובץ וורד רגיל.
פשוט יש לשנות אתהשורה הזו
ActiveDocument.SaveAs2 FileName:="טקסט ראשי.docx", FileFormat:= _
ל
ActiveDocument.SaveAs2 FileName:="טקסט ראשי.rtf", FileFormat:= _
-
@חוות-דעת כתב בשינוי בין הקלטת מאקרו לבין ביצועה:
הייתי רוצה שהטקסטים המיוצאים יישמרו באופן אוטומטי בשם הערות שוליים\הערות סיום\וטקסט ראשי באותה תיקיה של הקובץ המקורי.
בתחילת המאקרו הכנס
dim docpath as string docpath = ActiveDocument.path
ואז בסוף
לכתובDim newDoc As Document Set newDoc = Documents.Add 'פה יש להכניס את הקוד להדבקת ההערות שוליים newDoc.SaveAs2 docPath & "\" & "הערות שוליים.rtf" newDoc.Close
-
@pcinfogmach כתב בשינוי בין הקלטת מאקרו לבין ביצועה:
@חוות-דעת כתב בשינוי בין הקלטת מאקרו לבין ביצועה:
הייתי רוצה שהמאקרו 'יכריח' לסגור הקובץ המקורי בלי שמירה.
ActiveDocument.Close SaveChanges:=False
ייתכן שאפשר למקד אותו למסמך מסויים עם משתנים
כלומר בתחילת המאקרו לפני הכל תכניסdim doc as document set doc = activedocument ואז בסוף המאקרו doc.Close SaveChanges:=False
לא הבנתי ההבדל שבין שני המהלכים.
וייש"כ על כל הקודים
-
שמחתי לעזור
@חוות-דעת כתב בשינוי בין הקלטת מאקרו לבין ביצועה:
לא הבנתי ההבדל שבין שני המהלכים.
ההבדל בין שני המהלכים הוא שבמהלך הראשון הוא עלול לסגור קבצים אחרים שנפתחים תוך כדי הרצת המאקרו ולא את הקובץ הראשון
-
@pcinfogmach כל המאקרו הסתבך לי... לא רק הקודים שנתת אתה, אלא גם הקוד המקורי שאני הקלטתי.
בקוד שאתה נתת לי עלה לי השגיאה הבאה:
וכשרציתי לחזור לנוסחה הקודמת ג"כ קבלתי שגיאה פתאום, (לא ממש 'קוד המקורי', כי אני כן הוספתי את השורה של סגירת הקובץ בסוף בלי שמירה, וגם שיניתי את הסוג הקובץ ל-rtf, אבל לא נראה לי שזה היתה מקור השגיאה):
-
@pcinfogmach מה שעוד מוזר לי, שכאן נראה שהשגיאה היא באמצע הרצת הפעולות על 'הערות סיום', שזה אומר שעל פי המאקרו כבר היה אמור להיווצר קובץ גיבוי של המסמך, וגם ייצוא הערות שוליים.
אבל למעשה לא נוצר קובץ הערות שוליים, רק קובץ גיבוי.נ.ב. הקוד שנתת לי, שיישמר הנתיב המקורי, עובד!! (כאמור, בקובץ הגיבוי שנוצר).
תודה על העזרה הנפלאה!
-
@pcinfogmach כתב בשינוי בין הקלטת מאקרו לבין ביצועה:
שמחתי לעזור
@חוות-דעת כתב בשינוי בין הקלטת מאקרו לבין ביצועה:
לא הבנתי ההבדל שבין שני המהלכים.
ההבדל בין שני המהלכים הוא שבמהלך הראשון הוא עלול לסגור קבצים אחרים שנפתחים תוך כדי הרצת המאקרו ולא את הקובץ הראשון
לא ממש הבנתי, איזה מסמכים נפתחים באמצע הרצת המאקרו? ולמה שיסגרו אם שמים הקוד במקום הנכון??
-
@pcinfogmach אני חושב שהבנתי הבעיה. כי א"א לשים הקוד של שמירת הנתיב כמה פעמים באותו מאקרו. האם זה נכון? כי הוא מצביע לי תמיד על הפעם השני שזה מופיע. (כזכור, הקוד שלי אמור לייצר 4 מסמכים, במשך ההרצה)
-
@pcinfogmach אני לא יודע מה פי' 'לשנות את המשתנים'.
חוץ מזה, פתאום, שוב, הקוד של @דאנציג הפסיק לעבוד, אני שוב מקבל את אותה שגיאה כמו שכתבתי למעלה.
ייש"כ על הסבלנות והעזרה!
אני מעתיק את הקוד, כמו שהוא עכשיו:
Sub פירוק_טקסטים_עם_סימונים_לעימוד_זמני() ' מייצא כל ההערות שוליים והערות סיום והטקסט הראשי למסמך נפרד 'מכניס קודים במקום הערות שוליים וסיום לצורך עימוד עתידי בתוכנה אחרת ' שומר עותק גיבוי למקרה של טעויות ' Dim docpath As String docpath = ActiveDocument.Path Selection.WholeStory Selection.Copy Documents.Add DocumentType:=wdNewBlankDocument Selection.PasteAndFormat (wdUseDestinationStylesRecovery) ActiveDocument.SaveAs2 FileName:="שמירת עותק גיבוי.docx", FileFormat:= _ wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _ :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _ :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _ SaveAsAOCELetter:=False, CompatibilityMode:=15 ActiveDocument.Save ActiveDocument.Close 'מכניס סימונים במקום הערות שוליים והערות סיום Selection.MoveLeft Unit:=wdCharacter, Count:=1 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^f" .Replacement.Text = "*^&" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^e" .Replacement.Text = "%^&" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute Replace:=wdReplaceAll 'מייצא הערות שוליים ActiveWindow.View.SeekView = wdSeekFootnotes Selection.WholeStory Selection.Copy 'הקוד לא פעיל זמנית כדי לנסות לשמור המסמך בנתיב הקובץ המקורי 'Documents.Add DocumentType:=wdNewBlankDocument Dim newDoc As Document Set newDoc = Documents.Add Selection.PasteAndFormat (wdUseDestinationStylesRecovery) 'מכניס סימונים במקום מספור Selection.Find.ClearFormatting With Selection.Find.Font .Superscript = True .Subscript = False End With Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "" .Replacement.Text = "*" .Forward = True .Wrap = wdFindContinue .Format = True End With Selection.Find.Execute Replace:=wdReplaceAll 'הקוד לא פעיל זמנית כדי לנסות לשמור המסמך בנתיב הקובץ המקורי ' ActiveDocument.Save ' ActiveDocument.SaveAs2 FileName:="הערות שוליים.rtf", FileFormat:= _ ' wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _ ' :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _ ' :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _ ' SaveAsAOCELetter:=False, CompatibilityMode:=15 ' ActiveWindow.Close newDoc.SaveAs2 docpath & "\" & "הערות שוליים.rtf" newDoc.Close 'מייצא הערות סיום ActiveWindow.View.SeekView = wdSeekEndnotes Selection.WholeStory Selection.Copy 'הקוד לא פעיל זמנית כדי לנסות לשמור המסמך בנתיב הקובץ המקורי ' Documents.Add DocumentType:=wdNewBlankDocument Dim newDoc As Document Set newDoc = Documents.Add Selection.PasteAndFormat (wdUseDestinationStylesRecovery) 'מכניס סימונים במקום מספור Selection.Find.ClearFormatting With Selection.Find.Font .Superscript = True .Subscript = False End With Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "" .Replacement.Text = "%" .Forward = True .Wrap = wdFindContinue .Format = True End With Selection.Find.Execute Replace:=wdReplaceAll newDoc.SaveAs2 docpath & "\" & "הערות סיום.rtf" newDoc.Close 'הקוד לא פעיל זמנית כדי לנסות לשמור המסמך בנתיב הקובץ המקורי ' ActiveDocument.Save ' ActiveDocument.SaveAs2 FileName:="הערות סיום.rtf", FileFormat:= _ ' wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _ ' :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _ ' :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _ ' SaveAsAOCELetter:=False, CompatibilityMode:=15 ' ActiveWindow.Close 'מוחק ההפניות של הערות שוליים וסיום שבתוך הטקסט הראשי Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=1, Name:="" Selection.Find.ClearFormatting With Selection.Find .Text = "^?" .Replacement.Text = "" .Forward = True .Wrap = wdFindAsk End With With Selection.Find .Text = "^e" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^f" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute Replace:=wdReplaceAll 'מייצא הטקסט הראשי למסמך נפרד Selection.WholeStory Selection.Copy ' Documents.Add DocumentType:=wdNewBlankDocument Dim newDoc As Document Set newDoc = Documents.Add Selection.PasteAndFormat (wdUseDestinationStylesRecovery) newDoc.SaveAs2 docpath & "\" & "טקסט ראשי.rtf" newDoc.Close ' ActiveDocument.Save ' ActiveDocument.SaveAs2 FileName:="טקסט ראשי.rtf", FileFormat:= _ ' wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _ ' :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _ ' :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _ ' SaveAsAOCELetter:=False, CompatibilityMode:=15 ' ActiveWindow.Close ActiveDocument.Close SaveChanges:=False End Sub
-
הנה גירסה שלי של הקוד למי שמעוניין
Option Explicit Sub פירוק_טקסטים_עם_סימונים_לעימוד_זמני() ' מייצא כל ההערות שוליים והערות סיום והטקסט הראשי למסמך נפרד 'מכניס קודים במקום הערות שוליים וסיום לצורך עימוד עתידי בתוכנה אחרת 'בחר קובץ Dim FileDialog As FileDialog Dim mainDoc As Document Dim docpath As String Set FileDialog = Application.FileDialog(msoFileDialogFilePicker) With FileDialog .Title = "בחר קובץ" .AllowMultiSelect = False .Filters.Clear .Filters.Add "Word Documents", "*.doc*" If .Show = -1 Then Set mainDoc = Documents.Open(.SelectedItems(1)) docpath = mainDoc.Path Else MsgBox "לא בחרתם שום מסמך." Exit Sub End If End With ' שומר עותק גיבוי למקרה של טעויות mainDoc.Content.Copy Dim newDoc As Document Set newDoc = Documents.Add Selection.Paste newDoc.SaveAs2 docpath & "/" & mainDoc.Name & "-" & "עותק גיבוי.docx" newDoc.Close mainDoc.Activate 'בודק אם יש הערות שוליים במסמך If mainDoc.Footnotes.Count = 0 Then GoTo skp 'מכניס סימונים במקום הערות שוליים Selection.find.ClearFormatting Selection.find.Replacement.ClearFormatting With Selection.find .text = "^f" .Replacement.text = "*^&" .Forward = True .Wrap = wdFindContinue .MatchWildcards = False End With Selection.find.Execute Replace:=wdReplaceAll 'מייצא הערות שוליים mainDoc.StoryRanges(wdFootnotesStory).Copy Dim newDoc1 As Document Set newDoc1 = Documents.Add Selection.PasteAndFormat (wdFormatPlainText) 'מכניס סימונים במקום מספור Selection.find.ClearFormatting With Selection.find.font .Superscript = True .Subscript = False End With Selection.find.Replacement.ClearFormatting With Selection.find .text = "" .Replacement.text = "*" .Forward = True .Wrap = wdFindContinue .Format = True End With Selection.find.Execute Replace:=wdReplaceAll newDoc1.SaveAs2 docpath & "\" & mainDoc.Name & "-" & "הערות שוליים.rtf" newDoc1.Close skp: 'בודק אם יש הערות סיום במסמך mainDoc.Activate If mainDoc.endnotes.Count = 0 Then GoTo skp2 ' מכניס סימונים במקום הערות סיום Selection.find.ClearFormatting Selection.find.Replacement.ClearFormatting With Selection.find .text = "^e" .Replacement.text = "%^&" .Forward = True .Wrap = wdFindContinue End With Selection.find.Execute Replace:=wdReplaceAll 'מייצא הערות סיום mainDoc.StoryRanges(wdEndnotesStory).Copy Dim newDoc2 As Document Set newDoc2 = Documents.Add Selection.PasteAndFormat (wdFormatPlainText) 'מכניס סימונים במקום מספור Selection.find.ClearFormatting With Selection.find.font .Superscript = True .Subscript = False End With Selection.find.Replacement.ClearFormatting With Selection.find .text = "" .Replacement.text = "%" .Forward = True .Wrap = wdFindContinue .Format = True End With Selection.find.Execute Replace:=wdReplaceAll newDoc2.SaveAs2 docpath & "\" & mainDoc.Name & "-" & "הערות סיום.rtf" newDoc2.Close skp2: 'מוחק ההפניות של הערות שוליים וסיום שבתוך הטקסט הראשי mainDoc.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=1, Name:="" Selection.find.ClearFormatting With Selection.find .text = "^?" .Replacement.text = "" .Forward = True .Wrap = wdFindAsk End With With Selection.find .text = "^e" .Replacement.text = "" .Forward = True .Wrap = wdFindContinue End With Selection.find.Execute Replace:=wdReplaceAll Selection.find.ClearFormatting Selection.find.Replacement.ClearFormatting With Selection.find .text = "^f" .Replacement.text = "" .Forward = True .Wrap = wdFindContinue End With Selection.find.Execute Replace:=wdReplaceAll 'מייצא הטקסט הראשי למסמך נפרד Selection.WholeStory Selection.Copy Dim newDoc3 As Document Set newDoc3 = Documents.Add newDoc3.Content.Paste newDoc3.SaveAs2 docpath & "\" & mainDoc.Name & "-" & "טקסט ראשי.rtf" newDoc3.Close mainDoc.Close SaveChanges:=False Shell "explorer.exe " & docpath, vbNormalFocus End Sub
-
@pcinfogmach זה מה שקורה כאשר אני מפעיל את המאקרו: (אולי לא שמתי את זה במקום הנכון???)
-
@pcinfogmach כתב בשינוי בין הקלטת מאקרו לבין ביצועה:
@חוות-דעת
יש למחוק את השורה הראשונה הצבועה בצבע אדום היא נכנסה לקוד בטעות איתכם הסליחהמה זה 'בחר קובץ' ששתלת בהתחלה??
איזה קובץ אני אמור לבחור שם, ומה מטרתו?? -
@pcinfogmach כתב בשינוי בין הקלטת מאקרו לבין ביצועה:
@חוות-דעת
בחר קובץ שברצונך לפרק
במקום לפרק את הקובץ הפתוח
בוחרים קובץ והמאקרו מפרק את הקובץ שבחרתם
אם ברצונך לפרק את הקובץ הפתוח פשוט תבחר אותו בתפריט זהאוקיי, אבל עדיין יש מניעות...
זה השגיאה שקבלתי, וכמובן המאקרו לא עשה כלום.