דילוג לתוכן

תכנות

4.8k נושאים 39.2k פוסטים

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


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

  • ניתוח טבלת נתונים (שאילתות מקוננות / שאילתות קבוצה) SQL

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

    @mekev לא ברור מהתמונה לפי מה אתה ממיין את השורות.

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

    http://sqlfiddle.com/#!18/0c0d6/3

    WITH cte (date, price, data, rank) AS ( SELECT *, RANK() OVER (ORDER BY date) AS rank FROM table1 ) SELECT cte.date, cte.price, cte.data FROM cte LEFT JOIN cte AS cte1 ON cte1.rank = cte.rank - 1 WHERE cte.rank = 1 OR cte1.price <> cte.price;

    הסבר קצר:
    יש שימוש ב-WITH ללכוד את הטבלה עם עמודה נוספת בשם rank שמייצגת את המיקום של העמודה בסדר המיון (פוקנציית RANK היא "פונקציית חלון")
    ואז אנחנו מחברים את הטבלה עם עצמה כדי לקבל את השורה הקודמת עם השורה הנוכחית
    ואז מסננים לפי rank = 1 שזה השורה הראשונה או שהמחיר של שורה זו לא זהה למחיר של שורה הקודמת

  • חיבור מPHP לSQLSERVER

    6
    0 הצבעות
    6 פוסטים
    232 צפיות
    שואףש

    @dovid מצאתי את הבעייה, הפעלתי הצגת השגיאה, ומופיע כדלהלן.

    The SELECT permission was denied on the object 'Alfon', database 'גמח', schema 'dbo'. )

    מה שמוזר, שבSQL STUDIO תחת לשונית אבטחה מופיעים אותם הרשאות כמו בשרת הישן
    c4ff9f55-65dc-45ee-bd74-6d84dfa767d5-image.png

  • קריאת כרטיס חכם באקסס

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

    @WWW כתב בקריאת כרטיס חכם באקסס:

    כמו כל כרטיס חכם

    ואיך עושים את זה?
    תודה!

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

    1
    0 הצבעות
    1 פוסטים
    2 צפיות
    אין תגובות
  • אקסל להוריד כפילוית מ2 עמודות

    2
    0 הצבעות
    2 פוסטים
    121 צפיות
    Y.Excel.AccessY

    @לעזור-לכולם
    כתוב פונקציה

    =FILTER(G1:G100,ISNA(MATCH(G1:G100,H1:H10,0)))
  • PHP | לדעת על משתנה האם הוא מכיל הודעת שגיאה

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

    @ש-ב-ח כתב בPHP | לדעת על משתנה האם הוא מכיל הודעת שגיאה:

    תוכל לבדוק אותו עם instanceof

    כך אכן עשיתי

    if ($err instanceof Exception){
  • RTL בVuetify 3 (בטא)

    2
    1 הצבעות
    2 פוסטים
    154 צפיות
    צדיק תמיםצ

    בסופו של דבר הצלחתי להגדיר שפה, הRTL הוא אוטומטי לפי השפה, מצרף כאן לטובת אחרים בעתיד:
    src › plugins > vuetify.js

    ... // Translations provided by Vuetify import { he, en } from 'vuetify/locale' export default createVuetify({ locale: { locale: 'he', fallback: 'en', messages: { he, en } } })
  • python

    3
    0 הצבעות
    3 פוסטים
    182 צפיות
    חגיח

    @שרה-רחל
    א.
    תיקון:

    if __name__=='__main__': print("hello world")

    ב.
    דוגמה פשוטה לדבר:
    נניח שmain.py נמצא בתוך חבילה ששמה example
    9dfb776b-9458-447c-ab0b-bafb5ac6f8fe-image.png
    main.py:

    def example(*args): print(*args) example('hello world'')

    עכשיו כשאני רוצה לייבא את הפונקציה example בקוד אחר אני עושה ככה:
    917aa3f1-85ab-45e6-8cd2-3bab59cdfdd7-image.png

    אוי.. אני רק רציתי את הפונקציה, זה מאוד לא נוח שעכשיו זה גם מריץ לי את הפונקציה example('hello world') אבל אני כן הייתי רוצה לייצא את החבילה שלי בצורה כזאת שיהיה אפשר להריץ אותה בצורה עצמאית, גם לא בשביל לייצא את הפונקציות.

    סתם מעניין אותי לדעת, מה זה __name__?

    אני אשנה את main.py

    def example(*args): print(*args) example(__name__)

    עכשיו כשאני אייבא את הפונקציה, זה ידפיס לי את __name__
    5be115c3-0392-4d95-96c1-d0eb451a83f9-image.png
    אהה.. זה השם של החבילה והמודול שלי, אבל מה יקרה אם אני אריץ את הקובץ ישירות עם פייתון?
    74e8bf0d-82c8-4a9b-a81d-54e38cf3d06a-image.png

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

    def example(*args): print(*args) if __name__ == '__main__': example(__name__)

    ועכשיו אבדוק:
    611123ed-b802-47c6-9f38-2e53ebd17ae6-image.png

    אהה יופי, בדיוק מה שרציתי.

  • w3schools python להורדה חינם

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

    @A0533057932
    הצלחתי בסוף להוריד. תודה רבה.

  • האזנה להיווצרות אלמנט בJavascript

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

    @יוסף-בן-שמעון כתב בהאזנה להיווצרות אלמנט בJavascript:

    https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
    זו הדרך המודרנית

    הנה דוגמה שכתבתי בעבר:
    https://tchumim.com/post/75807,
    במקרה שלנו:

    const config = { attributes: false, childList: true, subtree: true }; const observer = new MutationObserver( function(mutationsList) { for(let mutation of mutationsList) for(let el of mutation.addedNodes) if(el.classList.contains("composer")){ console.log(el); } } ); observer.observe(document, config);
  • שינוי DB לפי DB FIRST והגדרת 2 שדות למפתח ראשע אחד

    9
    0 הצבעות
    9 פוסטים
    277 צפיות
    clickoneC

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

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

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

    נ.ב. אם תוכלו בבקשה לפתוח אשכול נפרד לכל שאלה, זה יותר נח ככה לכולם

  • התחברות מJS ל API של PYTHON

    19
    0 הצבעות
    19 פוסטים
    570 צפיות
    A

    @שרה-רחל יעזור לראות את כל הצד שרת כדי להבין טוב יותר.
    בהנחה ומדובר בflask, אז החזרה של dict/list אמור להחזיר תשובת JSON עם ההדר הנכון.
    https://flask.palletsprojects.com/en/2.2.x/quickstart/#apis-with-json

  • עזרה די בסיסית בJAVA

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

    @Mordechay כתב בעזרה די בסיסית בJAVA:

    זה בתכנות לא באפליקציות...

    דיברתי על הקוד שהביאו כאן. לא לאפליקציות.

    @LindoorsOS כתב בעזרה די בסיסית בJAVA:

    לגבי זה, זה בסה"כ חוזר לראש - שולח לקלאס הראשי (כמו go to className() [במקום className, שם הקלאס כמובן] בפייתון)

    זה יוצר מופע חדש של inputOutputBot לא חוזר לראש.

  • התקנת SWAGGER

    4
    0 הצבעות
    4 פוסטים
    183 צפיות
    חגיח

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

  • בקשת GET I POST ב ASP.NET MVC 4

    12
    0 הצבעות
    12 פוסטים
    341 צפיות
    מ

    @ממ
    טוב....
    מחקירה רצינית בגוגל הגעתי ל2 מסקנות ---
    א. או שזה קשור לבעיה בCORS - זה מה שרשמתי בקונטרולר:
    7ebf757f-7dcf-4d6f-bee0-b8e9946dafbd-image.png
    וזה בקובץ WebApiConfig:
    ef104c78-6de2-411b-be9d-02f732f63c65-image.png
    את הקובץ WebApiConfig יצרתי לבד (העתקתי את התוכן מגוגל..) זה יכול להוות בעיה??
    ב. או שחסר לי משהו בהגדרות של XML כי כשאני מריצה פונקציה ספציפית זה מביא אותי לשגיאה הבאה:
    f7da44d4-9968-4205-8f30-1db0005a4f6d-image.png

    מישהו יכול לעזור לי -- זה ממש ממש דחוף!
    תודה רבה!

  • שגיאה בעת הרצת פרויקט ב C#

    1
    0 הצבעות
    1 פוסטים
    65 צפיות
    אין תגובות
  • הרצת פרוייקט פייתון מnodejs

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

    אני מניח שזה כבר לא רלוונטי, אבל אשים פה קישור מעניין:
    https://pyodide.org/en/stable/usage/index.html#node-js

  • 0 הצבעות
    8 פוסטים
    264 צפיות
    dovidD

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

  • google maps בתוך ג'ומלה

    2
    0 הצבעות
    2 פוסטים
    110 צפיות
    אין תגובות
  • שגיאה על DbContext.Context.SaveChanges(); ב C#

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

    @dovid
    תודה אבל כבר הסתדר

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