דילוג לתוכן

תכנות

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

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

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

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

  • דרוש מפתח WordPress

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

    הסתדרת?

  • mysql לכידת השאילתות שמעמיסות על השרת

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

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

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

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

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

    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 פוסטים
    119 צפיות
    dovidD

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

  • שיפור מהירות אתר, גישה נכונה לכל הפריטים/מוצרים.

    4
    0 הצבעות
    4 פוסטים
    90 צפיות
    אבי 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 פוסטים
    548 צפיות
    אבייא

    @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 פוסטים
    124 צפיות
    The shadowT

    @dovid אמר בHello World 😉:

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

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

    @dovid אמר בHello World 😉:

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

    למה המינוס 1?

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

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

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

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

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

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

    20
    0 הצבעות
    20 פוסטים
    203 צפיות
    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 פוסטים
    67 צפיות
    dovidD

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

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

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

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

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

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

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

  • מישהו יודע איך מוצאים רכיב כלשהו בדף ע"י JS?

    הועבר
    8
    1 הצבעות
    8 פוסטים
    252 צפיות
    ב

    ובסוגריים כותב את הפעולה. נכון?

    בתוך הסוגריים המסולסלים תכתוב את מה שאת רוצה שיהיה

  • קודי VBA לאקסס שמחזירים מידע על המערכת, קיים?

    הועבר
    4
    1 הצבעות
    4 פוסטים
    178 צפיות
    Y
    Sub Main() Set objWMIService = GetObject("winmgmts://./root/cimv2") Set ColItems = objWMIService.ExecQuery("Select * from Win32_BIOS where PrimaryBIOS = true", , 48) For Each ObjItem In ColItems strMsg = strMsg _ & " BIOS Name : " & ObjItem.Name & vbCrLf _ & " Version : " & ObjItem.Version & vbCrLf _ & " Manufacturer : " & ObjItem.Manufacturer & vbCrLf _ & " Serial Number : " & ObjItem.SerialNumber & vbCrLf _ & " SMBIOS Version : " & ObjItem.SMBIOSBIOSVersion & vbCrLf Next Debug.Print strMsg End Sub BIOS Name : Phoenix BIOS SC-T v2.1 Version : LENOVO - 2400 Manufacturer : LENOVO Serial Number : R9022X21 SMBIOS Version : GNET92WW (2.40 )

    מקור
    https://www.tek-tips.com/viewthread.cfm?qid=1105123

  • חומר בעברית ללימוד שפת C#

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

    https://www.google.com/search?q=site%3Atchumim.com+לימוד+C%23

  • עזרה לזיכוי הרבים!

    הועבר
    19
    1 הצבעות
    19 פוסטים
    1k צפיות
    אליעזר מירוןא

    למה לא תשים אינטרנט של נטפרי ותפתח בהגדרות אישיות רק מה שאתה רוצה?

  • 0 הצבעות
    12 פוסטים
    404 צפיות
    a.y.fA

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

  • עזרה דחופה באקסס

    הועבר
    2
    0 הצבעות
    2 פוסטים
    146 צפיות
    stack OVERS

    אתה יכול לבנות טופס מפוצל למעלה טופס רגיל ולמטה טופס גליון נתונים
    או לחילופין לבנות טופס ואח"כ להכניס בתור טופס משנה

  • מתכנת עצמאי כ4 שעות ביום - אפשר להתפרנס מזה?

    הועבר
    31
    2 הצבעות
    31 פוסטים
    2k צפיות
    א

    @yossiz אמר במתכנת עצמאי כ4 שעות ביום - אפשר להתפרנס מזה?:

    @dovid אמר במתכנת עצמאי כ4 שעות ביום - אפשר להתפרנס מזה?:

    https://insights.stackoverflow.com/trends?tags=vue.js%2Cangularjs

    מישהו ציני
    (אני לא...)

    הלו
    מפחיד כאן, אבל עכ"כ.

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