דילוג לתוכן

תכנות

4.9k נושאים 41.0k פוסטים

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


  • 22 נושאים
    137 פוסטים
    katzK
    שלום לכולם התבקשתי רבות מחברים פיתרון לבעיה הידועה לבצע מיזוג דואר, אך לשמור קובץ PDF נפרד לכל רשומה, עם שם מותאם אישית. אפרט כאן במדריך שלב אחר שלב איך לבצע זאת, תהיו איתי עד הסוף מקווה שתהנו... נתחיל... שלב א: ראשית בקובץ ה- Excel של רשימת הנמענים, הוסיפו לטבלת הנתונים ארבעה עמודות בשמות כדלהלן (חשוב שהשמות יהיו מדויקים ללא רווחים מיותרים - לתשומת ליבכם): DocFolderPath DocFileName PdfFolderPath PdfFileName שלב ב: צרו שתי תיקיות נפרדות, אחד לקבצי הפלט בפורמט docx, ואחד לקבצי הקלט בפורמט pdf, העתיקו את נתיב התיקייה של קבצי ה- docx והדביקו אותם עבור כל רשומה בשדה שיצרתם בשם DocFolderPath, לאחמ"כ חזרו על הפעולה והפעם העתיקו את נתיב התיקייה של קובצי ה- PDF והדביקו בשדה PdfFolderPath. בשדה DocFileName כתבו את השם של הקובץ עבור הרשומה - ניתן להשתמש בנוסחאות, כמו"כ בשדה PdfFileName כתבו את שם הקובץ כנ"ל. שלב ג: פתחו את קובץ ה- word והשלימו את פעולת המיזוג כרגיל, עצבו את המסמך כרצונכם. שלב ד: פתחו את לשונית מפתחים בקובץ ה- word פתחו את עורך הקוד הוסיפו מודל חדש מצו"ב צילום מסך: [image: 1662883665514-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 ולחצו הפעל מצו"ב צילום מסך [image: 1662883849719-3890ce69-c0e9-4f30-89ce-3e97b7de750b-image.png] כעת שבו בנחת והמתינו עד ליצירת כל הקבצים, להנאתכם תפתחו את תיקיות הפלט שיצרתם וגלו שהיא מלאה קבצים קובץ לכל רשומה בשם המתאים שהגדרתם לה. מקור
  • ארכיון האתר הקודם והחביב קוד-613

    1k 10k
    1k נושאים
    10k פוסטים
    chagoldC
    @אבי אמר בשוב, צילומי הצ'קים בבנקים: התעסקתי לאחרונה עם סורקים של חברת MAGTEK, הם ידידותיים ונוחים להתממשקות, אבל כמדומני שהבנקים בישראל מוכנים לקבל סריקות רק מסורקים של חברת PANINI @אבי איך יוצרים אתך קשר?
  • 31 133
    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 פוסטים
    8 צפיות
    אין תגובות
  • תכנון טבלאות לפרוייקט

    נעול
    22
    0 הצבעות
    22 פוסטים
    206 צפיות
    dovidD
    @eido כתב בתכנון טבלאות לפרוייקט: @צבי-ש אני חושב שזה לא כ"כ יועיל, כי הרי צריך לשמור בצמוד את המספר המדורג, ואז כבר יודעים את המספר המדורג, כל מה שנשאר זה להוסיף את המספר המדרג, שזה בעצם כמו פשוט לעבור על המספר המדרג לבד... למרות שהנושא סגור, חשוב לי שתדע שהוא התייחס באותה הודעה לבעיה שאתה מעלה והסביר איך להסתדר עם זה.
  • BD עדיפות למבנה טבלאות

    4
    0 הצבעות
    4 פוסטים
    55 צפיות
    dovidD
    נכון, אני לשיטתי שלא להשתמש בENUM, בטח בכזה מקרה. זה מצויין בשביל לאכוף שלמות, עקביות וכל המילים האלה, אבל אני כיום מסתכל על מסד נתונים יותר כעל טכניקת שמירה מאשר כעל פרוטוקול אבטחת תוכנה, ולכן אני חושב שכל מה שמקשה על פיתוח מרכזי של האפלקיציה בקוד, הוא הגדרה "מרגיזה". ENUM גורם לכך שיצטרכו לשנות במסד גם כשאין שינוי בעיצוב ההתנהגות, ולכן אני פוסל את השימוש בו. כמו כן לעיתים קרובות במקביל למסד יש התייחסות קשיחה גם בקוד (שהרי הוא צריך לוודא וגם למלא את הנתון) וממילא יש פה גם פיזור שעומד בסתירה לDRY ולעוד פרנציפ בשם Single Source of Truth.
  • Home Assistant ונטפרי

    7
    0 הצבעות
    7 פוסטים
    223 צפיות
    MordechayM
    לא אפשרי, זה מערכת הפעלה של home assistant וזה לא אפשרי (אלא אם כן יבצעו עריכה), רק בהתקנת דוקר אפשר https://www.home-assistant.io/installation/linux#install-home-assistant-container (זה לא עובד בווידנוס)
  • הפעלת תהליך נוד מחדש לקובץ ספציפי - הגיוני?

    7
    0 הצבעות
    7 פוסטים
    95 צפיות
    צדיק תמיםצ
    @צבי-ש כתב בהפעלת תהליך נוד מחדש לקובץ ספציפי - הגיוני?: נכון, כי זה נשמר לקואלית, לא מורכב לשייך את כל הנתונים שיישמרו בredis או מסד חיצוני מהיר אחר, ולא יורגש כמעט ההבדל במהירות במהלך השיחה, וזה כן יישמור נתונים אחרי ריסטארט בכללי הטריק של הספריה הוא שאתה כותב קוד שרץ רק פעם אחת ואז התשובה של הread שמורה בזיכרון ולא שכל פעם הקוד רץ מחדש ואתה צריך לבדוק אם הפרמטר כבר קיים ממילא ברגע שאתה מפעיל מחדש את התהליך הפונקציה כבר לא קיימת ואין דרך לא לאפס את הריצה, וגם אם היה לך דרך לשמר את הפונקציה רצה אז זה היה גרסה ישנה שלה ולא היה עוזר לך לפיתוח היתרון של זה הוא שהכתיבה והדיבוג מאוד פשוטים, הקוד רץ מלמעלה ללמטה ברצף אם אתה עושה שהקוד כן ירוץ מחדש רק יקח את הנתונים מהזיכרון, אז פעולות שהן לא idempotent כמו נניח שליחת מייל יהיה צריך לעטוף ככה בערך const name = await call.read([{ type: ‘text’, data: ‘מה שמך?’ }]) await call.once(async () => { await db.insert({ name }) await sendEmail(name) console.log(‘נשמר!’) }) const age = await call.read([{ type: ‘text’, data: ‘מה גילך?’ }]) @ששא בכל מקרה מה שהצעת לא יעזור לך לעניין של איפוס הסטייט בפיתוח ולפרודקשן עדיף לדעתי שיטות יותר פשוטות של החלפת התהליך כולו
  • מדריך טוב לjs עדיף התמקדות בnode ועוד יותר עדיף - עברית

    9
    0 הצבעות
    9 פוסטים
    120 צפיות
    ש
    @eido ממליץ על קודובוקס (אם כי הם חייבו אותי היום אחרי כמה חודשים שהשבתתי את המנוי ולא ענו לי להודעות כך שמבחינת ישרות קצת יש לי סימן שאלה, אבל מבחינת הלימוד זה מאוד יפה)
  • פתיחת תוכנת פרוייקט השו"ת על ידי מאקרו מוורד

    4
    0 הצבעות
    4 פוסטים
    413 צפיות
    ד
    @האדם-החושב לאחר שנים שעזבתי את זה, בקשתי בסוף שבוע שעבר מג'מיני שיכתוב לי משהו, והוא הצליח בצורה אחרת! והנה דבריו: זוהי תקלה קלאסית של SendKeys. מה שקורה זה שווינדוס שולח את האות "V" לפני שהספיק "להחזיק" את מקש ה-Ctrl בזיכרון של תוכנת היעד, ולכן במקום הדבקה מתקבלת האות עצמה. כדי לפתור זאת בצורה מקצועית ויציבה, נשתמש בשיטה שנקראת Windows API. במקום "לבקש" מהמערכת ללחוץ על מקשים, אנחנו נדמה לחיצה פיזית על המקלדת. זה הרבה יותר אמין. ' הצהרות עבור המקלדת והשהיה #If VBA7 Then Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Public Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As LongPtr) #Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) #End If ' קבועים עבור המקשים Const VK_CONTROL As Byte = &H11 Const VK_V As Byte = &H56 Const KEYEVENTF_KEYUP As Long = &H2 Sub תוכנת_חיפוש_מתוקן() On Error Resume Next ' 1. העתקה בטוחה מוורד Selection.Copy DoEvents Sleep 200 ' זמן קצר לוודא שהטקסט בלוח Dim AppPid As Long AppPid = GetFirstPid("Responsa") ' 2. מעבר לתוכנה If AppPid = 0 Then AppPid = Shell("C:\Program Files (x86)\ResponsaCD29\RESPONSA.exe", vbNormalFocus) Sleep 2500 ' המתנה ארוכה יותר להפעלה ראשונית Else AppActivate AppPid Sleep 600 ' זמן למערכת להעביר פוקוס לחלון End If On Error GoTo 0 ' 3. שליחת F4 לפתיחת חלון החיפוש SendKeys "{F4}", True Sleep 500 ' המתנה קריטית לפתיחת תיבת הטקסט בתוכנה ' 4. הדבקה באמצעות דימוי לחיצת מקשים פיזית (Control + V) keybd_event VK_CONTROL, 0, 0, 0 ' לחיצה על Ctrl keybd_event VK_V, 0, 0, 0 ' לחיצה על V Sleep 100 keybd_event VK_V, 0, KEYEVENTF_KEYUP, 0 ' שחרור V keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0 ' שחרור Ctrl Sleep 300 ' 5. אישור (Enter) SendKeys "{ENTER}", True End Sub Private Function GetFirstPid(applicationName As String) As Long Dim services As Object, processes As Object, process As Object Dim resultPid As Long Set services = GetObject("winmgmts:\\.\root\CIMV2") Set processes = services.ExecQuery("SELECT ProcessID FROM Win32_Process WHERE Name LIKE '%" & applicationName & "%'", , 48) For Each process In processes resultPid = process.ProcessID Exit For Next Set processes = Nothing Set services = Nothing GetFirstPid = resultPid End Function מה תיקנו כאן? שימוש ב-keybd_event: במקום לשלוח פקודת ^v שמתפרשת לעיתים כסתם v, אנחנו אומרים למחשב: "תלחץ על קונטרול, עכשיו תלחץ על V, עכשיו תשחרר". זה מונע את כתיבת האות V. הגדלת ה-Sleep אחרי ה-F4: בתוכנה שציינת, לעיתים לוקח לחלון החיפוש חצי שנייה להיפתח. אם ננסה להדביק מיד, הטקסט "ייזרק" לאוויר ולא ייכנס לתיבת הטקסט. סדר פעולות: הוספנו DoEvents ו-Sleep קטן אחרי ההעתקה כדי לוודא שוורד לא "משחרר" את הפעולה לפני שהטקסט באמת מוכן בזיכרון.
  • נושא זה נמחק!

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

    2
    0 הצבעות
    2 פוסטים
    89 צפיות
    dovidD
    עונה לך ממה שקלוד מציע לי: מחשב ישן שלא תומך בהאצת חומרה, או תיקיית userData לא ניתנת לכתיבה, או runtime לא עדכני של webview. את האחרון לא הבנתי, השני לא סביר, הראשון ניתן לפתרון על ידי הוספת פרמטר "--disable-gpu" אבל זה לא כדאי לעשות את זה לכולם בגלל המעטים, אולי לתת לזה אפשרות בהגדרות.
  • קריאה ל-openfiledialog מ-webview ב-C# דרך js

    3
    0 הצבעות
    3 פוסטים
    39 צפיות
    pcinfogmachP
    @dovid כמו שאמרת דרך post הפתרון שמצאתי הוא להשתמש עם begininvoke רוב תודות!
  • דרושים מתכנתי (בעיקר) node וyemot router

    8
    0 הצבעות
    8 פוסטים
    139 צפיות
    E
    stamandsefer של גימייל
  • nodejs תקינות פונקציה

    נעול
    5
    0 הצבעות
    5 פוסטים
    90 צפיות
    dovidD
    @eido כתב בnodejs תקינות פונקציה: אולי תמקד אותי איפה הבעיה? איזה חלק פספסתי כאן? שפת JS. אתה פשוט לא מכיר אותה (הAI דוקא אמור להכיר). זה לא שונה משאר השפות, אולי גם אותם אתה לא מכיר, לא בדקתי מספיק. אני נועל את הנושא, תחזור לפורום רק אחרי מעבר טוב ותרגול של מדריך בשפה עליה תרצה לשאול. בהצלחה.
  • עבודה נכונה עם sql/מסדי נתונים

    9
    0 הצבעות
    9 פוסטים
    185 צפיות
    E
    @י.פל. התכוונתי, שלי בתור בונה המערכת אין בעיה, אבל יום יבוא ואעביר אותה למי שהזמין אותה, והוא ירצה להוסיף תקופות, לדעתי יהיה לו קצת קשה להוסיף את זה, לא כי זה קשה, כי אנשים לא יודעים איך להתעסק עם זה (ואני לא מתעסק עם GUI) במיוחד אם זה מערכת שמיועדת לשימוש של לקוחות (לדוגמא מערכת ivr) אז יצטרך להוסיף את הפרטים גם במערכת וגם בDB. אם הוא היה כתוב בטבלה הראשית, א. היה יותר קריא. ב. מוסיפים בקובץ שהרשימה נמצאת בו את התקופה המבוקשת וכשיוסיפו מודעה היא תכנס כבר עם המידע הזה בלי הצורך המגע בDB עצמו.
  • ימות המשיח השמעת הודעת קמפיין בכניסה לשלוחת API - מי מכיר?

    6
    0 הצבעות
    6 פוסטים
    150 צפיות
    א
    @האדם-החושב תודה! רק עכשיו ראיתי, עובד מעולה. עזרת לי מאוד.
  • יש כאן מישהו שהתנסה בN8N?

    2
    0 הצבעות
    2 פוסטים
    85 צפיות
    אין תגובות
  • סליקת אשראי בAPI בימות המשיח עם הספריה yemot-router2

    2
    0 הצבעות
    2 פוסטים
    202 צפיות
    אבייא
    @ענן אתה לא משתמש נכון עם call.blockRunningUntilNextRequest(), הפונקציה call.blockRunningUntilNextRequest() עוצרת את הריצה עד לקבלת התגובה מימות המשיח, אבל היא עצמה (וכן הsend) לא מחזירים ערך כלשהו, אלא לאחר קבלת התגובה מימות המשיח (מיד לאחר שהקוד ימשיך את השורה שאחרי call.blockRunningUntilNextRequest) הערכים יהיו זמינים בcall.values תנסה את זה ככה: call.send(`credit_card=yaad_pay,120,,1,1,,c822d035,765656546,654665,all,,,,,GoBack,`); await call.blockRunningUntilNextRequest(); console.log('payment response:'); console.log(call.values); console.log('CreditCard_CODE:', call.values.CreditCard_CODE); console.log('CreditCard_All:', call.values.CreditCard_All); await call.id_list_message([{ type: 'text', data: 'סליקת האשראי הסתיימה' }], { prependToNextAction: true }); return true; הוספתי לך גם פלט של CreditCard_CODE וCreditCard_All שהם הפרמטרים הרלוונטיים שחוזרים מימות המשיח, CreditCard_CODE הוא סטטוס העסקה וCreditCard_All מכיל את המידע שימות המשיח קיבלו מחברת האשראי (כי הגדרת all)
  • LLM (לא כבד מידי) שתומך בעברית + rag, מישהו מכיר?

    7
    0 הצבעות
    7 פוסטים
    165 צפיות
    E
    @dovid כתב בLLM (לא כבד מידי) שתומך בעברית + rag, מישהו מכיר?: @eido כתב בLLM (לא כבד מידי) שתומך בעברית + rag, מישהו מכיר?: לא צריך בקשות, זה cli לא פיללתי שcli יותר טוב מבקשות. יותר מהיר, לא? ככה לפחות נראה לי. הבעיה עם API זה בעיקר המחיר, כי זה כולל המרה לטקסט, שאילתא והמרה חזרה לאודיו. לולי האודיו המחיר ממש ממש נמוך, ואם להמרה מאודיו לטקסט וחזרה אתה רוצה AI מקומי, אז תדע שאפילו בשירות חיצוני זה רחוק מלהיות מושלם, אני ממש מתפלא אם יהיה משהו מקומי נורמלי. נכון, אבל בגלל שזה כולל אודיו, אז זה משמועתי. וגם הדיבור של ג'ימני בלייב, ל אלטעמי.
  • 0 הצבעות
    4 פוסטים
    155 צפיות
    YoungBoyY
    אפשר להשתמש (לכאורה, אני המון זמן כבר לא משתמש במייק) בצומת של PostgreSQL ולשלוח קריאת SQL רגילה. ואז אפשר לכתוב כמה שאילתות ובקשות באותה אופרציה. אימתתי מול GPT, לא בדקתי בעצמי.
  • שיתוף | סקריפט פייתון להורדת פודקאסטים

    9
    7 הצבעות
    9 פוסטים
    881 צפיות
    משה ברוך 00מ
    תודה וסליחה...
  • תוספי VSC לא מצליחים לערוך את הקודים

    6
    0 הצבעות
    6 פוסטים
    225 צפיות
    מדמ
    לבסוף נזכרתי ששיניתי את שם המחשב שלי, אולי זה גרם לכל הבעיות. למעשה נתן לי GPT רשימה של כל המקומות שVSC וGIT שומר את קבצי ההגדרות וכו' שלהם, מחקתי את כולם והבעיה נעלמה ב"ה.
בא תתחבר לדף היומי!