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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. מחפש קוד של c# להפעלת מאקרו vba

מחפש קוד של c# להפעלת מאקרו vba

מתוזמן נעוץ נעול הועבר תכנות
19 פוסטים 3 כותבים 651 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yossizY מנותק
    yossizY מנותק
    yossiz
    השיב לאוריי ב נערך לאחרונה על ידי
    #2

    @אוריי אמר במחפש קוד של c# להפעלת מאקרו vba:

    משום מה לא הצלחתי להסתדר איתם

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

    תפרק את הבעיה לרכיבים.

    שלב א
    יש אפשרות להריץ את האקסל ברקע ולשלוט בו. האם אתה יודע איך עושים את זה ב-#C? האם אתה יודע איך לעשות את זה בשפה אחרת? נראה לי שזה אמור להיות אפשרי ב-VBA מתוכנת אקסס גם כן. האם ניסית ב-VBA? עבד לך? ניסת ב-#C? עבד לך?

    שלב ב, זה להריץ את המאקרו.
    איך נסית? איזה שגיאה קיבלת?

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    אורייא תגובה 1 תגובה אחרונה
    5
    • אורייא מנותק
      אורייא מנותק
      אוריי
      השיב לyossiz ב נערך לאחרונה על ידי
      #3

      @yossiz
      ניסיתי בקוד vba בתוך קובץ vbs וזה עובד הבעיה היא שהוא לא סוגר את האקסל ברקע לאחר הפעולה (כך שלאחר כמה פתיחות השרת לא זז)
      א. אני צריך שהבקשה תגיע מקובץ קוד כי זה אמור להגיע לאחר פעולה
      ב. אני לא יכול לבקש מתוך אקסס כי א"כ אני מוכרך לפתוח את האקסס בשביל זה והרי אני רוצה שזה יעבוד באופן אוטומטי לחלוטין...
      ג. חוץ מזה יש לי קוד c# שעושה לי את הפעולה הקודמת של הורדת קבצים משרת ftp וב"ה עובד מעולה ... כ"כ חיפשתי ג"כ קוד המשך לפעולה הבאה במקום לסרבל את המערכת...

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

         public void WebTest_CodedStep()
          {
              // Object for missing (or optional) arguments.
              object oMissing = System.Reflection.Missing.Value;
      
              // Create an instance of Microsoft Excel
              Excel.ApplicationClass oExcel = new Excel.ApplicationClass();
      
              // Make it visible
              oExcel.Visible = true;
      
              // Define Workbooks
              Excel.Workbooks oBooks = oExcel.Workbooks;
              Excel._Workbook oBook = null;
      
              // Get the file path
              string path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
              path = path + "\\Worksheet02.csv";
      
              //Open the file, using the 'path' variable
              oBook = oBooks.Open(path, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing,  oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
      
              // Run the macro, "First_Macro"
              RunMacro(oExcel, new Object[]{"Worksheet01.xlsm!First_Macro"});
      
              // Quit Excel and clean up.
              oBook.Close(false, oMissing, oMissing);
              System.Runtime.InteropServices.Marshal.ReleaseComObject (oBook);
              oBook = null;
              System.Runtime.InteropServices.Marshal.ReleaseComObject (oBooks);
              oBooks = null;
              oExcel.Quit();
              System.Runtime.InteropServices.Marshal.ReleaseComObject (oExcel);
              oExcel = null;
      
              //Garbage collection
              GC.Collect();
          }
      
          private void RunMacro(object oApp, object[] oRunArgs)
          {
              oApp.GetType().InvokeMember("Run", System.Reflection.BindingFlags.Default | System.Reflection.BindingFlags.InvokeMethod, null, oApp, oRunArgs);
          }
      

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

      ניתן לפנות אלי גם ב al0548446188@gmail.com
      ותמיד... אבל תמיד תוכלו לשאול אותי ב :) כאן שאלות באקסל

      yossizY תגובה 1 תגובה אחרונה
      0
      • yossizY מנותק
        yossizY מנותק
        yossiz
        השיב לאוריי ב נערך לאחרונה על ידי
        #4

        @אוריי אמר במחפש קוד של c# להפעלת מאקרו vba:

        הבעיה היא שהוא לא סוגר את האקסל ברקע לאחר הפעולה

        Application.Quit

        והוא לא מוצא את המחלקה של Excel

        צריך להוסיף למעלה

        using Microsoft.Office.Interop.Excel;
        

        ולהוסיף Reference בפרוייקט ל-DLL של זה.

        זה בגדול, יותר בפרטות אני לא יודע.

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        אורייא תגובה 1 תגובה אחרונה
        6
        • אורייא מנותק
          אורייא מנותק
          אוריי
          השיב לyossiz ב נערך לאחרונה על ידי
          #5

          @yossiz 👍
          הרבה תודה ב"ה התקדמתי נחמד ב #C

          @yossiz אמר במחפש קוד של c# להפעלת מאקרו vba:

          להוסיף Reference בפרוייקט ל-DLL של זה.

          אשמח לקבל איזה הסבר קצר איך אני מוסיף את זה

          ניתן לפנות אלי גם ב al0548446188@gmail.com
          ותמיד... אבל תמיד תוכלו לשאול אותי ב :) כאן שאלות באקסל

          yossizY תגובה 1 תגובה אחרונה
          0
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב לאוריי ב נערך לאחרונה על ידי
            #6

            @אוריי
            https://stackoverflow.com/questions/15285880/how-to-reference-microsoft-office-interop-excel-dll

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            תגובה 1 תגובה אחרונה
            3
            • Aharon 0A מנותק
              Aharon 0A מנותק
              Aharon 0
              כתב ב נערך לאחרונה על ידי Aharon 0
              #7

              יש ספרייה לעבוד מול excel בשם epplus, היא לא תומכת ב vba. אבל אפשר בקלות להפוך את הקוד של ה vba ל c#

              אורייא תגובה 1 תגובה אחרונה
              0
              • אורייא מנותק
                אורייא מנותק
                אוריי
                השיב לAharon 0 ב נערך לאחרונה על ידי אוריי
                #8

                @aharon-0
                אם היה מדובר ב קוד vba קטן הייתי חושב על המהלך הזה
                הנקודה היא שמדובר בקוד באורך של מאות שורות (למעלה מ 1900 )עם כמויות פונקציות וכו'
                שזמן ריצה של כל הקוד בממוצע כ 50 שניות במחשב I5 8GR

                ניתן לפנות אלי גם ב al0548446188@gmail.com
                ותמיד... אבל תמיד תוכלו לשאול אותי ב :) כאן שאלות באקסל

                Aharon 0A תגובה 1 תגובה אחרונה
                0
                • Aharon 0A מנותק
                  Aharon 0A מנותק
                  Aharon 0
                  השיב לאוריי ב נערך לאחרונה על ידי
                  #9

                  @אוריי עבודה מול excel בסגנון הישן כ dll. מתכון לצרות.
                  א. אסור לעבוד עם אקסל בזמן שהקוד רץ. כי זה מפריע לקוד לרוץ.
                  ב. לצורך סגירת האקסל צריך לקרוא 3 פעמים ל GC לרוקן אובייקטים של אקסל. (כמובן לאחר ששיחררו אותם)
                  ג. צריך להזהר לא לקמפל ב netcore

                  אורייא תגובה 1 תגובה אחרונה
                  0
                  • אורייא מנותק
                    אורייא מנותק
                    אוריי
                    השיב לAharon 0 ב נערך לאחרונה על ידי
                    #10

                    @aharon-0
                    אני לא מפעיל ישירות מה #C את ה vba
                    אלא מפעיל vbs שמפעיל את ה vba
                    זה האופציה היחידה כרגע והכי אופציונלית..
                    עיין כאן

                    ניתן לפנות אלי גם ב al0548446188@gmail.com
                    ותמיד... אבל תמיד תוכלו לשאול אותי ב :) כאן שאלות באקסל

                    Aharon 0A תגובה 1 תגובה אחרונה
                    0
                    • Aharon 0A מנותק
                      Aharon 0A מנותק
                      Aharon 0
                      השיב לאוריי ב נערך לאחרונה על ידי Aharon 0
                      #11

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

                      אורייא תגובה 1 תגובה אחרונה
                      0
                      • אורייא מנותק
                        אורייא מנותק
                        אוריי
                        השיב לAharon 0 ב נערך לאחרונה על ידי
                        #12

                        @aharon-0 אמר במחפש קוד של c# להפעלת מאקרו vba:

                        ,אבל יש לי הרגשה שאם תעלה מסמך דרישות למה שאתה מפתח, יהיה יותר קל לעזור לך

                        כתבתי את זה כאן

                        ניתן לפנות אלי גם ב al0548446188@gmail.com
                        ותמיד... אבל תמיד תוכלו לשאול אותי ב :) כאן שאלות באקסל

                        Aharon 0A תגובה 1 תגובה אחרונה
                        0
                        • Aharon 0A מנותק
                          Aharon 0A מנותק
                          Aharon 0
                          השיב לאוריי ב נערך לאחרונה על ידי Aharon 0
                          #13

                          @אוריי
                          קצת התבלבלתי, אם הקוד שמוריד את הקבצים ב powershell. למה לא להמשיך להריץ את ה vbs ב powershell ? מה הצורך ב c#?

                          אורייא תגובה 1 תגובה אחרונה
                          0
                          • אורייא מנותק
                            אורייא מנותק
                            אוריי
                            השיב לAharon 0 ב נערך לאחרונה על ידי אוריי
                            #14

                            @aharon-0
                            אני יעשה לך קצת סדר
                            עם הפאוורשאל לא הסתדרתי
                            אז עברתי להשתמש ב #C
                            תכלס יש לי קוד #C שמוריד בהצלחה את כל הקבצים מה FTP
                            חוץ מזה בניתי קובץ VBS שמפעיל את המאקרו של האקסל
                            מה שכרגע חסר לי הוא להפעיל את ה VBS דרך ה#C
                            מקווה שהייתי ברור...

                            ניתן לפנות אלי גם ב al0548446188@gmail.com
                            ותמיד... אבל תמיד תוכלו לשאול אותי ב :) כאן שאלות באקסל

                            Aharon 0A תגובה 1 תגובה אחרונה
                            0
                            • Aharon 0A מנותק
                              Aharon 0A מנותק
                              Aharon 0
                              השיב לאוריי ב נערך לאחרונה על ידי
                              #15

                              @אוריי הבנתי. האקסל שמותקן על המחשב גרסת 32bit או 64bit ?

                              אורייא תגובה 1 תגובה אחרונה
                              0
                              • אורייא מנותק
                                אורייא מנותק
                                אוריי
                                השיב לAharon 0 ב נערך לאחרונה על ידי
                                #16

                                @aharon-0
                                64

                                ניתן לפנות אלי גם ב al0548446188@gmail.com
                                ותמיד... אבל תמיד תוכלו לשאול אותי ב :) כאן שאלות באקסל

                                Aharon 0A תגובה 1 תגובה אחרונה
                                0
                                • Aharon 0A מנותק
                                  Aharon 0A מנותק
                                  Aharon 0
                                  השיב לאוריי ב נערך לאחרונה על ידי Aharon 0
                                  #17

                                  @אוריי עוד משהו שלא הבנתי. הקוד בתחילת הפוסט ניסת לפתוח csv עם אקסל. זה לא יכול לעבוד כך.
                                  צריך לפתוח גיליון ואז לייבא את ה csv לגליון. (עם אפשרות להגדיר מה מחלק לטורים פסיק או טאב או תו אחר).
                                  איך פתרת את זה עם vbs ?

                                  אורייא תגובה 1 תגובה אחרונה
                                  0
                                  • אורייא מנותק
                                    אורייא מנותק
                                    אוריי
                                    השיב לAharon 0 ב נערך לאחרונה על ידי
                                    #18

                                    @aharon-0
                                    זה לא קשור אחד לשני
                                    יש לי קובץ xlsm שלוקח נתונים מ csv

                                    ניתן לפנות אלי גם ב al0548446188@gmail.com
                                    ותמיד... אבל תמיד תוכלו לשאול אותי ב :) כאן שאלות באקסל

                                    Aharon 0A תגובה 1 תגובה אחרונה
                                    0
                                    • Aharon 0A מנותק
                                      Aharon 0A מנותק
                                      Aharon 0
                                      השיב לאוריי ב נערך לאחרונה על ידי
                                      #19

                                      @אוריי
                                      דוגמא שמצאתי באינטרנט(אני מסמארטפון וקשה להקליד):
                                      Process scriptProc = new Process();
                                      scriptProc.StartInfo.FileName = @"cscript";
                                      scriptProc.StartInfo.WorkingDirectory = @"c:\scripts"; //<---very important
                                      scriptProc.StartInfo.Arguments ="//B //Nologo vbscript.vbs";
                                      scriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; //prevent console window from popping up
                                      scriptProc.Start();
                                      scriptProc.WaitForExit(); // <-- Optional if you want program running until your script exit
                                      scriptProc.Close

                                      עדיין חסר בדיקת ExitCode שאתה יכול להחזיר מ VBS שאומר אם ההרצה נכשלה או הצליחה.
                                      ואפשר להוסיף קריאה של הדפסות ל console שתוכל לטפל באירועים.

                                      תגובה 1 תגובה אחרונה
                                      0
                                      • dovidD dovid העביר נושא זה מ-תכנות ב-

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

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

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