בירור | שילוב dicta בוורד
-
@menajemmendel
תיקון- ראיתי שלא שומר לגמרי על כל הפרטים של העיצוב, לא שמר לי על החלונות בשורה שניה, צריך לוודות מה כן שומר ומה לא, אם זה רק חלונות זה לא בעיה@menajemmendel כנראה שומר רק עיצוב טקטס רגיל (כותרות, הדגשות קו תחתון).
-
@menajemmendel כנראה שומר רק עיצוב טקטס רגיל (כותרות, הדגשות קו תחתון).
@צדיק-וטוב-לו-0 הוא שמר לי על כל הסגנונות שכמדומני הוא הדבר הכי חשוב
-
@menajemmendel כנראה שומר רק עיצוב טקטס רגיל (כותרות, הדגשות קו תחתון).
@צדיק-וטוב-לו-0
למה להחליט ככה? חלון זה יוצא מן הכלל כי זה כלל לא מובנה בוורד אז מה ציפיתם? -
@menajemmendel
תיקון- ראיתי שלא שומר לגמרי על כל הפרטים של העיצוב, לא שמר לי על החלונות בשורה שניה, צריך לוודות מה כן שומר ומה לא, אם זה רק חלונות זה לא בעיה@menajemmendel
בכל מקרה חלונות ומרכוז שורה אחרונה כדאי לעשות אחרי ניקוד, מכיון שהניקוד גם לוקח מקום בשורה, כך ששורה מנוקדת לוקחת יותר מקום משורה לא מנוקדת, ואז יהיה ירידת שורה במיקום לא נכון. -
@menajemmendel
בכל מקרה חלונות ומרכוז שורה אחרונה כדאי לעשות אחרי ניקוד, מכיון שהניקוד גם לוקח מקום בשורה, כך ששורה מנוקדת לוקחת יותר מקום משורה לא מנוקדת, ואז יהיה ירידת שורה במיקום לא נכון.@דאנציג כן אני רק התכוונתי לומר שיש כאן קצת ריעותא, אז יש לבדוק מה בדיוק שומר ומה לא
-
@menajemmendel
בכל מקרה חלונות ומרכוז שורה אחרונה כדאי לעשות אחרי ניקוד, מכיון שהניקוד גם לוקח מקום בשורה, כך ששורה מנוקדת לוקחת יותר מקום משורה לא מנוקדת, ואז יהיה ירידת שורה במיקום לא נכון. -
יש כיוון לרעיון איך לעבוד עם דיקטה ולשמור על העיצובים של וורד, והיא לשמור את הוורד במצב HTML יש כמה דרכים לעשות זאת. (כמובן לאחר מכן להחזיר בחזרה למצב וורד, איני יודע אם הוא מאבד חלק מהסגנונות בתהליך).
הבעיה היא רק שאם אתה מגדיר דילוג סוגריים יש בעיה שהרי חלק מהסוגריים גורמות להרגיש חלק מהקטעים להיות כמו בתוך סוגריים מחמת תווי האטמל.
הפתרון לזה (אולי יש עוד פתרונות) לפני העבודה עם דיקטה להמיר את כל הסוגריים תו אחר שלא מופיע במסמך (תו נגדי כנגד כל תו של סוגריים) או לסימונים כאלה @34 @87 כמו בתג, ולאחר מכן להמיר אותם בחזרה לHTML ושוב לוורד,
רק לשים לב שעקב ההגבלה של כמות התווים שיש בדיקטה נכון להיום - עבודה בHTML ייקח יותר נגלות/פעימות, מכיון שהHTML מוסיף הרבה תווים.
מי שיש לו משוב איך לפשט את התהליך הזה אשמח מאוד כי גם אני מחפש פתרון לזה. -
יש כיוון לרעיון איך לעבוד עם דיקטה ולשמור על העיצובים של וורד, והיא לשמור את הוורד במצב HTML יש כמה דרכים לעשות זאת. (כמובן לאחר מכן להחזיר בחזרה למצב וורד, איני יודע אם הוא מאבד חלק מהסגנונות בתהליך).
הבעיה היא רק שאם אתה מגדיר דילוג סוגריים יש בעיה שהרי חלק מהסוגריים גורמות להרגיש חלק מהקטעים להיות כמו בתוך סוגריים מחמת תווי האטמל.
הפתרון לזה (אולי יש עוד פתרונות) לפני העבודה עם דיקטה להמיר את כל הסוגריים תו אחר שלא מופיע במסמך (תו נגדי כנגד כל תו של סוגריים) או לסימונים כאלה @34 @87 כמו בתג, ולאחר מכן להמיר אותם בחזרה לHTML ושוב לוורד,
רק לשים לב שעקב ההגבלה של כמות התווים שיש בדיקטה נכון להיום - עבודה בHTML ייקח יותר נגלות/פעימות, מכיון שהHTML מוסיף הרבה תווים.
מי שיש לו משוב איך לפשט את התהליך הזה אשמח מאוד כי גם אני מחפש פתרון לזה.@נוכחות כתב בבירור | שילוב dicta בוורד:
יש כיוון לרעיון איך לעבוד עם דיקטה ולשמור על העיצובים של וורד, והיא לשמור את הוורד במצב HTML יש כמה דרכים לעשות זאת. (כמובן לאחר מכן להחזיר בחזרה למצב וורד, איני יודע אם הוא מאבד חלק מהסגנונות בתהליך).
הבעיה הגדולה זה הערות שוליים. אבל גם זה פתיר.
@נוכחות כתב בבירור | שילוב dicta בוורד:
ש כמה דרכים לעשות זאת.
מסקרן אני מכיר רק דרך אחת - דרך הלוח.
דרך אחרת לגמרי היא לעבוד עם הטקסט בלי שום עיצוב מכיוון שאובייקט range עובד עם אינדקס דהיינו מיקום בתוך הטקסט אפשר לחשב די בקלות איזה מילה או אפילו איזו אות שייך איפה במסמך.
-
יש קוד שאולי מתחיל את מה שרצית (הוא לא תקין לשימוש אלא רק כיוון):
Sub UltimateHebrewMerge() Dim DocTarget As Document Dim DocSource As Document Dim fd As FileDialog Dim i As Long, j As Long Dim LimitT As Long, LimitS As Long Dim CharT As String, CodeT As Long Dim CharS As String, CodeS As Long Dim Cluster As String Set DocTarget = ActiveDocument ' 1. בחירת הקובץ המנוקד Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .Title = "בחר את קובץ דיקטה (המנוקד)" .AllowMultiSelect = False .Filters.Clear .Filters.Add "Word Documents", "*.docx; *.doc", 1 If .Show = -1 Then Set DocSource = Documents.Open(.SelectedItems(1), ReadOnly:=True, Visible:=False) Else Exit Sub End If End With Application.ScreenUpdating = False Application.StatusBar = "מבצע מיזוג חכם..." LimitT = DocTarget.Characters.Count LimitS = DocSource.Characters.Count j = 1 ' המצביע של המסמך המנוקד ' 2. ריצה על המסמך המעוצב For i = 1 To LimitT ' בדיקת גבולות If j > LimitS Then Exit For CharT = DocTarget.Characters(i).Text CodeT = AscW(Left(CharT, 1)) ' אנחנו מתעניינים רק אם זו אות עברית (א-ת) ' טווח יוניקוד לאותיות עבריות: 1488 עד 1514 If CodeT >= 1488 And CodeT <= 1514 Then ' כעת נחפש את האות התואמת במסמך המקור (תוך דילוג על ניקוד במקור) Dim FoundMatch As Boolean FoundMatch = False Dim TempJ As Long TempJ = j ' לולאה למציאת האות הבאה במקור (מדלגים על ניקוד בודד אם יש בלאגן) Do While TempJ <= LimitS CharS = DocSource.Characters(TempJ).Text CodeS = AscW(Left(CharS, 1)) ' אם מצאנו אות עברית If CodeS >= 1488 And CodeS <= 1514 Then If CodeS = CodeT Then ' בינגו! מצאנו את אותה אות FoundMatch = True j = TempJ ' מעדכנים את המיקום האמיתי Else ' מצאנו אות אחרת? ' זה אומר שאצלך יש "כתיב מלא" (ו/י/א) שלא קיים במנוקד ' או שיש אי התאמה. נניח שזה כתיב מלא ונדלג על האות שלך (i) ' מבלי לקדם את המנוקד (j) FoundMatch = False End If Exit Do ' יציאה מהחיפוש הפנימי Else ' זה ניקוד או סימן אחר - ממשיכים לחפש את האות הבאה TempJ = TempJ + 1 End If Loop If FoundMatch Then ' 3. בניית "אשכול הניקוד" (Cluster) ' לוקחים את האות מהמקור + כל סימני הניקוד שבאים אחריה Cluster = DocSource.Characters(j).Text ' בודקים את התווים הבאים במקור - אם הם ניקוד, מצרפים אותם! Dim NextCharIdx As Long NextCharIdx = j + 1 Do While NextCharIdx <= LimitS Dim NextCode As Long NextCode = AscW(DocSource.Characters(NextCharIdx).Text) ' אם התו הבא הוא ניקוד (בין 1425 ל-1479) או דגש וכו' ' (אנחנו מניחים שכל מה שהוא לא אות עברית חדשה הוא ניקוד ששייך לאות הזו) If NextCode >= 1488 And NextCode <= 1514 Then ' הגענו לאות הבאה - עוצרים! Exit Do Else ' זה ניקוד! מוסיפים לאשכול Cluster = Cluster & DocSource.Characters(NextCharIdx).Text NextCharIdx = NextCharIdx + 1 End If Loop ' 4. ההזרקה ' מחליפים את האות שלך באשכול המנוקד DocTarget.Characters(i).Text = Cluster ' מקדמים את המצביע של המקור לסוף האשכול שמצאנו j = NextCharIdx End If End If ' אם זה רווח או סימן פיסוק אצלך - פשוט ממשיכים הלאה ב-i, לא נוגעים Next i DocSource.Close SaveChanges:=False Application.ScreenUpdating = True Application.StatusBar = "" MsgBox "המיזוג הושלם בהצלחה!", vbInformation End Subאפשר להציע עוד שיטה לייצר קוד שמשתמש בחפש החלף של וורד ששם יש אפשרות להתעלם מניקוד.