דילוג לתוכן

תכנות

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

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


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

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

    1
    0 הצבעות
    1 פוסטים
    1 צפיות
    אין תגובות
  • נושא זה נמחק!

    1
    0 הצבעות
    1 פוסטים
    1 צפיות
    אין תגובות
  • עזרה בAPI של ימות המשיח

    הועבר
    3
    0 הצבעות
    3 פוסטים
    176 צפיות
    איש נחמדא

    רלוונטי עדיין?

  • הפצת לינוקס כשרה

    הועבר
    8
    5 הצבעות
    8 פוסטים
    484 צפיות
    ח

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

  • אקסס | יצירת רשימה לפקד משולב

    16
    0 הצבעות
    16 פוסטים
    343 צפיות
    ליבלל

    @אביי פשוט מאוד תבנה במקור שורה שאילתא טור א' ID טור ב' ערים
    וברוחב עמודות תגדיר 0ס"מ;3ס"מ התחביר פשוט 0ס"מ לטור א' 3ס"מ לטור ב'
    שים לב: טור א' מחזיר למקור הפקד

  • פתיחת מסד נתונים בכל קריאה

    27
    1 הצבעות
    27 פוסטים
    237 צפיות
    nigunN

    @dovid
    אני לא יודע למה אבל כשהרצי מאות בקשות בלי לזרוק סגירה בכל מקום נתקעתי עם Too Many Connection
    ועכשיו זה כבר לא קורה

  • האם יש הגבלות בהגדלת שרתים בOVH?

    15
    0 הצבעות
    15 פוסטים
    140 צפיות
    nigunN

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

  • mysql סינון בטבלה מרובת שורות

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

    תכתוב שאילתה כזו בphpmyadmin, ובדוק את הexplain שלה.

  • דרוש מפתח WordPress

    2
    0 הצבעות
    2 פוסטים
    48 צפיות
    ש

    הסתדרת?

  • 0 הצבעות
    2 פוסטים
    41 צפיות
    nigunN

    @חוקר
    יש כאן פקודה להגבלת הזמן לבקשות סלקט
    https://stackoverflow.com/a/23319195

  • פונקציה בPHP לאימות כרטיס אשראי

    10
    0 הצבעות
    10 פוסטים
    210 צפיות
    שואףש

    אז זהו הפיתרון שלי
    נראה שעובד תקין, קצר ולענין ב"ה

    function validateTokef($tokef) { $monthInputed = substr($tokef, 0, 2); $yearInputed = substr($tokef, 2, 2); if ( !$monthInputed or $monthInputed > 12 or $yearInputed < date('y') or $yearInputed > (date('y') + 15) or ($yearInputed == date('y') and $monthInputed < date('m')) ) return false; else return true; } function validateCreditCard($card) { $pattern = '#4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|6(?:011|5[0-9]{2})[0-9]{12}|(?:2131|1800|35\d{3})\d{11}#'; if (!preg_match($pattern, $card)) return false; if (!luhnTest($card)) return false; return true; } function luhnTest($num) { $str = ''; foreach (array_reverse(str_split($num)) as $i => $c) $str .= ($i % 2 ? $c * 2 : $c); return array_sum(str_split($str)) % 10 == 0; }
  • משתנה מסוג מערך ב sqlite

    הועבר
    3
    0 הצבעות
    3 פוסטים
    101 צפיות
    dovidD

    אני מבין שמדובר בSQLalchemy, דוקא יש שמה טיפוס ARRAY אבל הוא נתמך רק בPostgreSQL.
    אני רואה באינטרנט (חיפוש sqlalchemy sqlite list field) פתרונות שונים - פה שימוש בטבלה ייעודית עם שדה מקושר https://stackoverflow.com/a/7300417/1271037.
    אבל זה נראה שאין דרך קלה - תוכלו לנהל את זה בעצמכם עם טקסט מופרד בתו כל שהוא כמו פסיק, וכמו ש@chagold הציע.

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

    @dovid תודה. הספרייה של corvid מוגבלת כך שתמיד אני נעזר בספרייה הכללית, אלא שלא לפי הסדר, רק למה שאני נזקק, לא תמיד יש את הזמן ללמידה לפי הסדר, אבל מקבל את המלצתך, וקורא יותר בר זיק למשל..

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

    let queryResults; let queryResults3; let queryResults4; $w.onReady(async function () { queryResults = await wixData.query("muzarim") .descending("seder") .limit(10) .find(); $w('#repeater1').data = queryResults.items; // await repeater1_itemReady() console.log("1"); loadRemaining(); }); // var dataa = []; async function loadRemaining() { queryResults3 = await wixData.query("muzarim") .descending("seder") .skip(10) .find(); let data = $w('#repeater1').data; let data3 = await data.concat(queryResults3.items); console.log(data3); return data3.items.map((item) => { return { "_id": item._id, "sem": item.sem, "mkt": item.mkt, "imeg": item.imeg, "mehir": item.mehir, "link1": item["link-muzarim-sem"], "link2":item["link-muzarim-editor-_id"] }; } ); var myJSON = JSON.stringify(data3) memory.setItem("data3", myJSON) } export function repeater1_itemReady($item, itemData, index) { $item('#mehir').text = itemData.mehir; $item('#sem').text = itemData.sem; $item('#mkt').text = itemData.mkt; $item('#image9').src = itemData.imeg; $item('#button114').link = itemData["link-muzarim-sem"]; $item('#button102').link = itemData["link-muzarim-editor-_id"]; }

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

    let key = event.key; if (key === "Enter") { let muzarim = memory.getItem("data3") var muzarim2 = JSON.parse(muzarim); const data = muzarim2.filter(d => d.mkt.includes($w('#mktinput').value)); $w('#repeater1').data = data; {

    תודה בכל אופן.

  • קוד לקריאת ערכים מהרגיסטרי (בתשלום)

    35
    0 הצבעות
    35 פוסטים
    316 צפיות
    אבייא

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

    <Application x:Class="WpfApp4.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApp4" Startup="Application_Startup"> <Application.Resources> </Application.Resources> </Application> namespace WpfApp4 { /// <summary> /// Interaction logic for App.xaml /// </summary> public partial class App : Application { private void Application_Startup(object sender, StartupEventArgs e) { var a = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"HKEY_LOCAL_MACHINE\SOFTWARE\abao")?.GetValue("License").ToString(); var b = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"HKEY_LOCAL_MACHINE\SOFTWARE\abaou")?.GetValue("License").ToString(); if (a == "12345" && b == "12345") { System.Diagnostics.Process.Start("C:\\Program Files (x86)\\abaye\\baye.accdb"); } } } }
  • Hello World 😉

    3
    1 הצבעות
    3 פוסטים
    105 צפיות
    The shadowT

    @dovid אמר בHello World 😉:

    למשל לכאורה הוא יקרוס אם מישהו ינקה את הסינונים

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

    @dovid אמר בHello World 😉:

    כעת שאלות:
    ActiveWorkbook.SlicerCaches(SlicerYear).SlicerItems.Count - 1

    למה המינוס 1?

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

    ותודה על העידוד!
    מחזק!

  • מה קרה למסד הנתונים שלי ?

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

    אותו דבר גם בהתחברות ישירות משורת הפקודה
    או התחברות מ PHP

  • תוך כמה זמן מקבלים אישור לתוסף CHROME

    20
    0 הצבעות
    20 פוסטים
    109 צפיות
    WWWW

    @מנצפך אמר בתוך כמה זמן מקבלים אישור לתוסף CHROME:

    @WWW
    אפשר להסביר מהו הטריק להעלאת תוסף לא חתום?

    @yossiz אמר בשיתוף: 🔖 סימניה להורדת תוסף כרום:

    זכור לי שבעבר זה עבד לי. אבל עכשיו שאני מנסה אני לא מצליח...
    אולי שינו משהו?
    מה שכן עובד לי זה זה:

    reg add HKLM\Software\Policies\Google\Chrome\ExtensionInstallSources /v 1 /t REG_SZ /d "<all_urls>"

    זה מאשר תוספים מכל מקום

    אתה יכול להעלות את זה לרשת, ומי שהגדיר כנ"ל, יוכל להתקינו ע"י גישה לURL של הקובץ.

  • תוכנה לערפול קוד .NET

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

    אני חושב שConfuserEx הוא הרלוונטי למרות שהוא הפסיק את הפיתוח רשמית (https://yck1509.github.io/ConfuserEx/2016/07/01/confuserex-discontinue).

  • פונטים מתאימים לכתיבת קוד

    הועבר
    1
    0 הצבעות
    1 פוסטים
    118 צפיות
    אין תגובות
  • מיזם ספריא - sefaria

    הועבר
    12
    5 הצבעות
    12 פוסטים
    1k צפיות
    ג

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

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

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

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