-
@אוריי אמר במחפש קוד של c# להפעלת מאקרו vba:
הבעיה היא שהוא לא סוגר את האקסל ברקע לאחר הפעולה
Application.Quitוהוא לא מוצא את המחלקה של Excel
צריך להוסיף למעלה
using Microsoft.Office.Interop.Excel;ולהוסיף Reference בפרוייקט ל-DLL של זה.
זה בגדול, יותר בפרטות אני לא יודע.
-
@yossiz

הרבה תודה ב"ה התקדמתי נחמד ב #C@yossiz אמר במחפש קוד של c# להפעלת מאקרו vba:
להוסיף Reference בפרוייקט ל-DLL של זה.
אשמח לקבל איזה הסבר קצר איך אני מוסיף את זה
-
יש ספרייה לעבוד מול excel בשם epplus, היא לא תומכת ב vba. אבל אפשר בקלות להפוך את הקוד של ה vba ל c#
-
@aharon-0
אם היה מדובר ב קוד vba קטן הייתי חושב על המהלך הזה
הנקודה היא שמדובר בקוד באורך של מאות שורות (למעלה מ 1900 )עם כמויות פונקציות וכו'
שזמן ריצה של כל הקוד בממוצע כ 50 שניות במחשב I5 8GR -
@אוריי עבודה מול excel בסגנון הישן כ dll. מתכון לצרות.
א. אסור לעבוד עם אקסל בזמן שהקוד רץ. כי זה מפריע לקוד לרוץ.
ב. לצורך סגירת האקסל צריך לקרוא 3 פעמים ל GC לרוקן אובייקטים של אקסל. (כמובן לאחר ששיחררו אותם)
ג. צריך להזהר לא לקמפל ב netcore -
-
@אוריי מזכיר לי את חד-גדיא.
אני לא קורא את כל הפוסטים שפתחת,אבל יש לי הרגשה שאם תעלה מסמך דרישות למה שאתה מפתח, יהיה יותר קל לעזור לך. -
@aharon-0 אמר במחפש קוד של c# להפעלת מאקרו vba:
,אבל יש לי הרגשה שאם תעלה מסמך דרישות למה שאתה מפתח, יהיה יותר קל לעזור לך
כתבתי את זה כאן
-
@אוריי
קצת התבלבלתי, אם הקוד שמוריד את הקבצים ב powershell. למה לא להמשיך להריץ את ה vbs ב powershell ? מה הצורך ב c#? -
@aharon-0
אני יעשה לך קצת סדר
עם הפאוורשאל לא הסתדרתי
אז עברתי להשתמש ב #C
תכלס יש לי קוד #C שמוריד בהצלחה את כל הקבצים מה FTP
חוץ מזה בניתי קובץ VBS שמפעיל את המאקרו של האקסל
מה שכרגע חסר לי הוא להפעיל את ה VBS דרך ה#C
מקווה שהייתי ברור... -
@אוריי עוד משהו שלא הבנתי. הקוד בתחילת הפוסט ניסת לפתוח csv עם אקסל. זה לא יכול לעבוד כך.
צריך לפתוח גיליון ואז לייבא את ה csv לגליון. (עם אפשרות להגדיר מה מחלק לטורים פסיק או טאב או תו אחר).
איך פתרת את זה עם vbs ? -
@אוריי
דוגמא שמצאתי באינטרנט(אני מסמארטפון וקשה להקליד):
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 שתוכל לטפל באירועים.
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות