תכנות

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

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


  • 22 נושאים
    137 פוסטים

    שלום לכולם
    התבקשתי רבות מחברים פיתרון לבעיה הידועה לבצע מיזוג דואר, אך לשמור קובץ 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 פוסטים

    @אבי אמר בשוב, צילומי הצ'קים בבנקים:

    התעסקתי לאחרונה עם סורקים של חברת MAGTEK, הם ידידותיים ונוחים להתממשקות, אבל כמדומני שהבנקים בישראל מוכנים לקבל סריקות רק מסורקים של חברת PANINI

    @אבי איך יוצרים אתך קשר?

  • 31 נושאים
    133 פוסטים

    יש כמה נוסחאות חדשות שממש משנות את כללי המשחק בגוגל שיטס:

    CHOOSECOLS לבחירת עמודות ממערך CHOOSEROWS לבחירת שורות ממערך WRAPROWS להמרת מערך חד ממדי לרב ממדי - פריסה לשורות WRAPCOLS כנ"ל - פריסה לעמודות HSTACK ו VSTACK - הפעולה של {} אך בלי סוגריים - לא משמעותי לכאורה

    והעולה על כולנה, סוף סוף:

    LET - ליצירת משתנים.

    כל אלו מצטרפות לפונקציות שנוספו מוקדם יותר -
    https://blog.sheetgo.com/google-sheets-formulas/10-new-google-sheets-functions/

    וכלול בתוכם - LAMBDA, MAP (חלקי - לא עובד לקנן ב MAP ודומיו מערכים אחרים), פונקציות בעלות שם, וכו' ע"ש בקישור.

  • 0 הצבעות
    18 פוסטים
    267 צפיות

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

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

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

  • 1 הצבעות
    3 פוסטים
    112 צפיות

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

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

    הועבר
    7
    0 הצבעות
    7 פוסטים
    207 צפיות
  • פיתוח בוט בווצאפ

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

    @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"}}
  • 0 הצבעות
    2 פוסטים
    76 צפיות

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

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

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

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

  • כתובת להקלטת ריקווסטים

    5
    4 הצבעות
    5 פוסטים
    153 צפיות

    @ארכיטקט זה רעיון יפה. צריך פונקציית ענן + nosql כל שהוא.

  • הצגת שיטס כדף PDF רגיל או עיצוב אחר

    הועבר
    10
    0 הצבעות
    10 פוסטים
    234 צפיות

    @mekev סליחה, התכוונתי לאפשרות דומה לדוגמה של @חוקר , לכתוב:
    https://docs.google.com/spreadsheets/d/FILE_ID/preview

    כמו שכתבו במדריך | שימוש מתקדם עם לינקים בגוגל דרייב

    אבל לפי רמת הידע שלי - זה מאוד קשה לעבוד על עיצוב יפה כך...

    יש אפשרות להצגה כ HTML?
    או יותר טוב - האם יש אתר חינמי שנותן אפשרויות משחק לעיצוב (אני לא יודע עדיין איך אני רוצה לעצב, אבל צריך כלים לנסות לשחק עם זה...) כמו https://www.glideapps.com/ שגם בו האופציה החינמית מוגבלת מדי במספר השורות...

  • זליגת זיכרון ubuntu

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

    @yossiz אמר בזליגת זיכרון ubuntu:

    @chagold אני רק מבהיר שלא נתתי רמז של הבטחה שאין שאירויות. ורוב הסיכויים שיש. או שזה יחזור דרך החור המקורי.

    @חוקר אמר בזליגת זיכרון ubuntu:

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

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

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

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

  • עזרה באפיון ודרך בניה

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

    @צבי-ש
    מה רע בffmpeg?

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

    @שואף אמר בלהעביר שרת מחברה לחברה ע"י תמונה - (snapshots- image):

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

    @aaron אמר בלהעביר שרת מחברה לחברה ע"י תמונה - (snapshots- image):

    אתה פשוט צריך להעלות מערכת הצלה ב2 השרתים ולהשתמש בDD כדי להעביר את הדיסק קומפלט.

  • מסד נתונים כטבלא בשני ממדים

    הועבר
    17
    0 הצבעות
    17 פוסטים
    254 צפיות
  • קוד פתוח לניהול מסד נתונים

    הועבר
    10
    0 הצבעות
    10 פוסטים
    363 צפיות

    @שמואל4 צודק, אלא שגם לזה התכוונתי. אבל לא ב PHP.

  • התנהגות מוזרה של PHPMYADMIN

    הועבר
    11
    0 הצבעות
    11 פוסטים
    184 צפיות

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

  • 1 הצבעות
    9 פוסטים
    325 צפיות

    @משתמש-מקצוען ניתן לעשות שימוש במחלקה ManagementEventWatcher על מנת להירשם לאירועים במערכת המתאימים לשאילתות מותאמות אישית.

    להלן מחלקה היפותטית לחלוטין אשר דוגמת את InstanceCreationEvent מדי 2 שניות על מנת לגלות ערכים חדשים מסוג Win32_DiskDrive (השימוש בWin32_DeviceChangeEvent אינו יתכן במקרה זה, משום שאינו מכיל כל מידע על המכשיר) במידה וערך חדש מסוג Win32_DiskDrive אכן נוצר, המתודה DeviceInsertedEvent שרשמנו כEvent handler תרוץ, במידה והמכשיר המסויים כבר התחבר בעבר, אנו נדפיס את הSerial Number לקונסול, במידה ולא, אנו נכניס אותו לרשימה של המכשירים המוכרים (familiarSerialNumbers), כך שהSerial Number יודפס בפעם הבאה שהמכשיר יחובר.

    class FamiliarDeviceDetection { private readonly string _query = "SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_DiskDrive'"; private readonly List<string> _familiarSerialNumbers = new(); public FamiliarDeviceDetection() { var watcher = new ManagementEventWatcher(); watcher.Query = new WqlEventQuery(_query); watcher.EventArrived += DeviceInsertedEvent; watcher.Start(); } private void DeviceInsertedEvent(object sender, EventArrivedEventArgs e) { var device = (ManagementBaseObject)e.NewEvent["TargetInstance"]; if (device["SerialNumber"].ToString() is var serialNumber && _familiarSerialNumbers.Contains(serialNumber)) { Console.WriteLine(serialNumber); } else _familiarSerialNumbers.Add(serialNumber); } }

     
    דוגמא לשימוש במחלקה הנ"ל באפליקציית Console:

    public void Main() { new FamiliarDeviceDetection(); Console.ReadLine(); // comment out unless in console application }

    על מנת להשתמש בManagementEventWatcher יש להוסיף לפרויקט את הספרייה System.Management אשר הייתה בעבר חלק מהFramework, אולם הושמטה במעבר לCore עקב היותה מותאמת לסביבת ווינדוס בלבד (במטרה לטהר את הפלטפורמה ממחלקות אשר אינן מותאמות לריצה על לינוקס ו-MacOS) WMI עושה שימוש בDCOM (טכנולוגיה השייכת ופועלת ע"ג ווינדוס בלבד).

    ניתן להוסיף את הספרייה באמצעות הפקודה:

    dotnet add package System.Management

    לחלופין ע"י הוספת השורה הבאה לקובץ הפרויקט (csproj):

    <ItemGroup> <PackageReference Include="System.Management" Version="6.0.0" /> </ItemGroup>

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

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

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

  • LEFT JOIN לא מציג את השורות שאין התאמה

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

    @יוס תמחק את , product.orderId, זה מיותר.

  • שפת תכנות GOlang

    הועבר
    13
    0 הצבעות
    13 פוסטים
    405 צפיות

    @yossiz אמר בשפת תכנות GOlang:

    זכור לי שיש את זה בעברית אבל אני לא מוצא את זה כרגע

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

    @לעזור-לכולם

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

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

    בשימוש בחברות קצת יותר קשה למדוד את השימוש, בסקרים של SOF נראה לי שGO מקבל משהו כמו 10% שזה יפה לשפה יחסית חדשה.

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

    @Shaya
    עשיתי בספריה שהפנית אליה. גם שם אני לא מסתדר עם הבעיה,
    אם אפשרי לכוין אותי איך אני מגדיר את הגלילה שתסתפק בשטח שלה ולא שגלילה תגלול את כל הדף.
    תודה
    https://codesandbox.io/s/gracious-goldberg-wd8w3b?file=/src/App.vue

  • שליפת סיומת קובץ - לפי שם הקובץ (C#)

    הועבר
    15
    0 הצבעות
    15 פוסטים
    232 צפיות

    @mekev

    בדקתי כעת בתוכנת 'חשבשבת'
    ואכן בצירוף קובץ - נשמר שם הקובץ + הסיומת (ללא הנתיב, אלא הפניה יחסית)

    f2ab78ce-1543-4d34-b9b2-753a3c118021-image.png

    b8bba4cc-7310-4a08-8a86-d385d73eb0e3-image.png

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