דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
OdedDvirO

OdedDvir

@OdedDvir
אודות
פוסטים
2.4k
נושאים
61
שיתופים
0
קבוצות
0
עוקבים
21
עוקב אחרי
0

פוסטים

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

  • אקסל | דרושה נוסחה לבדיקת תקינות מס חשבון בנק
    OdedDvirO OdedDvir

    די מהר מצאתי את הפרוייקט הזה בגיטהב, מלפני שנתיים, נראה לגיטימי: https://github.com/soryy708/il-bank-account-validator. היתה רק בעיה קטנה: הוא כתוב ב-JS.

    אז בגלל שזה נראה לי דבר שימושי, או בגלל שהיה קשה לי להאמין שזה לא זמין לציבור, אולי בגלל השעה... בכל מקרה, נתתי ל ChatGPT לעשות את התרגום הראשוני ל-VB, כמובן שאח"כ הייתי צריך להוסיף ולתקן כמה דברים (חריגות אינדקסים במערכים, הוספת פונקציה במקום השמה ישירה למערך, החלפה של Integer ל-Long, ריפוד באפסים, ועוד כמה שטויות של בורות מלאכותית)
    בסופו של דבר, בדקתי את הקוד מול כמה מספרי חשבונות בנק שמפורסמים ברשת (למשל כאן) וקיבלתי תוצאה תקינה.
    אז אם אתם משתמשים בקוד, ראוי שתתנו כוכב בגיטהב לפרוייקט הנ"ל. (אין לי שום קשר אליו)
    צריך לפתוח מודול חדש ולהדביק את הקוד הבא:

    Option Explicit
    
    Function ValidateAccount(bankNumber As Long, branchNumber As Long, accountNumber As Long) As Boolean
        ' Input validation:
        If Not IsNonNegativeLong(bankNumber) Then
            ValidateAccount = False
         Exit Function
        End If
        If Not IsNonNegativeLong(branchNumber) Then
            ValidateAccount = False
         Exit Function
        End If
        If Not IsNonNegativeLong(accountNumber) Then
            ValidateAccount = False
         Exit Function
        End If
    
        ' Supported banks
        Const YAHAV As Long = 4
        Const POST As Long = 9
        Const LEUMI As Long = 10
        Const DISCOUNT As Long = 11
        Const HAPOALIM As Long = 12
        Const IGUD As Long = 13
        Const OTSAR_AHAYAL As Long = 14
        Const MERCANTILE As Long = 17
        Const MIZRAHI_TEFAHOT As Long = 20
        Const CITIBANK As Long = 22
        Const BEINLEUMI As Long = 31
        Const ARAVEI_ISRAELI As Long = 34
        Const MASAD As Long = 46
        Const POALEI_AGUDAT_ISRAEL As Long = 52
    
        ' Adjust branch number For Mizrahi Tefahot
        If bankNumber = MIZRAHI_TEFAHOT Then
            If branchNumber > 400 Then
                branchNumber = branchNumber - 400
            End If
        End If
    
        Dim accountNumberDigits() As Long
        Dim branchNumberDigits() As Long
    
        accountNumberDigits = NumberDigitsToArr(CLng(accountNumber), 9)
        branchNumberDigits = NumberDigitsToArr(CLng(branchNumber), 3)
    
        ' Account number validation
        Dim sum As Long
        Dim remainder As Long
    
        Select Case bankNumber
         Case LEUMI, IGUD, ARAVEI_ISRAELI
    
            sum = ScalarProduct(GetSubset(accountNumberDigits, 8), ToIntArray("1,10,2,3,4,5,6,7"))
            sum = sum + ScalarProduct(GetSubset(branchNumberDigits, 4), ToIntArray("8, 9, 10"))
            remainder = sum Mod 100
            ValidateAccount = ArrIncludes(ToIntArray("90, 72, 70, 60, 20"), remainder)
    
         Case YAHAV, MIZRAHI_TEFAHOT, HAPOALIM
            sum = ScalarProduct(GetSubset(accountNumberDigits, 6), ToIntArray("1, 2, 3, 4, 5, 6"))
            sum = sum + ScalarProduct(GetSubset(branchNumberDigits, 4), ToIntArray("7, 8, 9"))
            remainder = sum Mod 11
    
            Select Case bankNumber
             Case YAHAV
                ValidateAccount = ArrIncludes(ToIntArray("0, 2"), remainder)
             Case MIZRAHI_TEFAHOT
                ValidateAccount = ArrIncludes(ToIntArray("0, 2, 4"), remainder)
             Case HAPOALIM
                ValidateAccount = ArrIncludes(ToIntArray("0, 2, 4, 6"), remainder)
            End Select
    
         Case DISCOUNT, MERCANTILE, BEINLEUMI, POALEI_AGUDAT_ISRAEL
            sum = ScalarProduct(GetSubset(accountNumberDigits, 9), ToIntArray("1, 2, 3, 4, 5, 6, 7, 8, 9"))
            remainder = sum Mod 11
    
            Select Case bankNumber
             Case DISCOUNT, MERCANTILE
                ValidateAccount = ArrIncludes(ToIntArray("0, 2, 4"), remainder)
    
             Case BEINLEUMI, POALEI_AGUDAT_ISRAEL
                If ArrIncludes(ToIntArray("0, 6"), remainder) Then
                    ValidateAccount = True
                Else
                    sum = ScalarProduct(GetSubset(accountNumberDigits, 6), ToIntArray("1, 2, 3, 4, 5, 6"))
                    remainder = sum Mod 11
                    ValidateAccount = ArrIncludes(ToIntArray("0, 6"), remainder)
                End If
            End Select
    
         Case POST
            sum = ScalarProduct(GetSubset(accountNumberDigits, 9), ToIntArray("1, 2, 3, 4, 5, 6, 7, 8, 9"))
            remainder = sum Mod 10
            ValidateAccount = remainder = 0
    
         Case 54
            ' Jerusalem
            ValidateAccount = True ' wtf?
    
         Case CITIBANK
            sum = ScalarProduct(GetSubset(accountNumberDigits, 8), ToIntArray("2, 3, 4, 5, 6, 7, 2, 3"))
            ValidateAccount = (11 - sum Mod 11) = accountNumberDigits(1)
    
         Case OTSAR_AHAYAL, MASAD
            sum = ScalarProduct(GetSubset(accountNumberDigits, 6), ToIntArray("1, 2, 3, 4, 5, 6"))
            sum = sum + ScalarProduct(GetSubset(branchNumberDigits, 4), ToIntArray("7, 8, 9"))
            remainder = sum Mod 11
    
            If remainder = 0 Then
                ValidateAccount = True
            End If
    
            If bankNumber = MASAD Then
                If remainder = 2 And ArrIncludes(ToIntArray("154, 166, 178, 181, 183, 191, 192, 503, 505, 507, 515, 516, 527, 539"), branchNumber) Then
                    ValidateAccount = True
                End If
    
                sum = ScalarProduct(GetSubset(accountNumberDigits, 9), ToIntArray("1, 2, 3, 4, 5, 6, 7, 8, 9"))
                remainder = sum Mod 11
    
                If remainder = 0 Then
                    ValidateAccount = True
                Else
                    sum = ScalarProduct(GetSubset(accountNumberDigits, 6), ToIntArray("1, 2, 3, 4, 5, 6"))
                    remainder = sum Mod 11
                    ValidateAccount = remainder = 0
                End If
            End If
    
            If bankNumber = OTSAR_AHAYAL Then
                If ArrIncludes(ToIntArray("0, 2"), remainder) And ArrIncludes(ToIntArray("385, 384, 365, 347, 363, 362, 361"), branchNumber) Then
                    ValidateAccount = True
                Elseif remainder = 4 And ArrIncludes(ToIntArray("363, 362, 361"), branchNumber) Then
                    ValidateAccount = True
                Else
                    sum = ScalarProduct(GetSubset(accountNumberDigits, 9), ToIntArray("1, 2, 3, 4, 5, 6, 7, 8, 9"))
                    remainder = sum Mod 11
                    If remainder = 0 Then
                        ValidateAccount = True
                    Else
                        sum = ScalarProduct(GetSubset(accountNumberDigits, 6), ToIntArray("1, 2, 3, 4, 5, 6"))
                        remainder = sum Mod 11
                        ValidateAccount = remainder = 0
                    End If
                End If
            End If
    
        End Select
    
    End Function
    
    Function ScalarProduct(arr1() As Long, arr2() As Long) As Long
        Dim product As Long
        Dim i As Long
        Dim maxIndex As Integer
        maxIndex = UBound(arr1)
        If maxIndex > UBound(arr2) Then maxIndex = UBound(arr2)
    
            For i = 1 To maxIndex
                product = product + arr1(i) * arr2(i)
            Next i
            ScalarProduct = product
    End Function
    
    Function ArrIncludes(arr() As Long, val As Long) As Boolean
        Dim i As Long
        If Not IsEmpty(arr) Then
            For i = LBound(arr) To UBound(arr)
                If arr(i) = val Then
                    ArrIncludes = True
                 Exit Function
                End If
            Next i
        End If
    End Function
    
    Function NumberDigitsToArr(num As Long, length As Long) As Long()
        Dim digitsArray() As Long
        ReDim digitsArray(1 To length)
    
        Dim zeroPadding As Integer
        zeroPadding = length - Len(CStr(num))
    
        Dim i As Long
    
        For i = 1 To zeroPadding
            digitsArray(i) = 0
        Next i
        For i = zeroPadding + 1 To length
            digitsArray(i) = num Mod 10
            num = Int(num / 10)
        Next i
        NumberDigitsToArr = digitsArray
    End Function
    
    Function IsNonNegativeLong(num As Variant) As Boolean
        If VarType(num) = vbLong And num >= 0 Then
            IsNonNegativeLong = True
        End If
    End Function
    
    Function GetSubset(arr() As Long, count As Long) As Long()
        Dim result() As Long
        ReDim result(1 To count)
        Dim i As Long
        For i = 1 To count
            If i <= UBound(arr) Then
                result(i) = arr(i)
            End If
        Next i
        GetSubset = result
    End Function
    
    Function ToIntArray(list As String) As Long()
        Dim temp() As String
        temp = Split(list, ",")
    
        Dim result() As Long
        ReDim result(1 To UBound(temp) + 1)
    
        Dim i As Integer
    
        For i = 0 To UBound(temp)
            result(i + 1) = CLng(temp(i))
        Next i
        ToIntArray = result
    End Function
    
    
    
    
    תוכנה

  • אקסל | דרושה נוסחה לבדיקת תקינות מס חשבון בנק
    OdedDvirO OdedDvir

    היינו הך
    זה כתוב ב-VBA, אז פשוט תעתיק את המודול מקובץ האקסס לתוך האקסל
    ואז הפונקציות יהיו זמינות לך שם

    תוכנה

  • שימוש עם VScode בSSH בשרת זוללת משאבים??
    OdedDvirO OdedDvir

    שימוש עם VScode בכל מחשב שהוא - זולל משאבים. נקודה.
    פתיחה של קובץ batch בגודל 116 בתים בלבד - נוגסת בכ-100MB של RAM.

    תכנות

  • טיפ, עריכה נוחה של קבצי bat בVSC
    OdedDvirO OdedDvir

    @אביי

    1. אני אישית אוהב להשאיר את האופציות של ברירת המחדל של windows, לכן הוספתי אפשרות חדשה: Edit in Code
    2. אצלי ה-VSCode מותקן ב- C:\Users\<MyUser>\AppData\Local\Programs\Microsoft VS Code\Code.exe
      לכן היה צורך להשתמש בטיפוס-expandable string value כדי לקבל את הנתיב של המשתמש באופן ג'נרי על ידי %LocalAppData%
    3. אי אפשר להוסיף ערך מטיפוס כזה שיהיה ברירת המחדל, ישירות מ-regedit, לכן אני מצרף שני קבצים לשם נוחות, אחד להתקנה ואחד להסרה. אם נתיב ההתקנה שונה אצלך מהמצוין לעיל, ניתן לערוך את הערך אחרי ההתקנה, ולשנות לנתיב אחר כרצונך.
      Add (Edit in Code) to context menu.reg
      Remove (Edit in Code) from context menu.reg
    תוכנה

  • עזרה בsql בנושא פונקציות (סקלריות וטבלאיות)
    OdedDvirO OdedDvir

    @Sara-Rivka ב-SQLServer יש שני סוגים עיקריים של פונקציות:

    1. פונקציה סקלרית - מחזירה ערך בודד, למשל INT,BIT, VARCHAR(64) וכו'
    2. פונקציה טבלאית - מחזירה טבלה. כלומר תוצאה של SELECT
      הסוג הזה מתחלק ל-2 תתי-סוגי פונקציות:
      2.1 Inline - פונקציה זו תמיד מכילה פקודה בודדת שמתחילה במילה השמורה RETURN
      דוגמא:
    CREATE FUNCTION fn_GetUserById(INT UserId)
    RETURNS TABLE
    AS
    RETURN (
            SELECT * FROM Users
            WHERE Id = @UserId
    )
    

    היתרון של סוג פונקציה כזה הוא שהוא יחסית יעיל, בהשוואה לסוג הבא.

    2.2 פונקציה מרובת פקודות (Multi-Statement Function) - שמאפשרת לבצע כמה פקודות ברצף
    התחביר שלה שונה בכמה אופנים:
    א. נדרשת הגדרה מראש של מבנה הטבלה שיוחזר.
    ב. הפקודות מוקפות בבלוק BEGIN-END
    ג. חובה לסיים את הפונקציה בפקודה RETURN

    דוגמא:

    CREATE FUNCTION fn_BestStudents(MinScore INT)
    RETURNS @ResultTable TABLE
    (
         StudentId INT,
         AverageScore INT
    )
    AS
    BEGIN
            SELECT Students.Id, Avg(Tests.Score)
            INTO @ResultTable
            FROM Students
            INNER JOIN Tests ON Students.Id = Tests.StudentId
            GROUP BY Students.Id
    
           RETURN
    END
    

    הסוג הזה של פונקציות בעייתי מבחינת יעילות, ובאופן כללי יש להמנע משימוש בו.

    תכנות

  • התקנת תאורה בתקרת גבס
    OdedDvirO OdedDvir

    כל התשובות נכונות

    1. יש גופי תאורה ששקועים בגבס - אלו דורשים חיתוך של הגבס בצורה שתתאים לגוף התאורה, לדוגמא, ספוטים דורשים חיתוך בצורת עיגול. בדר"כ ההצמדה היא על ידי קפיצים בצדדים, מכווצים אותם ומכניסים לחור, והם משתחררים בתוך החלל של הגבס, ונצמדים ללוח הגבס מצידו השני.
    2. יש גוף תאורה חיצוני - אותו תולים על הגבס מבחוץ, בדומה לקיר רגיל, בתנאי שהוא לא כבד במיוחד. בסוג הזה יש אפשרות תיאורטית לכוון מראש את מיקום הניצב במקום שבו רוצים להתקין את הגוף, ולהשתמש בברגים רגילים, אבל זה לא נוח ולא קל לכוון את הניצבים כך שיעמדו במקום המתאים. השיטה הרווחת היא להשתמש בבורג גבס מיוחד. יש הרבה סוגים, אבל הרעיון של כולם דומה, שבמהלך ההברגה החלק הפנימי של הבורג מתרחב ו\או נצמד ללוח הגבס מצידו השני.
    3. פס לד - עקרונית לא מצריך שום הכנה, הדבק שבצידו השני מספיק ברוב המקרים. גם פה יש הרבה אפשרויות, כי לרוב לא רוצים שהפס יהיה גלוי, אז או שמסתירים אותו על ידי זוית, או שמשתמשים במסילת אלומיניום \ פלסטיק לתאורה, כעין מסילות הפלסטיק שמשמשות להעברת כבלים על הקיר, אלא שלאלו יש מכסה חצי שקוף שמאפשר לאור לעבור, ומשקעים אותם בקיר.
    בניה ושיפוצים

  • אקסס | איך ניתן לשרשר טקסט ומספר ללא היפוך התצוגה?
    OdedDvirO OdedDvir

    @חייםיודלביץ אני לא מתערב לך בעיצוב 🙂 , פשוט זה הסדר שמופיע בקוד שלך

    תכנות

  • אקסס | איך ניתן לשרשר טקסט ומספר ללא היפוך התצוגה?
    OdedDvirO OdedDvir

    @חייםיודלביץ מהשאלה שלך נראה שהסדר הרצוי הוא

    1. מספר בית
    2. כניסה
    3. קו נטוי
    4. דירה

    אם כן לכאורה הפלט תקין: מספר בית=52, כניסה=ד, קו נטוי, דירה=6

    תכנות

  • מדפסת שמדפיסה עקבות בכל דף בחצי התחתון
    OdedDvirO OdedDvir

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

    חומרה

  • התאמת נגן וידאו לRTL
    OdedDvirO OdedDvir

    @צדיק-תמים כתב בהתאמת נגן וידאו לRTL:

    @OdedDvir כמובן. וטוב שהבאת את הדוגמה של VLC, לא מצאתי נגן אחר עם התאמה טובה.

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

    גומלין - כללי

  • התאמת נגן וידאו לRTL
    OdedDvirO OdedDvir

    @צדיק-תמים
    לעניות דעתי יש שתי אפשרויות:
    או להשאיר כמקובל משמאל לימין
    או להפוך הכל מימין לשמאל, כמו מראה, כולל כיוון הנגינה, הרמקול, סימון הרמקול וכו', ככה:
    605e644d-8aa7-4654-8349-de176e54aee8-תמונה.png

    בתמונה שצירפת נראה שכיוון הנגינה נשאר משמאל לימין, אותי (באופן אישי כמובן) זה ממש מבלבל

    גומלין - כללי

  • המלצה על עכבר איכותי ונוח מאוד (וגם מקלדת)
    OdedDvirO OdedDvir

    @avramk גם אני לא מסתדר עם עכברים קטנים
    לא הייתי ממליץ לך על ה-vertical של logitec, קניתי אותו במחיר יקר והוא קטן ולא נוח לטעמי, בינתיים הוא יושב בשולי השולחן שלי כבר חודשיים, ומשמש כמשקולת דפים יקרה להחריד.
    אני קניתי את ה-S2 של logitec בעקבות ההמלצה הזו כאן ואני ממש מרוצה ממנו.
    היתרונות שלו:

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

    החיסרון שלו הוא שהוא:

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

    אם אתה הולך על זה, דע שלגבי הדגם החדש S3 הדעות נוטות שהוא פחות מוצלח.

    חומרה

  • אפשרויות סינון מתקדמות בפקד DataGrid בWPF
    OdedDvirO OdedDvir

    Syncfusion חינמי אם איני טועה עבור חברות עם מחזור עסקים קטן מ-1M$ לשנה ופחות מ-5 עובדים. הוא פרוייקט ענק הנהנה מתמיכה מצויינת ותומך בהמון פלטפורמות.
    יש גם חלופות חינמיות
    זה נראה פרוייקט פעיל עם ממשק דומה לשל אקסל: https://github.com/macgile/DataGridFilter
    יש גם משהו יותר בסיסי מבית דוטנט: https://github.com/dotnet/DataGridExtensions

    תכנות

  • ODBC (RUST & ms ACCESS \ SQL server)
    OdedDvirO OdedDvir

    @Y-Excel-Access מנוסח השגיאה שהבאת נראה שיש חוסר התאמה בין הארכיטקטורות שבהן אתה משתמש, כנראה חוסר תאימות של גרסאות 64/32 ביט.
    אתה צריך להגדיר חיבור ODBC באותה גרסת סיביות שבה אתה משתמש ב Rust toolchain

    תכנות

  • ODBC (RUST & ms ACCESS \ SQL server)
    OdedDvirO OdedDvir

    @yossiz כתב בODBC (RUST & ms ACCESS \ SQL server):

    נראה לי שיותר מומלץ לך להתחבר בשיטת connection string.

    אני נתקלתי בבעיות עם זה בקבצים חדשים של אקסס accdb. עם הקבצים היישנים mdb אין בעיה.
    מלבד זאת, ב-odbc יש יתרון שאפשר להפעיל לוגים של פעולות ושגיאות.

    תכנות

  • ODBC (RUST & ms ACCESS \ SQL server)
    OdedDvirO OdedDvir

    בקיצור נמרץ:

    1. לחץ על התחל, ותרשום ODBC, ובחר בקידוד הסיביות הנכון 64 או 32 ביט
      תמונה.png
    2. שים לב שעליך להגדיר את החיבור בלשונית הנכונה: User DSN יהיה פעיל רק עבור המשתמש המחובר, ואילו System DSN יוגדר עבור כל המשתמשים
    3. לחץ על Add > Microsoft Access Driver < Finish
    4. בחלונית שנפתחה, תן שם לחיבור. שם זה ישמש אותך אח"כ להתחברות.
    5. לחץ על בחירה... ונווט למיקום של קובץ הנתונים של אקסס.
      7f9bcbf8-051b-4c26-be8f-6769b17a3fff-תמונה.png
    תכנות

  • שחזור קובץ בדיסק אונקי
    OdedDvirO OdedDvir

    @אף-אחד-3 כתב בשחזור קובץ בדיסק אונקי:

    התוכנה testdisk אכן טובה לגיבוי אבל לא לשחזור

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

    תוכנה

  • פתיחת תקיעה בהשחלת כבל רשת
    OdedDvirO OdedDvir

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

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

    חשמל ותאורה

  • חיפוש תוכנה: המרת קובץ אקסל (xlsx) לcsv
    OdedDvirO OdedDvir

    @OdedDvir כתב בחיפוש תוכנה: המרת קובץ אקסל (xlsx) לcsv:

    נחכה לשדרוג לגרסה 0.2 🙂

    הנה גרסה 0.2 שדורשת רק שני קבצים (קרדיט ל-@dovid על ההערה)

    סקריפט vb

    if WScript.Arguments.Count <> 2 Then
        Wscript.Echo "Error: invalid number of arguments specified." & vbNewline
        WScript.Echo "Usage: ExcelCsvConvertor <InputFileName> <OutputFormat>" & vbNewline
        WScript.Echo "Example: ExcelCsvConvertor input.xlsx csv"
        Wscript.Quit
    End If
    
    
    InputFileName = Wscript.Arguments.Item(0)
    OutputFormat = lcase(WScript.Arguments.Item(1))
    
    Select Case OutputFormat
    Case "csv"
        XlFileFormatValue = 62
    Case "xlsx"
        XlFileFormatValue = 51
    Case Else
        Wscript.Echo "Unsupported output format specified: " & OutputFormat
        Wscript.Quit
    End select
    
    With CreateObject("Scripting.FileSystemObject")
        OutputFileName = .GetBaseName(InputFileName) & "." & OutputFormat
        InputFileName = .GetAbsolutePathName(InputFileName)
        OutputFileName = .GetParentFolderName(InputFileName) & "\" & OutputFileName
    End With
    
    WScript.Echo "Converting: " & InputFileName & " to " & OutputFormat & ": " & OutputFileName
    
    With CreateObject("Excel.Application")
        With .Workbooks.Open(InputFileName)
            .SaveAs OutputFileName, XlFileFormatValue
            .Close False
        End With
        .Quit
    End With
    

    קובץ התקנה

    @echo off
    
    set convertor_path=%~dp0ExcelCsvConvertor.vbs
    cls
    echo ==========================================================================
    echo ExcelCsvConvertor: Context menu setup
    echo ==========================================================================
    echo.
    echo [1] Install   : Adds "Convert to CSV/Excel" options to context menu
    echo [2] Uninstall : Removes "Convert to CSV/Excel" options from context menu
    echo [Q] Quit
    echo.
    choice /C 12Q /T 1000 /D Q /N /M "Please select an option: "
    
    IF [%errorlevel%]==[1] GOTO Install
    IF [%errorlevel%]==[2] GOTO Uninstall
    exit /b
    
    :Install
    echo Installing...
    REG ADD HKEY_CLASSES_ROOT\SystemFileAssociations\.xlsx\shell\ConvertToCSV /f /d "Convert to CSV..."
    REG ADD HKEY_CLASSES_ROOT\SystemFileAssociations\.xlsx\shell\ConvertToCSV\command /f /d "cscript /nologo \"%convertor_path%\" \"%%1\" csv"
    REG ADD HKEY_CLASSES_ROOT\SystemFileAssociations\.csv\shell\ConvertToExcel /f /d "Convert to Excel..."
    REG ADD HKEY_CLASSES_ROOT\SystemFileAssociations\.csv\shell\ConvertToExcel\command /f /d "cscript /nologo \"%convertor_path%\" \"%%1\" xlsx"
    goto Done
    
    :Uninstall
    echo Uninstalling...
    REG DELETE HKEY_CLASSES_ROOT\SystemFileAssociations\.xlsx\shell\ConvertToCSV /f
    REG DELETE HKEY_CLASSES_ROOT\SystemFileAssociations\.csv\shell\ConvertToExcel /f
    goto Done
    
    :Done
    echo Done!
    pause
    

    כל החבילה v0.2:
    ExcelCsvConvertor.vbs
    Setup (run as Administrator).cmd

    @mekev הזריז הקדים אותי, אבל אני משאיר לו לשדרג את הפיצ'ר שלו לגרסה 0.3

    תוכנה

  • חיפוש תוכנה: המרת קובץ אקסל (xlsx) לcsv
    OdedDvirO OdedDvir

    @dovid

    @dovid כתב בחיפוש תוכנה: המרת קובץ אקסל (xlsx) לcsv:

    @OdedDvir תודה! למה צריך את הbat?

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

    תוכנה
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 119
  • 120
  • 4 / 120
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום