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

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

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

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

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

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

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

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

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

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

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

    אורייא מנותק
    אורייא מנותק
    אוריי
    כתב ב נערך לאחרונה על ידי
    #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
    • אורייא אוריי

      @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);
          }
      

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

      yossizY מנותק
      yossizY מנותק
      yossiz
      כתב ב נערך לאחרונה על ידי
      #4

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

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

      Application.Quit

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

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

      using Microsoft.Office.Interop.Excel;
      

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

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

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

      אורייא תגובה 1 תגובה אחרונה
      6
      • yossizY yossiz

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

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

        Application.Quit

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

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

        using Microsoft.Office.Interop.Excel;
        

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

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

        אורייא מנותק
        אורייא מנותק
        אוריי
        כתב ב נערך לאחרונה על ידי
        #5

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

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

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

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

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

        yossizY תגובה 1 תגובה אחרונה
        0
        • אורייא אוריי

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

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

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

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

          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 0A Aharon 0

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

              אורייא מנותק
              אורייא מנותק
              אוריי
              כתב ב נערך לאחרונה על ידי אוריי
              #8

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

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

              Aharon 0A תגובה 1 תגובה אחרונה
              0
              • אורייא אוריי

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

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

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

                אורייא תגובה 1 תגובה אחרונה
                0
                • Aharon 0A Aharon 0

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

                  אורייא מנותק
                  אורייא מנותק
                  אוריי
                  כתב ב נערך לאחרונה על ידי
                  #10

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

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

                  Aharon 0A תגובה 1 תגובה אחרונה
                  0
                  • אורייא אוריי

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

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

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

                    אורייא תגובה 1 תגובה אחרונה
                    0
                    • Aharon 0A Aharon 0

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

                      אורייא מנותק
                      אורייא מנותק
                      אוריי
                      כתב ב נערך לאחרונה על ידי
                      #12

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

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

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

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

                      Aharon 0A תגובה 1 תגובה אחרונה
                      0
                      • אורייא אוריי

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

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

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

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

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

                        אורייא תגובה 1 תגובה אחרונה
                        0
                        • Aharon 0A Aharon 0

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

                          אורייא מנותק
                          אורייא מנותק
                          אוריי
                          כתב ב נערך לאחרונה על ידי אוריי
                          #14

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

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

                          Aharon 0A תגובה 1 תגובה אחרונה
                          0
                          • אורייא אוריי

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

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

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

                            אורייא תגובה 1 תגובה אחרונה
                            0
                            • Aharon 0A Aharon 0

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

                              אורייא מנותק
                              אורייא מנותק
                              אוריי
                              כתב ב נערך לאחרונה על ידי
                              #16

                              @aharon-0
                              64

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

                              Aharon 0A תגובה 1 תגובה אחרונה
                              0
                              • אורייא אוריי

                                @aharon-0
                                64

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

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

                                אורייא תגובה 1 תגובה אחרונה
                                0
                                • Aharon 0A Aharon 0

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

                                  אורייא מנותק
                                  אורייא מנותק
                                  אוריי
                                  כתב ב נערך לאחרונה על ידי
                                  #18

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

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

                                  Aharon 0A תגובה 1 תגובה אחרונה
                                  0
                                  • אורייא אוריי

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

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