דילוג לתוכן

תכנות

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

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


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

  • 0 הצבעות
    7 פוסטים
    115 צפיות
    שלומש

    @dovid
    עכשיו אני רואה
    זה מפסיק אחרי כ10 שניות
    ולא מידי ממש

  • קוד נגדי קצר

    30
    1 הצבעות
    30 פוסטים
    539 צפיות
    Aharon 0A

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

  • אחסון אתרים זול ומהיר

    8
    1 הצבעות
    8 פוסטים
    163 צפיות
    צבי-שצ

    @מי-זה כתב באחסון אתרים זול ומהיר:

    הסברתי,
    @מי-זה כתב באחסון אתרים זול ומהיר:

    לא צריך את המהירות הכי גדולה שיש אלא שלא יתקע על כל קובץ איזה 40 50 שניות

    אחזור שוב, מה זה להיתקע על כל קובץ ? איזה סוג קובץ ? ומה המשקל שלו ?
    על טרה מידע, הגיוני לך שיקח לו 50 שניות ?
    על גיגה ?
    על מגה ?

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

    על איזה סוג קבצים גדולים ?
    לא דומה קריאה למסד נתונים גם אם הוא שוקל מלא, לקריאת קובץ .

    קובץ שיעשה הרבה פעולות יחד

    זה לא עונה על שום דבר,
    איזה פעולות ?

    ולמה אתה לא עונה את כל המידע שיש לך אם אתה רוצה שנעזור לך למצוא שרת מתאים ?
    אם תענה מידע לא רלוונטי / קצת מידע, אנחנו לא נוכל לעזור לך.

  • 0 הצבעות
    10 פוסטים
    136 צפיות
    dovidD

    @pcinfogmach כתב בשאלה בc# : האם יש דרך לזהות מה הקידוד של קובץ טקסט?:

    כלומר אני רוצה שהמשתמשים יוכלו להוסיף קבצים כאלו על דעת עצמם

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

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

    1
    0 הצבעות
    1 פוסטים
    5 צפיות
    אין תגובות
  • 0 הצבעות
    20 פוסטים
    238 צפיות
    dovidD

    אין הבדל בין שרת אינטרנט מקומי ללא מקומי, גם השרת שהראיתי יכול לתת תשובה לכל בקשה מבחוץ אם יגדירו למחשב דומיין וישנו את הlocalhost ל127.0.0.1. כל אתר ודף באינטרנט מקבלים את תוכן הדף שהם מציגים כטקסט שבא כתשובה מתוכנה דמויית הHttpListener.
    ולכן בעצם אתה רוצה לקרוא על שרת אינטרנט, HTTP Server.
    כיון שזה תחום רחב מידי קשה לדעת לאן להפנות אותך, אשמח לענות לך על שאלות סביב זה בנושא נפרד.

  • הוספת פרוקסי ע"י קובץ bat

    3
    0 הצבעות
    3 פוסטים
    105 צפיות
    צבי-שצ

    @ivrtikshoret כתב בהוספת פרוקסי ע"י קובץ bat:

    שלום וברכה
    אני רוצה ליצור קובץ bat שיוסיף לי כתובת פרוקסי (sock) אוטומטי בסוף זה אמור להיראות כך:
    caadf11f-a0f3-46b4-b58c-914b31af5f4e-image.png
    הצלחתי להפעיל ולכבות את הפרוקסי ע"י עריכת reg:
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
    אבל לא הצלחתי להכניס את הכתובת של הפרוקסי בתוך השדה רכיבי sock

    הערה בדרך אגב, אחרי התשובה של shraga ,
    מפסיקים בין ה locallhost, ל ip, עם נקודה פסיק ; ולא עם פסיק

  • 0 הצבעות
    9 פוסטים
    196 צפיות
    nigunN

    @כבוד-הרב כתב באיך עושים שסקריפט בגוגל סקריפט לא ירוץ בשבתות ומועדים?:

    שים לב שמדובר בשבתות וחגים ושזה יתחלף בשקיעה

    A
    תגובה 1
    תגובה אחרונה לפני יום

    אולי השרשור הזה יעזור לך
    https://tchumim.com/topic/4261/מעבר-יום-בשקיעה-בphp

  • טייפסקריפט - טייפ מותנה

    13
    0 הצבעות
    13 פוסטים
    141 צפיות
    חגיח

    @צדיק-תמים
    אופס 🙂
    https://www.typescriptlang.org/play?#code/C4TwDgpgBAsiAq5oF4oG8CwAoKuoEMATQgLnSgDsBXAWzOpoCMIAnKAXwBps8oqxILMmigBnYELESAlhQDmHbOwDc2AGZUKAY2DSA9hSiE9AZT00IwABay5AHnhQIAD2AQKhUVADWEEHrVYBCQAPgAKGj1CCDJ4TiN8YHwyOERIAG14AF0ASjJxFlsoAB8+Dwg1WQhCdB48AHp6qGlAiKiUVAByIkJOnNqcBqbeLQNxcgYOKFRCRPxVQdxG3igWSyoWQ0mAaigARgXeZfYnABtRaBaoNujprv5BPoGj4bxRinGRAqmZucOhlZrYAbQwFAB0wD0AFUBKwAML4C5hHL-JZNdh1XBAkELDFYbDGMwWay2MLdYideIiNT4XxkPYcFEE0zmSw2eRknqUia0enxGl0qAAJkZCyAA

  • 0 הצבעות
    4 פוסטים
    87 צפיות
    Y

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

  • קוד לבוחר פונטים בשביל C#

    1
    2 הצבעות
    1 פוסטים
    60 צפיות
    אין תגובות
  • 0 הצבעות
    9 פוסטים
    92 צפיות
    pcinfogmachP

    @dovid
    תודה רבה מאוד עזרת לי

  • 0 הצבעות
    6 פוסטים
    175 צפיות
    dovidD

    @Mordechai-0 תשובה מצויינת לאיך לעדכן אחרי, אבל השאלה עסקה בתוך כדי ועל זה נידבת בנ.ב. לכתוב שיש דוגמאות באינטרנט...

    אם עושים בלי BackgroundWorker אז הדרך היא ככה:

    progressBar1.Invoke(new Action(() => progressBar1.Value = 52));
  • בקשת עזרה עם קוד בc#

    14
    0 הצבעות
    14 פוסטים
    127 צפיות
    dovidD

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

  • 0 הצבעות
    1 פוסטים
    44 צפיות
    אין תגובות
  • 0 הצבעות
    11 פוסטים
    355 צפיות
    dovidD

    אכן.

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

    5
    0 הצבעות
    5 פוסטים
    44 צפיות
  • 0 הצבעות
    3 פוסטים
    85 צפיות
    pcinfogmachP

    מדריך בסיסי ל dapper לפשוטי העם (כמוני)
    https://www.geeksforgeeks.org/c-dapper/

  • איך לעשות הפנייה מחדש ל websocket

    1
    0 הצבעות
    1 פוסטים
    61 צפיות
    אין תגובות
  • אנגולר - תכנון סרוויס

    2
    0 הצבעות
    2 פוסטים
    63 צפיות
    קומפיונטק

    תשובה לשאלה הראשונה:
    הסרוויס צריך להכיל את כל המידע ולהפיץ אותו בכמה שיטות לקומפוננטות כך שהם יוכלו לקבל אותו באיזה צורה שהם רוצים (מידע קצר / מידע מלא), במקרה שזה ממש הרבה קוד לסרוויס אחד אולי באמת מומלץ לפצל את זה לשני סרוויסים (שמקושרים אחד לשני)

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