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

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

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

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

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

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

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

    yossizY תגובה 1 תגובה אחרונה
    0
    • 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
                                        • דף הבית
                                        • קטגוריות
                                        • פוסטים אחרונים
                                        • משתמשים
                                        • חיפוש
                                        • חוקי הפורום