@פשוט-אבל-תותח הסתקרנתי. בדקתי את הקוד בעצמי, וגיליתי שהיתה לי שגיאה בשורה 2, כי לא ציינתי את האובייקט SpreadsheetApp. תיקנתי את הקודים למעלה וכעת זה שולח כראוי.

OdedDvir
-
שליחת בקשת POST UploadTextFile ל-API של ימות המשיח -
הפיכת אותיות למספרים באקסל@NETZ יש דרך פשוטה בלי קוד,על ידי Word:
- צור טבלה עם עמודה אחת ומספר שורות כרצונך, נגיד 500.
- סמן את כל העמודה הראשונה, ומהתפריט למעלה, הגדר תבנית מספר חדשה:
- תסיר את הנקודה אחרי האות:
ותלחץ אישור. - הרשימה מוכנה, העתק והדבק לאקסל:
-
VLOOKUP עם ערך לחיפוש משתנה, אפשרי בלי IF?@dovid אמר בVLOOKUP עם ערך לחיפוש משתנה, אפשרי בלי IF?:
מה זה התחביר הזה:
(B2=J:J)?זו נוסחת מערך, פיצ'ר מאוד שימושי שנכנס בשנת 2018.
הרעיון הוא שנוסחא יכולה מעתה להחזיר מערך של תוצאות, ולא רק ערך יחיד.
הנוסחה המסויימת הזו היא להשוואה שלB2
מול כל העמודהJ
. הערך שיוחזר הוא מערך בוליאני של השוואתB2
מול כל ערך בעמודהJ
.
במקרה הזה הנוסחא לא כ"כ יעילה, כי לא צריך להשוות ממש את כל העמודה, אלא רק את 5 התאים בעלי הערך. אבל קיצרתי כדי שיהיה מובן. יותר טוב לכתוב כך:B2=J2:J6
וכן הלאה.
בגרסאות הראשונות של נוסחאות המערך, היה צורך להקליד אותן בצורה מתוסבכת עם
Shift+Enter
כמו שציין @Y-Excel-Access, והן הופיעו בשורת הנוסחא עם סוגריים מסולסלות. כיום אקסל חוסך מאיתנו את כאב הראש הזה ואפשר להקליד כמו נוסחא רגילה.תוכל לנסות על ידי הקלדה של הנוסחא
B2=J2:J6
בתוך תא כלשהו (מחוץ לטבלה) ולראות שמתקבל מערך בוליאני. -
VLOOKUP עם ערך לחיפוש משתנה, אפשרי בלי IF?@Sfsf3925 אפשר לחפש על ידי
MATCH
בכל עמודה, ולצרף את מערכי התוצאות. לדוגמא:
הנוסחא בתא
G2
היא:=IFERROR(INDEX(K:K,MATCH(1,(B2=J:J)+(C2=J:J)+(D2=J:J)+(E2=J:J),0)),"אין תוצאה")
הסבר:
INDEX
מאחזר ערך מתוך עמודה לפי אינדקס.MATCH
מחזיר את אינדקס הערך המבוקש בטווח.
הערך המבוקש כאן הוא1
(כפי שיוסבר מיד). הטווח כאן הוא חיבור של טווחים (מערכים בוליאנים), שמתקבלים על ידי השוואת העמודה של הטלפוניםJ:J
עם מספר מסויים, כאשרB2
הוא המספר הראשון,C2
הוא המספר השני וכו'.
החיבור הזה יצור מערך יחיד המכיל אפסים (כי חיבור של בוליאני נותן 0 או 1) מלבד האינדקס שבו נמצאה ההתאמה ובו יופיע הערך1
.
למשל עבור השורה של אברהם (הראשונה עם הנתונים), המערך שיתקבל בסוף הוא:
{0,0,1,0,0,0}
(יש 6 איברים כי לא התעלמתי משורת הכותרת)
ולכן הנוסחאMATCH(1,{0,0,1,0,0,0},0)
תחזיר את הערך 3 לפונקציהINDEX
, מה שיגרום לה לרוץ כך:INDEX(K:K,3)
ולהחזיר את הערך:
1000
. -
אקסס למתחילים: יצירת מערכת לניהול תורמיםפרק כא: הפקת קבלות: חלק ב: עיקרון ה-DRY, מחולל הדוחות
כדי שנוכל להדפיס את הקבלות שיצרנו, אנו צריכים ליצור דוח.
באופן עקרוני, דוח באקסס מאוד דומה לטופס:- הוא יכול להיות מאוגד לטבלה, או לא מאוגד
- הוא יכול להכיל את רוב הפקדים שיכולים להימצא בטופס
- יש לו מגוון של ארועים שניתן להצמיד אליהם קוד VBA
- הוא יכול להכיל דוחות משנה
היתרון הגדול ביצירת דוח הוא היכולת להציג נתונים בצורה נוחה להדפסה.
אז בואו וניצור את הדוח הראשון שלנו: דוח עבור קבלות לתורמים.
נחשוב:
אילו נתונים צריכים להופיע על הקבלה?
מסתמא נרצה את כל הנתונים שבטבלת הקבלות, אך חסרים שם הרבה פרטים, כמו סכום ותאריך התרומה, ושם התורם והכתובת שלו.למעשה, אין לנו שדה כתובת בטבלת התורמים עדיין, אז בואו ניצור אחד כזה:
כדי להציג את כל פרטי הקבלה, ניצור שאילתת צירוף.שלב א: יצירת שאילתת צירוף להצגת פרטי הקבלה
ניצור שאילתה חדשה, ונוסיף את שלושת הטבלאות: קבלות, תרומות, ותורמים, למשטח העבודה, אקסס תזהה את הצירוף בין הטבלאות לפי מה שהגדרנו ביחסי הגומלין:
נבחר להציג את השדות הבאים:
הממ... עדיין חסר לי את שדה שם התורם.
אני יכול להציג את שם המשפחה ואת השם הפרטי בנפרד, אבל אני רוצה כמובן להציג את שם התורם המלא.
לא בעיה!
אני יכול ליצור שדה מחושב FullName שמחבר את השם הפרטי ושם המשפחה של התורם.אבל רגע, זה נשמע לי מוכר...
יש לי כבר שאילתה שעושה זאת: qryDonor_FullName.במקום ליצור שוב שדה מחושב, בואו ונשתמש בה.
למה?עיקרון ה-DRY
לפני כעשרים שנה, פירסמו שני מתכנתים אמריקאים את העיקרון הבא בתכנון מערכות:
Don't Repeat Yourself (אל תחזור על עצמך) או בקיצור DRY. הנוסח הרשמי לעיקרון זה הוא:
לכל פיסת ידע צריך להיות ייצוג יחיד, חד משמעי וסמכותי במערכת.
במילים פשוטות, זה אומר שלא נשכפל שום חלק במערכת אלא אם כן הדבר הכרחי.עקרון זה נועד כדי להפחית כפילויות מיוצרות במערכת, ועל ידי כך ליצור מערכת קלה לתחזוקה, כי שינוי של גורם יחיד במערכת לא יאלץ שינויים נוספים בגורמים אחרים שאינם קשורים אליו לוגית.
ניקח לדוגמא את המקרה שלנו:
כרגע, שם התורם המלא מוצג לפי הסדר הבא: שם משפחה + רווח + שם התורם. נניח שבעוד שנה ירצה בעל הבית להציג את שמות התורמים המלאים בסדר הפוך, דהיינו במקום כהן אברהם – אברהם כהן וכו'.
אם הרכבת השם המלא של התורם מבוצעת רק במקום יחיד במערכת, דהיינו בשאילתה הנ"ל, כל שעלינו לעשות הוא לשנות את הגדרת השדה המחושב שם – והשינוי ישתקף בכל מקום במערכת.
אבל, אם בכל פעם יצרנו שוב את השדה המחושב מחדש – זה הופך לעבודת נמלים מייגעת...אז יופי, בואו ונוסיף גם את השאילתה למשטח העבודה, והופ – נראה שהפעם אקסס לא הייתה כל כך מבריקה, והחליטה לצרף את השדה ID מטבלת התרומות לשדה ID בשאילתה, כפי שמוצג בדרמטיות בתמונה הבאה:
מדוע זה קרה?
אקסס זיהתה את שם השדה ID הזהה בשתי מקורות הנתונים, והחליטה "לעזור לנו" על ידי יצירת הצירוף עבורנו. אבל זה כמובן לא נכון!אם היינו קוראים לשדה המפתח בכל טבלה בשם מלא, כפי שנהגנו במפתח הזר, למשל DonationID במקום ID בטבלת התרומות, או DonorID במקום ID בטבלת התורמים וכו', המנגנון של אקסס אכן היה עוזר לנו.
זו אכן סכמה נפוצה, ובאמת בתחילת דרכי כך נהגתי, אבל היא פחות מקובלת, ובקוד היא נעשית מסורבלת עוד יותר, כי ניגשים לשדה המזהה כך: Donor.DonorID במקום כך: Donor.ID.
לכן אני מעדיף לוותר על העזרה של אקסס כאן, וליצור ידנית את הצירוף, תמורת הרווח של קוד ושאילתות יותר קריאים.בואו נתקן את הצירוף:
נבחר את החץ ונמחק אותו על ידי הקשה על מקש Delete, ובמקום, נגרור את שדה ID מטבלת התורמים לשדה ID בשאילתת השם המלא, כך:
כעת נוסיף גם את השדה FullName לחגיגה:
נעבור לתצוגת גליון נתונים כדי לראות שהכל תקין. על הדרך, בואו נוסיף עוד הודעות אישיות לתרומות של כהן אברהם:
נשמור את השאילתה בשם: qryReceipt_Details (=פרטי קבלה)
כעת ניתן סוף סוף לעבור לשלב יצירת הדוח.שלב ב: יצירת דוח עבור הקבלה
בחרו מתפריט היצירה > עיצוב דוח:
אקסס תייצר עבורנו דוח ריק. שימו לב שהדוח מחולק לשלושה אזורים:
- כותרת עליונה בעמוד: חלק זה יודפס בראש כל עמוד חדש.
- פירוט: החלק העיקרי של הדוח.
- כותרת תחתונה בעמוד: חלק זה יודפס כמובן בתחתית כל עמוד.
ישנם עוד חלקים נוספים שאפשר לערוך בדוח, כפי שנראה אי"ה בהמשך.
כדי שהטופס יציג לנו את נתוני הקבלות, צריך לאגד אותו לשאילתה שיצרנו. לשם כך נבחר בפקד הדוח, על ידי לחיצה על הפינה השמאלית העליונה (בדומה לפקד טופס, זהו הפקד שנבחר אוטומטית בתצוגת עיצוב):
כעת נלחץ על מקש F4 כדי להציג את חלונית המאפיינים, ניגש לכרטיסית הנתונים, ובמאפיין מקור רשומה נבחר את שאילתת פרטי הקבלות qryReceipt_Details:
נבחר מהתפריט למעלה את האפשרות: הוסף שדות קיימים כדי להציג את השדות שנמצאים בטבלה:
נבחר את כל השדות ונגרור אותם לתוך חלק הפירוט של הטופס:
נעצב את הדוח כיד הדמיון הטובה עלינו:
כשסיימנו, נבחר מתפריט העיצוב את התצוגה: הצג לפני הדפסה:
כדי לראות את התוצאה:
שימו לב כי בתצוגה זו מוצגת בכל עמוד קבלה אחת בלבד. כדי לעבור לעמוד הבא, נשתמש בסרגל הניווט למטה:
נשמור את הדוח בשם: rptReciept_Details.
זהו לבינתיים, מקווה שנהנתם!
בפרק הבא אי"ה נלמד על טפסים רציפים.
אני משאיר כמה שיעורי בית, בעיקר בעיצוב (מהקל למאתגר):
- הסירו את המסגרות מסביב לתיבות הטקסט בדוח.
- הוסיפו בכותרת התחתונה של העמוד את הכיתוב: "הודפס על ידי מערכת לניהול תורמים גירסא 0.01"
- הוסיפו את שעת ההדפסה המדוייקת בכותרת העליונה.
- הצמידו את ראשי התיבות נ"י לשם התורם כך שיופיעו מיד לאחריו בצורה יפה בלי רווח גדול.
- הסירו את השעה מתאריך החשבונית ומתאריך התרומה.
בהצלחה!
-
אקסס למתחילים: תגובות@בערל אמר באקסס למתחילים: תגובות:
למדת הוראה?
עלית עלי... אני עוסק בהוראה כבר הרבה שנים.
אני קורא כל מילה - ומבצע
זה מאד חשוב לבצע בשטח, רק ככה לומדים באמת!
-
לימוד טכנאות מחשבים@Sofer מצטרף לכל האמור לעיל, ומוסיף שלענ"ד הדרישה שלך: "עדיף בבית או באופן עצמאי", מגבילה אותך מאוד. למרות שלמידה עצמית מאוד נפוצה ומקובלת בתחום התכנות, אבל בגלל שבטכנאות יש צד טכני של עבודה בידיים ממש, אין לזה תחליף וירטואלי.
גם אני התחלתי ללמוד טכנאות לבד מפה ומשם, וכמובן שהמחשב האישי שלי שימש בעל כרחו בתור שפן ניסיונות, אבל הלמידה העיקרית שלי באופן אישי היתה ע"י שעבדתי כמה חודשים במעבדת מחשבים, בתור שוליית הטכנאי. אמנם לא היה בזה שכר גבוה, אבל היה לזה ערך משמעותי מבחינת ניסיון.
אגב, לא חושב שזה אמור להרתיע את המעסיק שמא יקום להם מתחרה, אם תתנהג בהגינות ובהכרת הטוב. ידי הטכנאים די עמוסות בלאו הכי. היום אני שולח חלק מהעבודות שבאות אלי אל טכנאי אחר באיזור כשאני עמוס, ושנינו מרוצים. -
שדרוג מראה עורך ה-VBA לערכת נושא VS2019 Darkשלום לכולם,
כידוע, מיקרוסופט מזניחה כבר שנים את עורך ה-VBA ולא הכניסה בממשק שלו שום שדרוגים (אולי היא מצפה מאיתנו להזניח אותו גם?)
למרות העובדה שגם היום ישנם הרבה שמשתמשים בו כדי להוסיף פונקציונאליות קוד ליישומי אופיס - העורך עדיין תקוע בעיצוב מלפני 10 שנים+! באפשרויות של הגדרות הצבעים ישנם רק 16 צבעים לבחירה, ואין אפשרות להוסיף צבעים אחרים (אוף!)ובתור אחד שעובד מאסיבית באקסס (רח"ל
) הדבר מפריע לי מאד...
מצאתי פרוייקט בגיטהב שמאפשר להפוך את המראה המזעזע של עורך ה-VBA באופיס למראה יותר מודרני, בדומה לערכת הנושא הכהה של VS, על ידי עריכת פלטת הצבעים המקורית שנמצאת בקובץ VBA7.1.DLL. אחרי ששיחקתי עם התוכנה קצת, יצרתי ערכת נושא שמתאימה ל-VS2019 פחות או יותר, להלן דוגמא:
וזה אכן שיפור גדול, אבל הלכתי עוד צעד קדימה והחלפתי את הפונט לפונט Consolas גודל 13 כמו ב-VS, אבל אז כל העברית הפכה לג'יבריש:
לאחר התקנת הפונט הערוך ConsolasH.ttf שמכיר בעברית כשפה מקובלת - הגעתי אל המנוחה והנחלה:
למי שרוצה לנסות, מצ"ב קובץ ערכת נושא שיצרתי: VS2019 Dark.xml
שימו לב שצריך גם לשנות קצת את הבחירות בעורך ה-VBE, מי שרוצה פתרון קל, מצ"ב קובץ Reg (על אחריותכם) שמעדכן את הבחירה של הצבעים וגם את הפונט: VBE 7.0 Color Settings.regהייתי רוצה לסיים בסוף טוב, אבל...
מסתבר שמדי פעם מיקרוסופט חושבים עלינו ושולחים עדכונים לאופיס, ועורך ה-VBE חוזר לסורו (בערך...) ונהיה אפילו יותר גרוע (אזהרה: לא מומלץ לחולי אפילפסיה)
כמו שרואים, הפונט נשאר וגם הגדרות הצבעים, אבל פלטת הצבעים (שנמצאת ב-DLL כאמור לעיל) התאפסה ואני צריך לחזור על הגדרות הצבעים מחדש...
עשיתי זאת כמה פעמים עד שנמאס לי, ומצאתי פתרון אחר: יש לי עותק של קובץ ה-DLL הערוך, וכשזה קורה אני פשוט משכתב את הקובץ הקיים עם הקובץ השמור, והעורך חוזר למצב הראוי. אבל זה גם לא מושלם, אולי מיקרוסופט יחליטו לעדכן את ה-DLL באופן משמעותי, ושכתוב שלו עם הקובץ הקודם יצור בעיות חדשות.... -
מעונין בקוד לאקסס שירענן נתונים כאילו סגר את האקסס ופתח **נפתר**@אליהו-בן השאלה שלך סיקרנה אותי לחפור קצת בנידון.
כנראה שהאובייקט שלMSXML2.XMLHTTP
מפעיל מנגנון מטמון של הבקשות והתגובות, מה שמסביר את התופעה לעיל בדיוק, כי כל מופע של אקסס משוייך לאותו סשן על ידי המערכת.יש כמה הצעות לפיתרון, מהקל לכבד:
- להוסיף את הכותרות הבאות לאובייקט כשאתה יוצר אותו, בתקווה שהשרת יכבד אותן:
Set xhrRequest = CreateObject("MSXML2.XMLHTTP.6.0") xhrRequest.setRequestHeader "pragma", "no-cache" xhrRequest.setRequestHeader "Cache-Control", "no-cache, no-store" Do Until order.EOF ...
- להשתמש באובייקט החלופי
WinHttp.WinHttpRequest.5.1
, שלא משתמש במטמון. שמות המתודות הנדרשות בו זהים לשמות שבאובייקטMSXML2.XMLHTTP.6.0
, דהיינו:
Set httpRequest = CreateObject("WinHttp.WinHttpRequest.5.1") Do Until order.EOF 'Url = "XXXXXXXXX? httpRequest.Open "GET", url, False httpRequest.Send res = httpRequest.responseText
- "לעבוד" על המנגנון של המטמון, ולגרום לו לחשוב שבכל פעם מדובר בבקשה שונה לחלוטין, על ידי הוספה של פרמטר "בובה" (dummy) המכיל מספר אקראי, כך:
' תריץ את הפקודה הזו פעם אחת בתחילת ההפעלה של התוכנה שלך Randomize ... ' ואז בקוד של השליחה ' יצירת מספר מ-1 עד 100000 Dim dummyNumber As Long dummyNumber = Int((99999) * Rnd) + 1 ' הוספת הפרמטר לבקשה xhrRequest.Open "GET", url, False & "&dummy=" & dummyNumber
- אם כלו כל הקיצין: תוכל לנקות את המטמון לפני כל הפעלה (על ידי קריאה ל-API של Windows) וכך לכפות יצירת סשן חדש בכל פעם.
תדביק את הקוד הבא במודול חדש:
Public Declare PtrSafe Function InternetSetOptionStr Lib "wininet.dll" Alias "InternetSetOptionA" (ByVal hInternet As Long, ByVal lOption As Long, ByVal sBuffer As String, ByVal lBufferLength As Long) As Integer Public Sub ClearInternetCache() InternetSetOptionStr 0, 42, 0, 0 End Sub
ובקוד של השליחה תקרא למתודה שיצרת לעיל, לפני השליחה:
ClearInternetCache Set xhrRequest = CreateObject("MSXML2.XMLHTTP.6.0") ...
אני מציע שתנסה את הדרכים לעיל לפי הסדר, כי הראשונות עדיפות על האחרונות, ותעדכן אם הבעיה נפתרה ובאיזו דרך. בהצלחה!
-
Vue Mastery פתח את כל הקורסים לצפיה בחינם עד מוצאי יום ראשוןליתר דיוק עד 24 ביולי 11:59PM EST
35 קורסים
לכניסה: https://www.vuemastery.com/free-weekend -
מחפש מידע על המבנה של קבצי mp3@dovid אמר במחפש מידע על המבנה של קבצי mp3:
אז בנוסף לכל אתה גם משופשף פוליטית...
חס וחלילה, אני פשוט לא יודע איך להגיב בלי שזה ישמע משופשף פוליטית..
-
חברותא ללמוד תכנות@אביחיל כאחד שעובר ומתמודד עם התהליך של הלמידה באופן מתמיד, כבר כמה שנים טובות, (וכנראה עוד הרבה בעתיד...) תרשה לי להוסיף את התובנות שלי:
אני לא הבנתי בדיוק את כוונתך בחברותא.
אם כוונתך לחברותא שתלמד ביחד איתך, זה נהדר לחלק של התירגול, זה מדרבן ומעודד, ומקל מאוד. אבל -
אני לא הייתי מוותר על מדריך טוב, גם בתשלום.הערך של מדריך \ מורה טוב - הוא עצום, כי יש בו את הדבר הכי חשוב: ניסיון.
הוא יוכל לתת לך את הידע המקצועי ביותר,
וידע לעשות סדר בעניינים,
לקצר את תהליך הלימוד,
לכוון ולהדגיש את העיקר, ולציין מה הטפל,
לתמצת את הענינים בלשון ברורה ומובנת,
להראות היכן המקומות שבהם אתה עלול ליפול,
בקיצור, להוביל אותך בדרך המלך.יש מדריכים באינטרנט ברמה מצויינת, ובמחיר שווה לכל נפש (אני למדתי JS+Node.js + כל מיני middlewares בקורס שעלה בסה"כ 70 שקל)
ושלא נדבר על החומר שהוא חינמי לגמרי.אוטודידקטיה זה דבר נפלא, ויש בו סיפוק גדול, אבל ממה נפשך - התבלין הזה נצרך בתחום התכנות בכל מקרה, גם עם מורה טוב.
-
חידה חביבה: להיכן נעלם הכסף?בהמשך לפוסטים האלו: חידה מתמטית לשמחת החג ולחדד את מוחות הילדים (והמבוגרים) , ו-"חידה מתמטית פשוטה" או "למה אין לי אינטואיציה מתמטית בריאה?", ועקב הדיון המעניין שהתעורר בעקבותיהם לגבי אינטואיציה ושימת לב לפרטים, אני רוצה לשתף כאן עוד חידה ותיקה:
שלושה חברים ישבו במסעדה. בסיום הסעודה הגיש להם המלצר חשבון על סך 300 שקלים.
כל אחד מהחברים הוציא שטר של 100 שקלים ושילם למלצר.
לאחר שתי דקות חזר המלצר והתנצל:
"אבקש את סליחתכם, נפלה טעות בחשבון, ובאמת הסכום לתשלום הוא רק 250 שקלים", והגיש להם את העודף: 50 שקלים.
כל אחד מהחברים לקח מטבע של 10 שקלים, ואת העשרים הנותרים מסרו למלצר בתור טיפ.כמה דקות לאחר שיצאו החברים מהמסעדה, פתח אחד מהם ואמר:
"אני לא מבין, לכולנו יחד היה סכום של 300 ש"ח. כל אחד מאיתנו שילם 100 שקלים וקיבל בחזרה 10 שקלים, כלומר כל אחד שילם 90 שקלים. עוד 20 ש"ח שילמנו טיפ למלצר. סה"כ שילמנו כולנו 90X3+20=290 ש"ח. אם כן, להיכן נעלמו עוד 10 שקלים ???".היכן הטעות בחישוב ולאן נעלם הכסף?
-
"חידה מתמטית פשוטה" או "למה אין לי אינטואיציה מתמטית בריאה?"@yossiz אמר:
האם זה התאים לאינטואיציה שלך?
לא.
אם לא, האם תוכל להסביר למה לא?
בדבר המורכב משני חומרים בלבד, כשמשתנה התמהיל ואחוז החומר הראשון (המים) קטן, ברור כי אחוז החומר השני גדל כדי משלים את האחוז ל-100. לכן אם אחוז המים השתנה ב-1 ל-98%, וכן גם אחוז התפו"א גדל ב-1 ל-2%.
עד כאן הכל טוב ויפה. אבל כמו שכתבת בדיוק: האינטואיציה אומרת ששינוי מספרי קטן גורר שינוי קטן בעקבותיו בלי לקחת בחשבון שכמות החומר הכוללת - דהיינו ה-100% - השתנתה דרמטית.האם תדע לטפל באינטואיציה שלך כך שבפעם הבא יהיה לך אינטואיציה נכונה?
זה עניין של אימון.
אני חושב שאם אדם מתרגל לחשוב שיש דברים מטעים, הוא יהיה יותר זהיר.
אנשים העוסקים בפרסום יודעים בדיוק שכך המוח שלנו עובד, ומוליכים שולל את ההמונים במשך דורות, בדרגה של אומנות...
מסתמא אני לא תמיד אדע להזהר. אבל אני מעדיף לחיות כך ולא לפחד כל הזמן אולי אני טועה. -
שליחת בקשת POST UploadTextFile ל-API של ימות המשיח@פשוט-אבל-תותח אתה צריך לבנות את הבקשה קצת אחרת, ולהפריד את העניינים.
אני לא מנוסה בתחום, אבל הקוד הבא עשוי לעבוד:function uploadTextFileToYemot(){ var data = { 'token': '0733000000:1234', 'what': 'ivr2:/1/IdListMessage.ini', 'contents': SpreadsheetApp.getActiveSheet().getRange('L1').getValue() }; var options = { 'method' : 'post', 'payload' : data }; var response = UrlFetchApp.fetch('https://private.call2all.co.il/ym/api/UploadTextFile', options); //תוכל גם להציג את התגובה אם תרצה, על ידי השורה הבאה, או לנתח אותה כרצונך Logger.log(response.getContentText()); }
הערות:
- שים לב ששלפתי את הנתונים ב-content ישירות מהתא L1.
- התא K4 מיותר כעת.
- אולי בהמשך הייתי מציע לאסוף את כל הנתונים מן הגיליון ישירות בקוד ולא על ידי נוסחאות מסובכות בגיליון.
-
התקנת תאורה בתקרת גבסכל התשובות נכונות
- יש גופי תאורה ששקועים בגבס - אלו דורשים חיתוך של הגבס בצורה שתתאים לגוף התאורה, לדוגמא, ספוטים דורשים חיתוך בצורת עיגול. בדר"כ ההצמדה היא על ידי קפיצים בצדדים, מכווצים אותם ומכניסים לחור, והם משתחררים בתוך החלל של הגבס, ונצמדים ללוח הגבס מצידו השני.
- יש גוף תאורה חיצוני - אותו תולים על הגבס מבחוץ, בדומה לקיר רגיל, בתנאי שהוא לא כבד במיוחד. בסוג הזה יש אפשרות תיאורטית לכוון מראש את מיקום הניצב במקום שבו רוצים להתקין את הגוף, ולהשתמש בברגים רגילים, אבל זה לא נוח ולא קל לכוון את הניצבים כך שיעמדו במקום המתאים. השיטה הרווחת היא להשתמש בבורג גבס מיוחד. יש הרבה סוגים, אבל הרעיון של כולם דומה, שבמהלך ההברגה החלק הפנימי של הבורג מתרחב ו\או נצמד ללוח הגבס מצידו השני.
- פס לד - עקרונית לא מצריך שום הכנה, הדבק שבצידו השני מספיק ברוב המקרים. גם פה יש הרבה אפשרויות, כי לרוב לא רוצים שהפס יהיה גלוי, אז או שמסתירים אותו על ידי זוית, או שמשתמשים במסילת אלומיניום \ פלסטיק לתאורה, כעין מסילות הפלסטיק שמשמשות להעברת כבלים על הקיר, אלא שלאלו יש מכסה חצי שקוף שמאפשר לאור לעבור, ומשקעים אותם בקיר.
-
גלגל נדיר לדלת הזזה@one1010 הבעיה במוצר הסיני היא שהאיכות שלהם גרועה והם נשחקים מהר.
היה לי ארון הזזה עם גלגלים כאלו. כדי לחסוך בעלות, היצרן הרכיב גלגלים סיניים שנשחקו די מהר תוך שנה\שנתיים, והדלת התחילה להחליק מהמסילה.
@חשמל אם אתה לא רוצה לקנות סיני זול ולהחליף אותו כל שנתיים, כנראה תצטרך לקנות את הסוג היקר תוצרת איטליה. בזמנו ביררתי וזוג עלה 180 ש"ח. כעת מצאתי ב-140 ש"ח לזוג כאן.
-
חיפוש תוכנה: המרת קובץ אקסל (xlsx) לcsv@shraga כתב בחיפוש תוכנה: המרת קובץ אקסל (xlsx) לcsv:
אולי מישהו יתנדב לסדר לך משהו מושלם.
@dovid כתב בחיפוש תוכנה: המרת קובץ אקסל (xlsx) לcsv:
את החלק האחרון אני לא יודע בדיוק איך מבצעים.
@Whenever כתב בחיפוש תוכנה: המרת קובץ אקסל (xlsx) לcsv:
אני חושב להפוך את סקריפט שימיר CSV לאקסל. זה יהיה לי שימושי.
אחרי ש @mekev עשה עבודה יפה, אני מתנדב בשמחה להוסיף את השיפורים שלי:
סקריפט batch משופר להמרה דו כיוונית (Excel<->Csv):
@echo off if /i [%2]==[csv] goto TryConvert if /i [%2]==[xlsx] goto TryConvert echo Unsupported output format specified: %2 exit /b :TryConvert echo Converting file %1 to %2 format, please wait... cscript /nologo "%~dp0ExcelCsvConvertorScript.vbs" "%~dpnx1" "%~dpn1.%2" %2 echo Done!
סקריפט VB משופר להמרה דו כיוונית:
if WScript.Arguments.Count <> 3 Then Wscript.Echo "Error: invalid number of arguments specified." & vbNewline WScript.Echo "Usage: ExcelCsvConvertor <InputFileName> <OutputFileName> <OutputFormat>" & vbNewline WScript.Echo "Example: ExcelCsvConvertor input.xlsx output.csv csv" Wscript.Quit End If InputFileName = Wscript.Arguments.Item(0) OutputFileName = WScript.Arguments.Item(1) OutputFormat = lcase(WScript.Arguments.Item(2)) Select Case OutputFormat Case "csv" XlFileFormatValue = 62 Case "xlsx" XlFileFormatValue = 51 Case Else Wscript.Echo "Unsupported output format specified: " & OutputFormat Wscript.Quit End select With CreateObject("Excel.Application") With .Workbooks.Open(InputFileName) .SaveAs OutputFileName, XlFileFormatValue .Close False End With .Quit End With
קובץ להתקנה והסרה קלה מתפריט ההקשר (לחצן ימני):
@echo off set convertor_path=%~dp0ExcelCsvConvertor.cmd cls echo ========================================================================== echo ExcelCsvConvertor: Context menu setup echo ========================================================================== echo. echo [1] Install : Adds "Convert to CSV/Excel" options to context menu echo [2] Uninstall : Removes "Convert to CSV/Excel" options from context menu echo [Q] Quit echo. choice /C 12Q /T 1000 /D Q /N /M "Please select an option: " IF [%errorlevel%]==[1] GOTO Install IF [%errorlevel%]==[2] GOTO Uninstall exit /b :Install echo Installing... REG ADD HKEY_CLASSES_ROOT\SystemFileAssociations\.xlsx\shell\ConvertToCSV /f /d "Convert to CSV..." REG ADD HKEY_CLASSES_ROOT\SystemFileAssociations\.xlsx\shell\ConvertToCSV\command /f /d "\"%convertor_path%\" \"%%1\" csv" REG ADD HKEY_CLASSES_ROOT\SystemFileAssociations\.csv\shell\ConvertToExcel /f /d "Convert to Excel..." REG ADD HKEY_CLASSES_ROOT\SystemFileAssociations\.csv\shell\ConvertToExcel\command /f /d "\"%convertor_path%\" \"%%1\" xlsx" goto Done :Uninstall echo Uninstalling... REG DELETE HKEY_CLASSES_ROOT\SystemFileAssociations\.xlsx\shell\ConvertToCSV /f REG DELETE HKEY_CLASSES_ROOT\SystemFileAssociations\.csv\shell\ConvertToExcel /f goto Done :Done echo Done! pause
הערות:
- את ההתקנה יש להפעיל עם הרשאות מנהל
- מיקום הסקריפטים מוטמע ברישום בזמן ההתקנה.
אם משנים את מיקום הסקריפטים לאחר ההתקנה, נדרש להפעיל את ההתקנה שוב.
והנה כל החבילה להורדה: (הערה: עיין בהמשך האשכול לגרסה משופרת 0.2)
ExcelCsvConvertor.cmd
ExcelCsvConvertorScript.vbs
Setup (run as Administrator).cmd -
באקסס- פיתרון ליצירת טופס עם כניסה למנהלים בלבד-ללא שום קודים!!!@laswater תודה על השיתוף ועל ההשקעה. יש לך התלהבות של מתחילים, ואני מאחל לך שהיא תמשיך להניע אותך ללמוד, לחקור ולהתנסות.
עכשיו תורי להציע אתגר בשבילך: איפה נקודות התורפה של המערכת שבנית? האם ניתן לעקוף את המנגנון הזה? איך? -
בדיקת תקינות של תעודת זהות באקסלטוב חבר'ה, בזכות האתגר הזה התחדש לי חידוש נהדר באקסל:
אפשר להגדיר משתנים בתוך נוסחא, על ידיLET
, ולקצר עוד יותר את הנוסחא, כך שיהיה מקום לרפד באפסים.
הנוסחא דלהלן תעבוד על ידי אימות נתונים גם עם תאי מספר רגילים:=LET(N,REPT(0,9-LEN(A1))&A1,LET(P,"0246813579",MOD(MID(N,1,1)+MID(P,MID(N,2,1)+1,1)+MID(N,3,1)+MID(P,MID(N,4,1)+1,1)+MID(N,5,1)+MID(P,MID(N,6,1)+1,1)+MID(N,7,1)+MID(P,MID(N,8,1)+1,1)+MID(N,9,1),10)=0))
מצורף קובץ משופר: בדיקת תקינות תעודת זהות.xlsx