תכנות

4.6k נושאים 37.8k פוסטים

קטגוריות משנה


  • 22 נושאים
    137 פוסטים

    שלום לכולם
    התבקשתי רבות מחברים פיתרון לבעיה הידועה לבצע מיזוג דואר, אך לשמור קובץ PDF נפרד לכל רשומה, עם שם מותאם אישית.

    אפרט כאן במדריך שלב אחר שלב איך לבצע זאת, תהיו איתי עד הסוף מקווה שתהנו...

    נתחיל...

    שלב א:

    ראשית בקובץ ה- Excel של רשימת הנמענים, הוסיפו לטבלת הנתונים ארבעה עמודות בשמות כדלהלן (חשוב שהשמות יהיו מדויקים ללא רווחים מיותרים - לתשומת ליבכם):

    DocFolderPath

    DocFileName

    PdfFolderPath

    PdfFileName

    שלב ב:
    צרו שתי תיקיות נפרדות, אחד לקבצי הפלט בפורמט docx, ואחד לקבצי הקלט בפורמט pdf, העתיקו את נתיב התיקייה של קבצי ה- docx והדביקו אותם עבור כל רשומה בשדה שיצרתם בשם DocFolderPath, לאחמ"כ חזרו על הפעולה והפעם העתיקו את נתיב התיקייה של קובצי ה- PDF והדביקו בשדה PdfFolderPath.
    בשדה DocFileName כתבו את השם של הקובץ עבור הרשומה - ניתן להשתמש בנוסחאות, כמו"כ בשדה PdfFileName כתבו את שם הקובץ כנ"ל.

    שלב ג:
    פתחו את קובץ ה- word והשלימו את פעולת המיזוג כרגיל, עצבו את המסמך כרצונכם.

    שלב ד:
    פתחו את לשונית מפתחים בקובץ ה- word פתחו את עורך הקוד הוסיפו מודל חדש מצו"ב צילום מסך:
    3eb2538f-9ab1-41eb-a1df-452212916da6-image.png

    הדביקו את הקוד הבא:

    Sub MailMergeToPdfBasic() ' Mark the start of the Subroutine (i.e. Macro) and name it "MailMergeToPdf" ' Macro created by Imnoss Ltd ' Please share freely while retaining attribution ' Last Updated 2021-05-03 Dim masterDoc As Document, singleDoc As Document, lastRecordNum As Long ' Create variables ("Post-it Notes") for later use Set masterDoc = ActiveDocument ' Identify the ActiveDocument (foremost doc when Macro run) as "masterDoc" masterDoc.MailMerge.DataSource.ActiveRecord = wdLastRecord ' jump to the last active record (active = ticked in edit recipients) lastRecordNum = masterDoc.MailMerge.DataSource.ActiveRecord ' retrieve the record number of the last active record so we know when to stop masterDoc.MailMerge.DataSource.ActiveRecord = wdFirstRecord ' jump to the first active record (active = ticked in edit recipients) Do While lastRecordNum > 0 ' create a loop, lastRecordNum is used to end the loop by setting to zero (see below) masterDoc.MailMerge.Destination = wdSendToNewDocument ' Identify that we are creating a word docx (and no e.g. an email) masterDoc.MailMerge.DataSource.FirstRecord = masterDoc.MailMerge.DataSource.ActiveRecord ' Limit the selection to just one document by setting the start ... masterDoc.MailMerge.DataSource.LastRecord = masterDoc.MailMerge.DataSource.ActiveRecord ' ... and end points to the active record masterDoc.MailMerge.Execute False ' run the MailMerge based on the above settings (i.e. for one record) Set singleDoc = ActiveDocument ' Identify the ActiveDocument (foremost doc after running the MailMerge) as "singleDoc" singleDoc.SaveAs2 _ FileName:=masterDoc.MailMerge.DataSource.DataFields("DocFolderPath").Value & Application.PathSeparator & _ masterDoc.MailMerge.DataSource.DataFields("DocFileName").Value & ".docx", _ FileFormat:=wdFormatXMLDocument ' Save "singleDoc" as a word docx with the details provided in the DocFolderPath and DocFileName fields in the MailMerge data singleDoc.ExportAsFixedFormat _ OutputFileName:=masterDoc.MailMerge.DataSource.DataFields("PdfFolderPath").Value & Application.PathSeparator & _ masterDoc.MailMerge.DataSource.DataFields("PdfFileName").Value & ".pdf", _ ExportFormat:=wdExportFormatPDF ' Export "singleDoc" as a PDF with the details provided in the PdfFolderPath and PdfFileName fields in the MailMerge data singleDoc.Close False ' Close "singleDoc", the variable "singleDoc" can now be used for the next record when created If masterDoc.MailMerge.DataSource.ActiveRecord >= lastRecordNum Then ' test if we have just created a document for the last record lastRecordNum = 0 ' if so we set lastRecordNum to zero to indicate that the loop should end Else masterDoc.MailMerge.DataSource.ActiveRecord = wdNextRecord ' otherwise go to the next active record End If Loop ' loop back to the Do start End Sub ' Mark the end of the Subroutine

    שלב ה וסיום:
    סגרו את עורך הקוד.
    לחצו על כפתור פקודות מאקרו שבכרטיסיית מפתחים, בחרו את המאקרו בשם MailMergeToPdfBasic ולחצו הפעל מצו"ב צילום מסך
    3890ce69-c0e9-4f30-89ce-3e97b7de750b-image.png

    כעת שבו בנחת והמתינו עד ליצירת כל הקבצים, להנאתכם תפתחו את תיקיות הפלט שיצרתם וגלו שהיא מלאה קבצים קובץ לכל רשומה בשם המתאים שהגדרתם לה.

    מקור

  • ארכיון האתר הקודם והחביב קוד-613

    1k נושאים
    10k פוסטים

    @אבי אמר בשוב, צילומי הצ'קים בבנקים:

    התעסקתי לאחרונה עם סורקים של חברת MAGTEK, הם ידידותיים ונוחים להתממשקות, אבל כמדומני שהבנקים בישראל מוכנים לקבל סריקות רק מסורקים של חברת PANINI

    @אבי איך יוצרים אתך קשר?

  • 31 נושאים
    133 פוסטים

    יש כמה נוסחאות חדשות שממש משנות את כללי המשחק בגוגל שיטס:

    CHOOSECOLS לבחירת עמודות ממערך CHOOSEROWS לבחירת שורות ממערך WRAPROWS להמרת מערך חד ממדי לרב ממדי - פריסה לשורות WRAPCOLS כנ"ל - פריסה לעמודות HSTACK ו VSTACK - הפעולה של {} אך בלי סוגריים - לא משמעותי לכאורה

    והעולה על כולנה, סוף סוף:

    LET - ליצירת משתנים.

    כל אלו מצטרפות לפונקציות שנוספו מוקדם יותר -
    https://blog.sheetgo.com/google-sheets-formulas/10-new-google-sheets-functions/

    וכלול בתוכם - LAMBDA, MAP (חלקי - לא עובד לקנן ב MAP ודומיו מערכים אחרים), פונקציות בעלות שם, וכו' ע"ש בקישור.

  • התקנת PHP ב- nginx

    הועבר
    8
    0 הצבעות
    8 פוסטים
    121 צפיות

    @ass
    הסתדרתי!!!
    היה חסר לי קובץ php.ini
    אז פשוט יצרתי אחד כזה ריק והכל הסתדר.
    (זה עבד גם בלי השורות שאצלך).

  • date ב-input, ו-ngModel אנגולרי

    הועבר
    4
    0 הצבעות
    4 פוסטים
    303 צפיות

    @yyy הevent$ מייצג את הערך שנשלח ע"י הOutput של הComponent\Directive הפנימי.

  • ASP.NET vs ...

    6
    2 הצבעות
    6 פוסטים
    137 צפיות

    @ש-ב-ח
    לבדיקה הזאת קוראים benchmark
    נהוג לתת תרגילים שונים כי לשכל שפה יש חולשות בפינה אחרת
    הרשת מלאה בbenchmarkים הנה אתר שנראה שהוא עושה את זה על מגוון שפות עם מגוון אלגוריתמים, ואתה יכול לראות למשל במקרה של GO VS .NET
    שכל אחד מנצח במבחן אחר לרוב בפערים קטנים
    https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/go-csharpcore.html

  • מחפש מעצב לדף נחיתה ותבנית דוא"ל

    הועבר
    9
    0 הצבעות
    9 פוסטים
    320 צפיות

    @זלמן אמר במחפש מעצב לדף נחיתה ותבנית דוא"ל:

    @ג-מייקה אמר במחפש מעצב לדף נחיתה ותבנית דוא"ל:

    @זלמן מוזמן לפנות דרך ה"צור קשר" של מקצועות.

    מה הבעיה לרשום כאן מייל או לפנות אלי למייל שציינתי?

    פשוט לא שמתי לב...
    כבר פונה

  • עזרה בהעלאת קבצים לשרת ב node js

    הועבר
    25
    0 הצבעות
    25 פוסטים
    580 צפיות

    @מוטי-אורן תודה רבה 🙂
    לא שמתי לב למה שאני בעצמי ציטטתי 🙂

  • 0 הצבעות
    3 פוסטים
    118 צפיות

    @yossiz אמר בj.s- איך לחכות לפונקציה אסינכרונית שלא מחזירה הבטחה ?:

    ואם כן, מה באמת הסיבה שהקוד שלך לא מחכה לביצוע פונקציית getToken?
    זה קשור להבדל בין mutation ל-action ב-vuex.
    mutation חייב להיות סינכרוני, (וגם אם תעשה את זה אסינכרוני, Vuex יתייחס אליו כאילו הוא סינכרוני)
    לעומת זה, action יכול להיות אסינכרוני, ו-vue יכבד את זה ויחכה לביצועם של פרומיסים בתוך actions.

    תודה רבה על ההסבר המפורט . אכן זה עובד!
    (פשוט עברתי על התיעוד של vuex ממש מלמעלה ולכן הלכתי להמציא כל מיני הסברים למה זה לא עובד..)

  • תכנון מסד - לאחד טבלאות או לפצל?

    6
    0 הצבעות
    6 פוסטים
    136 צפיות

    @יוסף-בן-שמעון
    זה כבר שאלה של יעילות מסד נתונים.

    בעיקרון ENUM עושים עם INT, זה כל העניין שלו. ו ORM טוב יודע לחבר לך את ה ENUM למידע מהטבלה.

    אבל למען האמת פעמים רבות חורגים מזה וכותבים תוכן טקסטואלי.
    זה פתח לטעויות וכמובן מוריד מיעילות. תלוי בפרוייקט.

  • קבצים ב node js

    הועבר
    9
    0 הצבעות
    9 פוסטים
    268 צפיות

    @yossiz
    ישנם שני סיבות:

    Scalability: הנפח של הנתונים רק הולך וגדל, ניתן להניח שבנקודת זמן כלשהי בעתיד, האפשרות לשמור את הנתונים בצורה מקומית תהיה בלתי אפשרית \ יקרה להחריד. Availability: בעידן של הLoad balancing, אכסון המידע בNodes שונים, לא מאוד יעיל אם יש צורך בשליפתו.
  • 0 הצבעות
    32 פוסטים
    2k צפיות

    ליבת השאלה (זהה לשניהם), אחר קיצוץ הפתיח והסיום:

    "עבדתי תקופה ארוכה בחברה גדולה, בפיתוח אפליקציות ווב מתקדמות עם nodejs בצד שרת. התמקצעתי יפה מאוד בזה.
    כעת עזבתי שם ועברתי להיות עצמאי. זה אומר שאני מתחיל לקחת עצמאית פרוייקטים מלקוחות, וזה אומר שמטבע הדברים הפרוייקטים הללו (לפחות הקלים להשגה) הם פרוייקטים לא גדולים, משהו בין אתרי אינטרנט קלאסיים או מתקדמים קצת או אפליקציות אינטרנט פשוטות.

    זה הציב אותי במצב שלא התכוננתי אליו: כדי ליצור לבן אדם אתר אינטרנט, גם אם הוא לא בתבנית קלאסית, עדיין ברוב המקרים לא משתלם לפתח הכל בnodejs מאפס, הרבה יותר קצר ויעיל לעבוד עם משהו מוכן של וורדפרס ולעשות בו התאמות לפי הצורך. יהיה לא הוגן כלפי הלקוח להשקיע עבודה בלייצר בnode רק כי כך נוח לי, ולפעמים גם התוצאה תצא פחות טובה מבחינות מסוימות.
    מאידך, למרות שאני יודע PHP, אין לי שום רצון לעבוד עם השפה המיושנת הזו, ולא עם הטכנולוגיה המסורבלת הזו של מערכת ניהול תוכן כמו וורדפרס. אני מתכנת ורוצה לכתוב קוד, ורוצה לכתוב אותו ב JS. אני גם לא מכיר את וורדפרס מספיק כדי לשפוט מתי מוצדק להשתמש בו.
    בשבועות האחרונים חרשתי את הרשת לנסות להבין אם יש חלופות טובות מספיק בJS, כאלו שמחד יקצרו את הדרך ויספקו לי שלד תוכנה מוכן ויוזילו עלויות ומאידך ישאירו לי את השליטה וכו'. ראיתי שיש כל מיני דברים ברשת בודאי בצד לקוח וגם בצד שרת (ספריות שונות של templates, cms, headless cms ועוד), אבל אף אחד מהם לא באמת עושה מה שאני מצפה, וגם לאף אחד אין את העושר של וורדפרס.

    האם זה אומר שמפתח עצמאי שעובד עם לקוחות קטנים ו-nodejs לא הולך יחד? node מתאים רק לפרוייקטים גדולים כמו אפליקציות אינטרנט? כאלו שההשקעה בבניית השלד ותחזוקו משתלמת?"

  • הרצת כמה גירסאות NODEJS במקביל ע"י PM2

    2
    0 הצבעות
    2 פוסטים
    80 צפיות

    @מנצפך להלן נידון בGithub לגבי העניין, עם זאת אני סבור שכדאי לשקול את השימוש בDocker.

  • אצווה כמנהל

    הועבר
    14
    0 הצבעות
    14 פוסטים
    198 צפיות

    @yossiz אתה צודק. לא עיינתי כראוי בדרך שהבאתי.
    (דווקא נהנתי מלרשום תשובה מחוכמת... נו, כשם שקיבלתי שכר על הדרישה...)

  • (php) שגיאה בהכללת קבצים מתיקיית root

    הועבר
    2
    0 הצבעות
    2 פוסטים
    97 צפיות

    @איש-נחמד אמר ב(php) שגיאה בהכללת קבצים מתיקיית root:

    Permission denied

    זה מראה על שגיאה בהרשאות
    כאן יש פתרונות
    (אציין שאני לא כ"כ ברור מה הפתרון הכי טוב שם ולכן אני רק נותן מראה מקום, אני לא זוכר מה עשיתי אצלי במקרים כגון אלו, וכן מה עדיף מבחינת אבטחה איזה רמת הרשאה כדאי לתת

  • ערך רנדומלי בשדה mysql.

    4
    1 הצבעות
    4 פוסטים
    72 צפיות

    @chagold אמר בערך רנדומלי בשדה mysql.:

    מה לא הבנתי טוב?

    תשתמש בקידומת NEW עבור השדה החדש שנוצר, כך:

    CREATE TRIGGER trigger_code BEFORE INSERT ON user FOR EACH ROW SET NEW.token=MD5( RAND ());
  • יצירת והורדת קובץ TXT ב PHP

    הועבר
    8
    0 הצבעות
    8 פוסטים
    376 צפיות

    @WWW יפה!
    למקרים של טקסטים גדולים אפשר להשתמש בblob:

    function download_txt(textToSave, fileName) { var blob = new Blob([textToSave], { type: 'text/plain' }); var hiddenElement = document.createElement('a'); hiddenElement.href = window.URL.createObjectURL(blob); hiddenElement.target = '_blank'; hiddenElement.download = fileName; hiddenElement.click(); } var text = document.getElementById('txt')?.value ?? 'טקסט לדוגמה' download_txt(text ,'myFile.txt');
  • 0 הצבעות
    8 פוסטים
    201 צפיות

    @ivrtikshoret
    להחליף את הtextarea ב-contenteditable (תוסיף גם name=textarea.name, ופרוקסי לפונקציית ()VAL. כדי שזה יעבוד בצורה שקופה)

  • התקנת גופנים על ידי חילוץ עצמי.

    הועבר
    7
    1 הצבעות
    7 פוסטים
    102 צפיות

    @הללוהו כן, ככה:

    copy /y MyFontName.ttf "%SYSTEMROOT%\Fonts" reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "My Font (TrueType)" /t REG_SZ /d MyFontName.ttf /f copy /y AnotherFontName.ttf "%SYSTEMROOT%\Fonts" reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "Another Font (TrueType)" /t REG_SZ /d AnotherFontName.ttf /f

    וכו'.

  • שרת אישי על המחשב שלי

    13
    0 הצבעות
    13 פוסטים
    215 צפיות

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

  • 1 הצבעות
    9 פוסטים
    195 צפיות

    @yossiz אמר בבירור | שמות קיצורי הדרך לנתיבים בתיקיות:

    אתה רוצה ספר או סט ספרים? 🙂

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

    @yossiz אמר בבירור | שמות קיצורי הדרך לנתיבים בתיקיות:

    זה לא משהו שאפשר להגיד את הכל על רגל אחת

    נכון, לא הכל, אבל מעט שבמעט, לא משהו ברמה לא יודע מה... שלזה יש את המדריך הנפלא שלך. אלא משהו, בלי להבין לעומק, רק שגם אנו נוכל להשתמש בה. (משהו שאתם כבר בדקתם לעומק, והסקתם מסקנות... קריצה)
    תודה.

  • 0 הצבעות
    5 פוסטים
    78 צפיות

    @אבי-203 שים לב שמכיוון שTrunc מעגל לכיוון האפס, ההתנהגות עבור מספרים שליליים תהיה זהה לזו של Ceil, כלומר העיגול יתבצע כלפי מעלה.

    לסיכום:

    מתודה תוצאה Floor עיגול כלפי מטה לכיוון האינסופי השלילי (Negative infinity או ∞-) Ceil עיגול כלפי מעלה לכיוון האינסופי החיובי (Positive infinity או ∞) Trunc עיגול כלפי מטה\מעלה לכיוון האפס
  • 22 הצבעות
    24 פוסטים
    947 צפיות

    @yossiz
    כלומר, שאינטואציה יעילה בחווית החיים, ובהרגשת המציאות.
    ולא יעילה בהבנת הנקרא..

    או שמא האינטואציה שלי לא עבדה כרגע ולכן לא הבנתי.
    כי לא הפעלתי כ"כ את ההגיון (באופן לוגי וקוגניטיבי) לפני שכתבתי את הפוסט 👶

בא תתחבר לדף היומי!