זיהוי צבע מדוייק במסמך וורד דרך vba או C#
-
האם יש דרך לזהות צבע מדוייק ב-vba או C# של טקסט במסמך וורד.
לבינתיים כל המתודות שבדקתי בסופו של דבר מחזירים ערכים דצימליים של enum מאוד מוגבל.https://learn.microsoft.com/en-us/office/vba/api/word.wdcolor
למשל
Debug.Print Selection.Font.TextColor.RGB
או:
Debug.Print Selection.Font.Color
למרות שאני מצליח לשלוף את הערכים המדוייקים מתוך ה-xml כ-hex אבל אין לי שום דרך להשוות אותם לטקסט מסויים במסמך.
-
לפני שאני ממשיך מסתמא אני צריך להבהיר שהסיבה שאני שואל כאן את השאלה הינו לצורך התוסף שלי חיפוש רגקס בוורד. ולכן התגובה שלי מוטית כלפי נושא זה. ולא בצורה יבישה לנושא הפוסט.
@dovid
למעשה נראה שאתה צודק. ובגין כך הצלחתי לבודד את הבעיה זה קורה דווקא כאשר המתשמש מחיל צבעי ערכת נושא מתוך התפריט שבתמונה והוא בוחר שני צבעים אחד כהה או יותר בהיר מהשני
כלומר שני גוונים של אותו צבע מאותה העמודה (סימנתי בתמונה עמודה אחת בצבע אדום ליתר בהירות) - מקווה שהובנתי.
דא עקא שהיסכויים שהמתמש ישתמש בצבעים אלו ולא כל כך בצבעים מותאמים אישית - ולמעשה ה-xml של המסמך מחזיר צבע hex מדוייק בזמן שה-ערך העשרוני שוורד מחזיר איכשהו נשאר אותו הדבר לכל הגווניםמבט על ה-xml למעשה מניב תשובה כלשהי
<w:color w:val="44546A" w:themeColor="text2"/> <w:color w:val="D5DCE4" w:themeColor="text2" w:themeTint="33"/>
רואים בחוש שוורד מסמן לעצמו שהמשתמש עשה שימוש בגוון של themecolor2
הסיבה לכך אני משער כדי שאם המשתמש ישנה את ה-theme אזי וורד יידע בקלות גם לשנות את הגוונים.השאלה למעשה היא אם כן: האם יש דרך עדיין לקבל דרך קוד את הערך האמיתי של הצבע ולא את האב טיפוס של ה-themecolor.
או שאני צריך להוסיף לוגיקה מויחדת לכל ה-themcolors.
כמו"כ מה אפשר לעשות כדי שהמשתמש יוכל לחפש בתוסף שלי - דווקא גוון מסויים של ה-themecolor מבלי להצטרך לכלול את כל הגוונים בבת אחת בחיפוש. -
@dovid
בדקתי את הדברים שוב ומתברר שהבאג מאוד ספיצפי כלומר:
אם אני סוגר את המסמך ופותח אותו שוב זה לא קורה אבל אם אני רק מחיל את הגוונים הבאג הנ"ל קורה כלומר שני גוונים מחזירים אותו ערך.
מצו"ב הקלטה