@A0533057932 לפי הידוע לי, אין פעולת מאקרו בטבלה שיכולה לעדכן תיבה משולבת באמצעות האופציה בקישור שהביא @OdedDvir , רק בטופס.
(יש בגירסאות 2010 והלאה מאקרו בטבלה, אבל המאקרו האלה מאוד מוגבלים)
@A0533057932 לפי הידוע לי, אין פעולת מאקרו בטבלה שיכולה לעדכן תיבה משולבת באמצעות האופציה בקישור שהביא @OdedDvir , רק בטופס.
(יש בגירסאות 2010 והלאה מאקרו בטבלה, אבל המאקרו האלה מאוד מוגבלים)
@הפצת-אנקי
הפרסומת כאן משולבת של אנקי במחשב ובטלפון.
יש אפשרות להשיג פרסומת רק לאנקי בטלפון? (מסמך PDF להדפסה)
(מעשי במיוחד במקרה ורוצים להפיץ בבתי כנסת שלא יראו את פרסום תוכנה במחשב בעין יפה)
@yossiz אני מנחש שיש משהו שהפך את האותיות, ויום בחודש 32 לא אפשרי אבל 22 כן.
אבל עדיין לא מובן שאר האותיות למה לא נהפכו
@OdedDvir כתב בVBA. איך לפתוח ולעבוד עם WORD על ידי ACCESS:
אגב, כדי לטפל במאפייני קובץ, כגון להסיר נתיב\סיומת\וכו' מומלץ להשתמש באובייקט FileSystemObject שמיועד לכך.
תודה רבה, ההוספה הזו היתה ממש תועלתית!
לתועלת הכלל אני כעת לומד על זה מ https://trumpexcel.com/vba-filesystemobject/
(מסתבר שיש עוד קישורים לאתרי לימוד מוצלחים, זה מה שראיתי כרגע)
@OdedDvir ו @yossiz תודה רבה.
זה באמת היה הכיוון מחשבה שלי, וקיבלתי את האישור (וא"כ אין הבאג תלוי אלא בי:( - בקוד שניסיתי ליצור מזה, אבל השיטה נכונה.
מה שהסתבכתי זה עם הקישור - אני צריך לפתוח את הקישור המסויים הזה, ולהתייחס לDOCUMENT הנכון.
אני נתקע כאן בנסיונות למיניהם...
Dim wrdDoc As Variant
Set wrdDoc = wrdApp.Documents.Open(strPathFile)
בקוד זה הוא אומר שספריית "C:\USERS\שם המשתמש שלי\DECUMENTS לא נמצאה
Dim wrdDoc As Variant
Set wrdDoc = wrdApp.Documents(Right(strPathFile, Len(strPathFile) - InStrRev(strPathFile, "\"))).Activate
בקוד זה הוא אומר "שם קובץ לא תקין" שגיאה 4160
כמובן בדקתי שהקישור פעיל - נפתח בלחיצה וכו'
אשמח לעזרה שוב!
@chagold תודה רבה,
ניסיתי את זה, אבל אם הוורד פתוח כבר זה לא יעבוד.
אם הוורד פתוח אני צריך לעבור ישירות לקובץ הפתוח כבר. ולא ליצור קובץ חדש.
איך לפתוח WORD ולעבוד עליו על ידי ACCESS?
הצורך הוא -
אם הוא פתוח: להצביע על הגירסה הפתוחה שלו ולהעביר את המיקוד (FOCUS) אליו.
אם הוא סגור: לפתוח אותו ולהצביע ולהתמקד עליו.
אח"כ לערוך אותו וכו' זה כבר פשוט.
(יש לי כמה נסיונות... אבל קודם אני רוצה לשמוע אם יש למישהו פתרון פשוט יותר שיחסוך את חיפוש הבאגים למיניהם).
דבר ראשון, שים לב - הפונקציות שלך לא שלמות, הם לא יכולות לרוץ ככה. (לא סגרת את הסוגריים), כך שזה קצת מערפל את השאלה.
גם לא הבנתי כל כך מה התכוונת, יש לי 3 אפשרויות:
@שמחה-זו-הסיסמא כתב בif בלי "אם לא", מקונן בfilter בגוגל שיטס:
הבעיה שלי היא שאני מעוניין לעשות תנאי בפילטר, דהיינו אם G1 שווה ל X אז אני רוצה לקבל רק טווח שעונה לקריטריון, ואם G1 אינו שווה לX אני רוצה לקבל את כל הטווח.
בשביל זה, צריך לעשות IF חיצונית לפילטר.
=ARRAYFORMULA(IF("x"=G1,FILTER(A:C,HOUR(B:B)<15),A:C))
=ARRAYFORMULA(FILTER(A:C,BITOR(HOUR(B:B)<15,"x"=G1))
גוגל שיטס יחזיר שגיאה *הפונקציה FILTER מכילה גדלים לא תואמים של טווחים. ספירת השורות שהייתה צפויה להתקבל: ****. ספירת העמודות: 1. ספירת השורות שהתקבלה בפועל: 1, ספירת העמודות: 1.
הסיבה לזה היא מכיון שלא נתתי לו בדיקה של כל הטווח שבחרתי אלא רק של "" ריק וזה בעצם ערך יחיד
יש לזה פתרון שאני משתמש איתו, פונקציית MAKEARRAY, תוכל לראות עליה עוד בקישור זה https://www.benlcollins.com/spreadsheets/makearray-function/
ותוכל כמובן לחפש גם בעברית - זה מה שמצאתי מחיפוש מהיר של GOOGLE SHEETS MAKEARRAY.
@האדם-החושב
הנה בקובץ אקסל, אפשר להקיש F-11 להגיע לקוד.
הפונקציות פועלות גם בתוך אקסל.
על הטקסט לחיפוש, אם אני רוצה שלא יהיה לפי תווים מיוחדים, אני עושה לפני כן:
Public Sub Regex_HideSpecialCharacter(ByRef str As String)
Dim specialCharacters As Variant, i As Integer
specialCharacters = Array("[", "\", "$", "&", "+", ",", ":", ";", "=", "?", "@", "#", "|", "'", "<", ">", ".", "^", "*", "(", ")", "%", "!", "-", "]")
For i = 0 To 24 ' == Len("[\$&+,:;=?@#|'<>.^*()%!-]") - 1
str = Replace(str, specialCharacters(i), "\" & specialCharacters(i))
Next i
End Sub
הצלחתי!
ככה:
"([^a-zA-Z0-9_]|^)" & myStr & "([^a-zA-Z0-9_]|$)"
ובהחלפה להתייחס לקבוצה שלפני כ $1 והקבוצה שאחרי כ $2.
זה הקוד לדוגמה:
(סליחה מראש על הערבוב בין העברית לאנגלית בקוד, אבל אני פחות מקפיד כשאני מתאמן עם קוד שלי בלי ליצור משהו...)
Public Sub Regex_החלפה_לפי_מילה_שלימה(ByRef טקסט As String, ByVal מילה_לחיפוש As String, ByVal מילה_מחליפה As String)
Regex_HideSpecialCharacter מילה_לחיפוש
Dim regExp As Object
Set regExp = CreateObject("vbscript.regexp")
With regExp
.Pattern = "([^a-zA-Z0-9_]|^)" & מילה_לחיפוש & "([^a-zA-Z0-9_]|$)"
.Global = True
טקסט = .Replace(טקסט, "$1" & מילה_מחליפה & "$2")
End With
End Sub
אשמח שוב את עזרתכם (בפרט @yossiz )
שאלתי מתכנת שאני מכיר,
הוא הביא לי את הקוד הזה:
"((?<=[^a-zA-Z0-9_])|^)" & MyStr & "((?=[^a-zA-Z0-9_])|$)"
זה מחפש את הטקסט אבל לא בוחר אותו.
לדאבוני זה לא עובד ב VBA...
אז הביא לי את זה:
"(?:[^a-zA-Z0-9_]|^)("& MyStr &")(?:[^a-zA-Z0-9_]|$)"
שזה בוחר את הטקסט בשלוש קטעים שונים, כך שיהיה אפשר אח"כ להתייחס אל כל קטע.
הבעיה שאני לא יודע איך לבחור שוב את הקטע בלי להחליף אותו.
מצאתי מעין זה לגבי חיפוש והחלפה רגילים של וורד, (לא הצלחתי ליישם בפועל כאן):
@yossiz כתב בעזרה בחיפוש והחלפה בוורד:
@אוריי תשתמש בתווים כלליים ככה:
החיפוש:
(^13[א-ת]@)\\].
החלפה:
\1.
הסבר:
חיפוש:
(...)
מכיל קבוצה שניתן לציין אח״כ בהחלפה^13
סימן סוף פיסקה (בחיפוש עם תווים כלליים)[א-ת]
כל תו בטווח א-ת@
1 או יותר מהנ״ל\].
מייצגים את עצמם, צריך מילוט (\
) לפני ה-\]
אחרת יש לתו זה משמעות מיוחדתהחלפה:
\1
התוכן של הקבוצה הראשונה בחיפוש(...)
.
נקודה
תודה רבה!
@האדם-החושב
יש לי קוד VBA ברור שעבדתי איתו הרבה, הבסיס מיובא מפרוג ורק הוספתי עליו קצת, כך שלא אוכל לתת עליו אחריות... אבל תוכל להשוות.
ממיר תאריך לועזי לעברי, ומציג את זה בגימטריה ב STRING. (=> 'י"ב חשוון תשפ"ג').
בהמשך הקוד - להציג במספרים, להמיר בחזרה ללועזי, בודק את השנים אם מעוברות, חישוב המולד, וכו'.
הקובץ להורדה
@chagold ניסיתי, ואולי הצלחתי.
זה אמור להיות טוב? לכאורה זה עובד לי...
((^|[^a-zA-Z0-9_א-ת])אניי($|[^a-zA-Z0-9_א-ת]))
ו מצאתי בעיה אחרת... שההחלפה בקוד VBA שהבאתי מחליפה לי גם את התווים הסובבים, ולא רק את המילה.
כלומר מהטקסט "אניי, רוצה ללמוד באנייה שלי"
יוצא לי "אני רוצה ללמוד באנייה שלי" - בנוסף למילה, הפסיק הסמוך לה נמחק
ומהטקסט "אניי ,רוצה ללמוד באנייה שלי" יוצא לי "אני,רוצה ללמוד באנייה שלי" - בנוסף למילה ששונתה, הרווח הסמוך לאות נמחק.
והבעיה שאני צריך שימצא את המילה על ידי בדיקת התו הקודם לה והמאוחר ממנה ב REGEX, אבל שלא יחליף באמת כי אם את המילה עצמה...
@chagold כן, הבנתי את הרעיון, פשוט - אין כזה דבר - צור אותו.
כמובן הקפת רק את הסוגריים והפסיק ולא את כל האפשרויות, אבל זה הכיוון שאתה מציע:
פשוט לחפש את כל התווים שיכולים להיות סוף והתחלת מילה, ולשים אותם מסביב לטקסט.
טוב, זה יהיה עבודה (ובאגים), ועדיף ממשהו מוכן, אבל לא מצאנו.
תודה לכל העונים,
@chagold אין התייחסות למקרה " אתה ,אניי, והוא, רוצים ללמוד באנייה שלי" - צריך התייחסות גם לנקודה, פסיק, פתח וסגור סוגריים עגולות רבועות ומסולסלות, תחילת וסוף שורה, תחילת וסוף מסמך וכו'.
בקישור שהבאת כתוב מיד אחרי כן -
@dovid כתב בRegex - ביטויים רגולריים:
נ.ב. יש סימן מיוחד שמסמן סוף\תחילת מילה, והוא \b. הוא בעצם קיצור ל: או רווח או קצה הטקסט (התחלה או סיום) או פסיק וכו'. יש לדבר הזה בעיה קטנה, זה לא עובד בשום שפה חוץ מאנגלית...
וזה מה שקראתי ואני מחפש לו תחליף אמיתי.
@yossiz זו אופציה באמת, אבל התווים הכלליים של וורד יגבילו אותי בהמשך, כשארצה לכלול עוד אפשרויות (ואלמד עוד על רג'קס:),
בנוסף, אני פשוט לא מכיר עדיין אפשרות החלפה אחרת בלי להשתמש באופציית החיפוש והחלפה של וורד / אקסל/ אקסס, שלא שייכת כאן כשאני משתמש ב STRING. אני טועה? אשמח לתיקון והדרכה!
@chagold
VBA זה הקוד שלי (מstackoverflow)
Dim regExp As Object
Set regExp = CreateObject("vbscript.regexp")
With regExp
.Pattern = "(אניי)"
.Global = True
Selection.Text = .Replace(Selection.Text, "אני")
End With
איך לחפש מילה שלימה / תחילת מילה / סוף מילה בעברית בREGEX.
לדוגמה:
מהטקסט " אניי רוצה ללמוד דף היומי באנייה"
אני רוצה לחפש את "אניי" ולהחליפו ב"אני", בתנאי שזו מילה שלימה.
תודה רבה!
ברשותך אפרק את התשובה שלך, ומה מצאתי לבינתיים:
@OdedDvir כתב בהאם אפשר למכור פרויקט אקסס?:
@Y-Excel-Access בפרונט אי אפשר להצפין מבלי לספק למשתמש את הסיסמה ואז אין בזה תועלת. אבל אם אתה שומר שאילתות בבקאנד - אז הן מוצפנות כמו הנתונים.
אז אי אפשר באמת להצפין טבלאות...
@OdedDvir כתב בהאם אפשר למכור פרויקט אקסס?:
את הבקאנד אתה כמובן מצפין ודואג לערבל את הסיסמה אליו בפרונט כך שלא יוכלו למצוא אותה בקלות על ידי עורך משאבים או עורך hex.
גילוי נאות - אני לא יודע מה זה עורך משאבים ו עורך hex. אבל לכאורה ברגע שהקוד מקומפל מה צריך עוד להצפין יותר? ינסו לחלץ משהו מהקוד של 0 1 שנוצר?
@OdedDvir כתב בהאם אפשר למכור פרויקט אקסס?:
אתה צריך גם לנעול את סרגל הניווט ואת אפשרויות המקשים המיוחדים על ידי קוד, כדי שלא יוכלו לפתוח בחזרה
לכאורה לא צריך לנעול את כל המקשים המיוחדים, רק את SHIFT ו F11, המשמשים להשבתת המאקרו -בשעת הפתיחה ולפתיחת חלונית הניווט.
מה שמצאתי לבינתיים - ממייקורסופט איך להסתיר SHIFT, ומstackoverflow
יש לי עוד רעיון אחר / בנוסף - ליצור טופס מוסתר שהוא יפתח את טופס הפתיחה, כך שאם לוחצים SHIFT שום דבר לא יעבוד...
ולהפוך את כל הטפסים למודולריים (את טפסי גליון נתונים להמיר לטופס מפוצל כשפס ההפרדה הוא מוסתר וממוקם הכי למעלה).
וגם להסתיר את כל מה שלא מודולרי מיד בפתיחה (יש לי קוד לזה, פורסם ב'כובע על ענן').
@OdedDvir כתב בהאם אפשר למכור פרויקט אקסס?:
אתה צריך משהו יותר מה-ID של המחשב, כי את זה אפשר לשנות במערכת ההפעלה. אפשר לבדוק את ה-ID של המעבד או הזיכרון. אבל אם הלקוח יבצע שדרוג זיכרון או מעבד - התוכנה תינעל.
למצוא מזהה מעבד היה ממש פשוט - חיפוש פשוט בגוגל
תודה רבה!