דילוג לתוכן

תכנות

4.7k נושאים 38.6k פוסטים

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


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

    שלום לכולם
    התבקשתי רבות מחברים פיתרון לבעיה הידועה לבצע מיזוג דואר, אך לשמור קובץ 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 פוסטים
    chagoldC

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

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

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

  • 31 נושאים
    133 פוסטים
    Y.Excel.AccessY

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

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

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

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

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

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

  • query string peremeters ב-fetch post

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

    אגב על ידי שימוש ב-tagged strings של ES6 אפשר להשתמש בחבילה זו לכתוב מחרוזות ארוכות כך:

    import dedent from "dedent"; fetch(detent`https://example.com? &parameter1=x &parameter2=y &parameter3=z`)...

    עריכה: החבילה רק מורידה את הכניסות מהמחרוזות אבל לא שבירות השורות... יש על זה issue פתוח אבל לא נראה שמשהו מתקדם שם. אפשר בקלות לכתוב פונקציה זו לבד.

  • דרוש מפתח ידע בחיבור שרתים

    7
    0 הצבעות
    7 פוסטים
    73 צפיות
    אבי 203א

    @nigun דבר איתו טלפונית.
    (הוא ביקש שמחר אמחק את המספר).

  • אתגרים מגוגל foo.bar

    8
    3 הצבעות
    8 פוסטים
    134 צפיות
    yossizY

    @chagold חחח... כמה תשובות:

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

    19
    1 הצבעות
    19 פוסטים
    438 צפיות
    dovidD

    @יוסף1111 זה לא טוב.
    עניין אותך איך לסיים, ואכן עוד מעט אתה מסיים אבל עד עכשיו (למרות שזה כבר נאמר לך בשאלה הקודמת ששאלת) אתה לא יודע שקוראים לזה מערך ולא מילון (מה זה משנה, העיקר סיימת!), והעזרה של @yossiz עזרה לך לחסוך קריאה ולהיות טוב בלמצוא בפורום את האנשים הנכונים ופחות להכיר את השפה איתה עובד...
    כשאתה שואל, עליך לשים בצד את התקדמות בפרוייקט, ולהיות במצב של שאלה בבית ספר.
    יש לי אוסף ואני צריך לאתר בו איבר, לפי ערך של אחד שדותיו.
    איך לחפש את זה? מה זה אומר מבחינת קוד?

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

  • נושא זה נמחק!

    1
    0 הצבעות
    1 פוסטים
    4 צפיות
    אין תגובות
  • API ניקוד

    1
    0 הצבעות
    1 פוסטים
    60 צפיות
    אין תגובות
  • אישור העברת דואר בג'ימייל, אוטומטי

    18
    0 הצבעות
    18 פוסטים
    166 צפיות
    dovidD

    @שואף אמר באישור העברת דואר בג'ימייל, אוטומטי:

    נפתרה התעלומה (לכאורה...)
    אני שולף את הלינק בREGEX מתוך המייל שמגיע מגוגל.

    אם אתה צודק הREGEX שגוי.
    להפעיל REGEX ואחריו trim זה redundancy.

  • 0 הצבעות
    11 פוסטים
    273 צפיות
    chvC

    @dovid אמר בהמרה של fetch רגיל, ל-UrlFetchApp של גוגל סקריפט:

    אתה אמור לא לישון בלילה על סיפור הקריסות, במקום לעשות מאה סקריפטים שפותרים את הבעיה.

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

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

    חוץ מזה שהיה לי על מה לכתוב 😉

  • בקשת http שהתגובה ריקה

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

    בfetch התשובה הראשונית רק מכילה קוד מצב וכותרות (שזה ההתחלה של התשובה), לא את גוף התשובה מה שנקרא body/payload שיש את זה גם בבקשה.
    זה שני שלבים במציאות כי גוף התשובה יכול להיות גדול/ארוך/אין סופי.
    כדי לגשת לתוכן קוראים למתודה text או json שמחזירים גם פרומייז ש"נפתר" בסיום הקבלה והעיבוד, ככה:

    await fetch("/index.php?p=get_functions&format=json", { method: "post", headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', }, //make sure to serialize your JSON body body: JSON.stringify({}) }).then(response => response.text() ).then(resText => console.log(resText) );

    אגב אם באמת בדוגמה שלך הבקשה מכילה body עם JSON של אובייקט ריק, זה בהחלט מיותר, אפשר להשמיט את השורה הזאת.

  • דיסק רשת משותף בלינוקס

    2
    1 הצבעות
    2 פוסטים
    45 צפיות
    yossizY

    מראי מקומות:
    https://www.google.com/search?q=nfs+vs+smb+vs+sshfs

  • web gui לניהול חומת האש

    7
    0 הצבעות
    7 פוסטים
    107 צפיות
    nigunN

    @clickone
    מדובר בקמיליו
    אגב גם באסטריסק אני לא פותח את הRTP
    וזה עובד
    נראה לי שזה אמור לעבוד בכל מקרה כמו שwebrtc עוקף את הNAT

  • עזרה בהתקנת ספריית monaco-editor

    2
    1 הצבעות
    2 פוסטים
    58 צפיות
    chagoldC

    @chagold כאן זה עובד לי

    אבל באתר שלי זה לא עובד
    יש שגיאה בקונסול

    TypeError: require.config is not a function at Object.eval (eval at compile (http-vue-loader.js:161), <anonymous>:5:13) at ScriptContext.compile (http-vue-loader.js:161) at Component.compile (http-vue-loader.js:329) at http-vue-loader.js:382

    אני מבין שהשגיאה היא בvue-loader. אבל אולי אפשר לשכתב את הקוד כJS רגיל?

    תודה.

  • API שליחת סמסים בחברת מיקרופיי

    32
    0 הצבעות
    32 פוסטים
    285 צפיות
    dovidD

    @dovid אמר בAPI שליחת סמסים בחברת מיקרופיי:

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

    אגב תיקנתי גם שתי טעויות בקוד, תעתיק שוב.

  • בקשת הסבר בפונקציית async

    4
    0 הצבעות
    4 פוסטים
    82 צפיות
    yossizY

    @chagold
    א. כאשר העתקתי את הקוד לקונסול והרצתי הוא כן הדפיס לי "ss". (למרות שהתשובה מ-tchumim.com היתה 404, אבל כלפי fetch זה לא נחשב כשגיאה)
    עריכה: הרצתי את הקוד באתר של תחומים, באתר אחר הייתי מקבל שגיאת CORS ואז ה-ss לא היה נדפס
    ב. במקרה של שגיאה אמיתית, כלומר rejection של הפרומיס של fetch (לדוגמה כתובת שלא קיימת) אז באמת ה-await נכשל, ואז השורה הבאה לא מורצת.
    אבל עדיין בכל מקרה הפונקציה תחזיר פרומיס כי פונקציה אסינכרונית תמיד חוזרת מיד עם פרומיס. הפרומיס תכשל אח"כ כי היתה שגיאה בהרצת הפונקציה.

  • NodeBB פתיחת קישורים בחלון חדש

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

    @מנצפך זה נמצא בהגדרות האישיות של כל יוזר
    אתה יכול להגדיר שבברירת מחדל ככה יהיה מוגדר - בניהול -
    https://siteeeeee.com/admin/settings/user#default-user-settings
    2d4aa059-3c10-44a5-bd79-a42ebde25969-image.png

  • PHPMailer הפסיק לשלוח מיילים מגימייל

    3
    0 הצבעות
    3 פוסטים
    67 צפיות
    WWWW

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

  • 1 הצבעות
    11 פוסטים
    255 צפיות
    WWWW

    @נתן-לב אמר בייעוץ לבחירת שרתים עבור מרכזייה ומערכת תוכן ב-freeswitch:

    יש כאן מישהו מהחברים שמאחסן שם VOIP?

    יש לי שם מרכזיה קטנה על שרת הכי זול (13 ש"ח), כבר שנה + בינתיים אני נהנה.

  • מחפש בדחיפות בונה אתר תדמית

    4
    0 הצבעות
    4 פוסטים
    106 צפיות
    dovidD

    @shpro654 למה צריך פלטפורמה, מספיק דפי HTML.
    גם האתר הכי עשיר עשוי מHTML.

  • המלצה לחברה לשיגור מיילים ב API

    הועבר
    1
    1 הצבעות
    1 פוסטים
    111 צפיות
    אין תגובות
  • 0 הצבעות
    7 פוסטים
    265 צפיות
    חייםיודלביץח

    @OdedDvir תודה רבה! עובד מצוין!!

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