תכנות

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 ודומיו מערכים אחרים), פונקציות בעלות שם, וכו' ע"ש בקישור.

  • דוקר: פורטים לא מגיבים

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

    @רפאל

    @שואף אמר בדוקר: פורטים לא מגיבים:

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

  • לא מבין למה מגיע ערך ריק. js

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

    @chagold האמת שלא לגמרי הבנתי את הסיטואציה... אבל ממה שאני כן (מקווה ש)הבנתי, לכאורה watch יכולה לעזור לך, משהו כזה:

    Vue.use(Vuex); const store = new Vuex.Store({ state: { user: JSON.parse(localStorage.getItem('user')) }, getters: { getUser(state) { return state.user; } }, mutations: { selectAccount(state, account) { if (account) state.user.account = account; localStorage.setItem('user', JSON.stringify(state.user)); } } }); const vm = new Vue({ el: '#app', store, watch: { '$store.state.user': function () { console.log(this.$store.state.user.account) } } }) // אפשר גם ככה vm.$watch('$store.state.user', function (val, oldVal) { console.log(val.account) }) // ואח"כ באיזשהו שלב אתה מבצע את המוטציה vm.$store.commit('selectAccount', 'admin')

    עוד על watch פה

  • דרוש מעצב אתרים שעובד VUE וvuetifyjs

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

    @nigun אמר בדרוש מעצב אתרים שעובד VUE וvuetifyjs:

    @davidnead
    איפה עוד ניסית?
    עם כל הכבוד לתחומים נראה לי שרוב המפתחים החרדים בכלל לא מכירים את הפורום

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

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

    1
    0 הצבעות
    1 פוסטים
    5 צפיות
    אין תגובות
  • הוספת 0 בפורמט שעה ב- TS

    3
    1 הצבעות
    3 פוסטים
    86 צפיות

    @מוטי-אורן אמר בהוספת 0 בפורמט שעה ב- TS:

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

    אכן זה היה הפספוס שלי, תודה עכשיו עובד!

  • שימוש בכתובת של גוגל

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

    יש API של המדינה כולל כינויים של שמות רחוב, זה אחד טוב
    https://data.gov.il/dataset/israel-streets-synom/resource/bf185c7f-1a4e-4662-88c5-fa118a244bda
    אבל הוא לפי תקן של cken וקצת מקרטע, אתה צריך לממש שם הרבה לבד. לא כל כך סיפור להביא את שמות הרחובות והערים ולעשות זאת בעצמך, אני עשיתי את זה לאחרונה.
    אתה יכול גם לעקוב אחרי ה API של דואר ישראל כשהם נותנים איתור מיקוד.
    אם אתה עובד עם גוגל בכל מקרה כדאי לך לבנות טבלה ששותה את התוצאות, כך תוכל לחסוך בריקווסטים.

  • vba | האם שימוש בwith מאט את המאקרו?

    הועבר
    5
    0 הצבעות
    5 פוסטים
    127 צפיות

    @פלורידה ברור ש with ממהר בגלל חיסכון בקריאות לפונקציות ומשתנים, מפני שכאשר כותבים:

    prop1.prop2.prop3 = 0 prop1.prop2.prop4 = 0

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

  • שדרוג nginx שהסתבך

    24
    0 הצבעות
    24 פוסטים
    386 צפיות

    @ארכיטקט אמר בשדרוג nginx שהסתבך:

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

    בדיוק.
    @ארכיטקט אמר בשדרוג nginx שהסתבך:

    הפורום הוא לא המקום לזה

    אפשר לדון על זה בשרשור חדש
    אבל נראה לי שזה דיון אינסופי....

  • קבלת טקסט של דף אינטרנט

    הועבר
    26
    0 הצבעות
    26 פוסטים
    625 צפיות

    בנתיים
    ebc57e8a-de30-4a8b-a78e-2852085e412c-image.png

  • log nginx

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

    @yossiz אמר בlog nginx:

    (למה בשורה השלישית מקבל 403? זה אותה בקשה?

    נראה שכן

  • 0 הצבעות
    20 פוסטים
    455 צפיות

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

  • איטיות ב-VSCode בכתיבה עם מונגוס

    הועבר
    2
    1 הצבעות
    2 פוסטים
    121 צפיות

    @מוטי-אורן מסתבר שזו בעיה נפוצה, בגרסאות האחרונות. עיין כאן.
    "פתרון" לא מושלם הוא לשנמך גרסא בחזרה ל-5.10.19 :

    npm i mongoose@5.10.19 --save
  • 0 הצבעות
    3 פוסטים
    131 צפיות

    סתם לתוספת ידע, השם הטכני של מה שאתה מחפש נקרא
    WYSIWYG Editor
    (ברצינות)

    ראשי תיבות What You See Is What You Get

  • 0 הצבעות
    7 פוסטים
    555 צפיות

    @איש-ימיני לא ניסיתי אבל אולי אתה יכול לבקש מקונטאבו שההפנייה של השם משתמש וסיסמא לנטפרי יהיו ברמת השרת שלהם ואז לך לא תהיה גישה לזה , השאלה אם זה אפשרי מבחינתם

  • קריאה למאקרו דרך ערך בתא

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

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

    דוגמא

    Private Sub Worksheet_Change(ByVal Target As Range) ' התנאי האם השינוי אירע בתא מסוים ' If Target.Address = "$A$1" Then If 'תנאי' Then ' פעולה' End If End If End Sub

    במקור ראיתי את הרעיון כאן

    הסבר בעברית

    הסבר+ דוגמא של מיקרוספט

  • vba | תנאי לשני משתנים

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

    @פלורידה
    כתבת מצוין כותבים and ככה

    Private Sub Workbook_Activate() If ActiveWorkbook.Name = MY_WORKBOOK_NAME And Range("admin!C2").Value = "חיובי" Then UIHide Else UIShow End If End Sub
  • VBA | פקודה באמצעות ארוע פעם אחת

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

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

  • אפשרות לאיתור מיקום מכשיר

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

    התקנתי את owntracks על מכשיר אנדרואיד, ואני רוצה לקבל את המיקום לשרת VPS ווינדוס, התקנתי בשרת Mosquitto MQTT .
    איך אני ממשיך מפה.

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

    הועבר
    4
    -1 הצבעות
    4 פוסטים
    18 צפיות
  • תמחור תחזוקה ללקוח

    14
    6 הצבעות
    14 פוסטים
    355 צפיות

    @nigun אמר בתמחור תחזוקה ללקוח:

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

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

    לא מחפש קיצורי דרך. מחפש רק עזרה וייעוץ קצת יותר פרטני ממה שמאפשר הפורום הזה.

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