דילוג לתוכן

תכנות

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 - GROUP BY HEBREW MONTH ?

    הועבר
    12
    0 הצבעות
    12 פוסטים
    489 צפיות
    dovidD

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

  • pyqt5 -שילוב Qcombobox בתפריט Qmenu

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

    @הפצת-אנקי הקוד הבא עובד:

    import sys from PyQt6.QtCore import QObject from PyQt6.QtGui import QIcon, QFont, QCursor from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QFontComboBox, QWidgetAction, QMenu, QPushButton class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle("Pyside2 FontCombo Box") self.setGeometry(300,200,300,250) self.setFontBox() self.setIcon() self.show() def setIcon(self): appIcon = QIcon("icon.png") self.setWindowIcon(appIcon) def setFontBox(self): self.font_button = QPushButton(self) self.font_button.setFixedWidth(300) self.font_button.clicked.connect(self.setFontmenu) vbox = QVBoxLayout() vbox.addWidget(self.font_button) self.setLayout(vbox) def setFontmenu(self): self.font_menu = QMenu() self.font_submenu = QFontComboBox() self.font_submenu.setCurrentFont(QFont("Arial")) objectTest = QObject() widget = QWidgetAction(objectTest) widget.setDefaultWidget(self.font_submenu) self.font_menu.addAction(widget) self.font_submenu.currentFontChanged.connect(self._changed) self.font_menu.exec(QCursor.pos()) def _changed(self): font = self.font_submenu.currentFont().family() self.font_menu.close() print(font) return myapp = QApplication(sys.argv) window = Window() myapp.exec() sys.exit()

    (שניתי ל-pyqt6 כי לא הצלחתי להתקין גירסה 5, הקוד פחות או יותר זהה עבור 5)
    הבעיה היתה שפונקציית QMenu.exec חוזרת רק אחרי שהתפריט נסגר

  • ביל גייטס - תודה!

    21
    15 הצבעות
    21 פוסטים
    679 צפיות
    צדיק תמיםצ

    @dovid אמר בביל גייטס - תודה!:

    "target": "es6",

    זה לא מאפשר להשתמש בתכונות מסוימות, כגון replaceAll... עדיף לכאורה להגדיר

    "target": "es2021",
  • צאט בוט במייל | איך מומלץ לעשות?

    10
    1 הצבעות
    10 פוסטים
    212 צפיות
    dovidD

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

  • טריגר בקבלת מייל חדש

    16
    0 הצבעות
    16 פוסטים
    363 צפיות
    צדיק תמיםצ

    @גמליאל אמר בטריגר בקבלת מייל חדש:

    Gmail זה כבר לא פתרון טוב (מלפני יומיים...). החל מה1/6 הם ביטלו את האפשרות לאבטחה נמוכה על החשבון, מה שנתן בעבר את האפשרות להשתמש בחשבון דרך אפליקציות צד שלישי.

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

  • מספר עשרוני בVBA אקסס

    6
    1 הצבעות
    6 פוסטים
    117 צפיות
    א

    @OdedDvir אוקיי, טוב לדעת.
    תודה!

  • קוד שגיאה 127 בהרצת קובץ SH

    הועבר
    12
    0 הצבעות
    12 פוסטים
    403 צפיות
    nigunN

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

  • חילוץ נתונים מטאורלוגיים מקובץ geoTiff

    8
    0 הצבעות
    8 פוסטים
    261 צפיות
    nigunN

    @davidnead אמר בחילוץ נתונים מטאורלוגיים מקובץ geoTiff:

    וכמו שאמרת רובם ב-R שאין לי שום ניסיון איתו

    לא התכוונתי שתעבור ללמוד R
    אלא לעבור על הקוד ולקרוא בעיקר את ההערות
    אולי לעבור גם על מדריך בסיסי לסינטקסט של R בסגנון הזה

    ואז יש סיכוי סביר שתבין את מבנה הקובץ של worldclim (שיתכן ששונה קצת מקבצים של חברות אחרות) ותיישם את זה בJS.

  • כיצד לשלוף מידע משתי טבלאות הנמצאות בשרתים שונים - SQL

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

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

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

  • 15 הצבעות
    7 פוסטים
    500 צפיות
    א

    @OdedDvir אמר במנשר - אזהרה לציבור הצעיר לא להתפתות להתקרב למסגרת ישות של מייקרוסטופ:

    migrations ("הַגִירוֹת" בלע"ז... )

    סתם שתדע הכלי הכי מתאים לניהול פרוייקט של דטה בייסים הוא ויזואל סטודיו ומומלץ ביותר על ידי ה DBAים
    הוא גם יודע לעשות ריפקטורינג ומקמפל את הפרוייקט לפני שהוא מעדכן את הדטה בייס כמובן תומך בGIT מטבע הדברים ועוד ועוד.

  • השוואה בין שתי פקודות js

    הועבר
    2
    0 הצבעות
    2 פוסטים
    131 צפיות
    צדיק תמיםצ

    @ivrtikshoret אתה מתכוון לזה?

  • תקלה גוגל סקריפט שולח כל מייל שמתקבל פעמיים

    הועבר
    2
    0 הצבעות
    2 פוסטים
    151 צפיות
    צבי-שצ

    @מנצפכ

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

  • שינוי גודל כתב שמסומן ע"י העכבר JS

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

    לא הצלחתי.
    אני מעלה לכאן את התוסף המלא שמוסיף תפריט הגדלת טקסט לעורך הכרטיסים של אנקי
    c465b4a4-7727-4814-a142-c4255410c646-image.png
    לעת עתה, כל שבעת האפשרויות שבתפריט גודל כתב שולחות קריאה לפונקציית JS כפי שאסביר תכף.
    נכון לעכשיו הצלחתי להגדיל ולהקטין את הכתב באמצעות הפונקציה

    setFormat("fontSize", "7");

    שהיא פונקציה תוצרת אנקי שבעצם שולחת קריאה ל

    'document.execCommand

    עם הפרמטרים ששולחים לה. לא ברור לי למה למפתח התוכנה לא היה טוב להשתמש בפונקציה המקורית.
    הבעיה בשיטה הזאת היא שיש מגבלה של גודל טקסט בין 1 ל7 ולא יותר. כמו כן הארגומנט fontName שאמור לשנות את הפונט לא עושה את עבודתו משום מה (בכרום נורמלי זה כן עבד)
    מצורף גם קובץ הJS שמכיל את הפונקציה המובנית הנ"ל. (הוצא באמצעות כלי הפיתוח של אנקי- מקבילים לכלי פיתוח בדפדפן כרום.)
    אם זה משנה למשהו- תצוגת הweb של התוכנה מבוססת על chrome 77.
    מבחינת ידע בJS- הפונקציה שעליה עבדתי נמצאת בקובץ remove_linebreaks שנמצא בתיקיית התוספים של אנקי. משורה 128 עד שורה 148.
    ניתן להגיע לתיקיית התוספים באמצעות הנתיב הבא:

    C:\Users\%USERNAME%\AppData\Roaming\Anki2\addons21\

    הקריאה לפונקציה נמצאת בשורה 159.
    שאר הקובץ כתוב בפייתון.
    תוסף הגדלת גופן.exe
    ספריית JS של עורך אנקי.js
    אני מצרף גם את מה שכבר הספקתי לחלץ מהספריה
    של אנקי הנ"ל להבנת הענין

    // מחזיר שדה נוכחי function Un(){return document.activeElement instanceof ri?document.activeElement:null} var ri=class extends HTMLDivElement{constructor(){super();this.attachShadow({mode:"open"}),this.className="field",document.documentElement.classList.contains("night-mode")&&this.classList.add("night-mode"); //שינוי ועריכת כתב function ua(r,t,o=!1){document.execCommand('fontSize',false,'3'),o||(fo(Un(),"key"),$r(new Event(r)))} //////////////////////?????????? function fo(r,t){ac(),lr(`${t}:${r.ord}:${$s()}:${r.fieldHTML}`)} function ac(){Ts&&(clearTimeout(Ts),Ts=null)} Ts=setTimeout(()=>fo(r,"key"),600) function lr(r,t){window.bridgeCommand(r,t)}

    ניתן להוריד את אנקי וכלי הפיתוח מהנושא הזה.
    תודה רבה!

  • עזרה - שגיאה באימות מול Microsoft Azure (STT)

    7
    1 הצבעות
    7 פוסטים
    187 צפיות
    צדיק תמיםצ

    @yossiz 👏 אלוף אמיתי!
    עוד לא הספקתי להעלות את הקוד לשרת כדי לבדוק, וכבר הבאת פתרון... אכן עם הדגל הזה זה עובד חלק!

  • יש מה לנסות? SQL ענק ומלא שאילתות וחישובים

    18
    0 הצבעות
    18 פוסטים
    461 צפיות
    ש

    @ארכיטקט אמר ביש מה לנסות? SQL ענק ומלא שאילתות וחישובים:

    לגבי גליונות גוגול הם מוגבלים רשמית ל 40,000 שורות, 18,278 עמודות 200 טאבים

    כן, אחרי שכתבתי גיגלתי (למה לא להיפך? ככה!, וגם כי נחמד לדבר איתך 🙂 )

  • דיבוג החור שדרכו הגיע הוירוס של הביטקוין

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

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

  • גרף מתאים להשוואת סט נתונים

    הועבר
    7
    0 הצבעות
    7 פוסטים
    270 צפיות
    WWWW

    @dovid אמר בגרף מתאים להשוואת סט נתונים:

    https://jsfiddle.net/api/post/library/pure/

    404
    That page doesn't exist.

  • פיתוח בוט בווצאפ

    הועבר
    19
    0 הצבעות
    19 פוסטים
    803 צפיות
    I

    @aaron אמר בפיתוח בוט בווצאפ:

    @צבי-ש
    https://developers.facebook.com/docs/whatsapp/cloud-api/get-started

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

    {"error":{"message":"(#100) The parameter messaging_product is required.","type":"OAuthException","code":100,"fbtrace_id":"ATaMxgH_6reZCz_FJdM9Fnh"}}
  • הורדת אקסל מוצרים/קופונים מוורדפרס

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

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

  • שימוש בפקודה curl בשרת חינמי (PHP)

    הועבר
    4
    2 הצבעות
    4 פוסטים
    191 צפיות
    yossizY

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

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