עבודה עם קבצים של אקסל מתוך ויז'ואל בייסיק

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

הקוד לפתיחת קובץ:

 

1
2
3
4
5
6
7
8
9
10
11
 Dim objExcel As Excel.Application
 Dim ObjBook As Excel.Workbook
 Dim objSheet As Excel.Worksheet 

objExcel = New Excel.Application

' בהנחה שידוע שם הקובץ אותו רוצות לפתוח
ObjBook = objExcel.Workbooks.Open(sFileName)
'
בדיקה  שאכן נפתח איזשהו קובץ
If (ObjBook IsNot Nothing) Then objSheet = ObjBook .Worksheets(1)
'בחירה בגיליון שאותו רוצות פעיל- גיליון אחד בדוגמה

כאשר רוצים לפתוח את החלון המאפשר בחירה איזה קובץ לפתוח, ניתן להעזר בפונקציה הבאה:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Public Function GetFileName(ByVal bOpenDialog As Boolean, ByVal defPath As String) As String

Dim FileName As String

FileName = ""

If bOpenDialog Then
'יצירת אינסטנס לאובייקט מסוג פתיחת חלון קבצים
Dim fdlg As OpenFileDialog = New OpenFileDialog()
'
כאן יש להכניס את הנתיב הדיפולטי לפתיחת החלון
fdlg.InitialDirectory = defPath
'איזה סוג קבצים על החלון להציג
fdlg.Filter = "xls files (*.xls)|*.*|All files (*.*)|*.*"

fdlg.FilterIndex = 2

fdlg.RestoreDirectory = True
'
אם חוזר אוקי אז שם הקובץ הוא הנבחר
If fdlg.ShowDialog() = System.Windows.Forms.DialogResult.OK Then  FileName = fdlg.FileName()

End If

Return FileName

End Function

כדי לשמור את הקובץ, אפשר להשתמש בשגרה הבאה:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Sub SaveFileAsExcel(ByVal fileDetails)

Dim objExcel As Excel.Application
Dim ObjWorkbook As Excel.Workbook
objExcel = New Excel.Application
ObjWorkbook = objExcel.Workbooks.Open(fileDetails)

If (ObjWorkbook IsNot Nothing) Then
Try
ObjWorkbook.SaveAs(fileDetails, Excel.XlFileFormat.xlWorkbookNormal)
Catch exp As Exception
End Try
End If

ObjWorkbook.Close()
ObjWorkbook = Nothing
objExcel.Quit()
objExcel = Nothing

End Sub

בדיקה האם הקובץ כבר פתוח כרגע במערכת, על ידי שליחת שם הקובץ לפונקציה הבאה. הפונקציה מחזירה TRUE אם הקובץ פתוח, FALSE אם לא:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Public Function IsFileOpen(ByVal FileName As String) As Boolean

Dim FileNum As Integer
Dim ErrNum As Integer
Dim V As Object

If Trim(FileName) = vbNullString Then Return False
'קובץ לא קיים
V = Dir(FileName, vbNormal)

If IsError(V) = True Or V = vbNullString Then Return False
FileNum = FreeFile()
Err.Clear()
'
ניסיון לפתוח את הקובץ ולנעול אותו.
FileOpen(FileNum, FileName, OpenMode.Input, OpenAccess.Default, OpenShare.LockRead)

ErrNum = Err.Number
FileClose(FileNum) ' לסגור את הקובץ.
On Error GoTo 0

Select Case ErrNum
Case 0 '
הקובץ סגור.
Return False

Case 75  ' הקובץ פתוח.
Return True

Case Else  '
שגיאה כלשהי קרתה נניח שהקובץ פתוח.
Return True

End Select
End Function

קישורים נוספים לעבודה עם קבצים של אקסל שיכולים לעזור:
מדריך ויבי באנגלית
msdn – Automate Office Excel 2007 Reports with Visual Basic 2005
File Operations in Visual Basic (By John Smiley)
MS Help – How to automate Microsoft Excel from Visual Basic

025 עבודה עם קבצים של אקסל מתוך ויזואל בייסיק נהניתם ? הרשמו לעדכוני RSS !

מניפולציות על אקסל עם ויז'ואל בייסיק הקדמה והכנות

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

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

אל דאגה אמרתי לאמא שלי, כשראיתי את ערמת ההוראות שהיא קיבלה. אני אחשוב על משהו.

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

הציוד:

סביבת פיתוח. לי יש ויז'ואל סטודיו 2008, אבל אפשר גם 2005 או אפילו 6.
ידע בסיסי מאד בתכנות. כל שפה הולכת כאן. כל עוד יודעים לעשות לולאות, תנאים וגזור והדבק – זה לא מאד קשה להשתלט על העניין. הקלאסים כבר קיימים, יש להם תכונות ופונקציות ורובם כבר מצויירים ומוכנים לשימוש. כמו להכין מרק ירקות עם שקית קנור. זה פחות מעניין אבל אם מוסיפים לזה קצת ירקות טריים זה לא פחות טעים.

גירסת אופיס כלשהי. לי יש את 2007. אבל התוכנה אמורה להתמודד עם 2003 דווקא.

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

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

http://www.csit.org.il/Homr_limud/VBCourse/index.htm

http://www2.eitan.ac.il/vb/

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

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

File-New Project-Visual Basic-Windows-Windows forms application

  מניפולציות על אקסל עם ויזואל בייסיק  הקדמה והכנות

כדי להיות מסוגלים להפעיל פונקציות של אקסל עם ויז'ואל בייסיק יש  להוסיף את ספריית האקסל ל reference של הפרוייקט עליו הולכים לעבוד בצורה הבאה:

קליק ימני על הsolution, בחירה ב properties ואז  reference.

 מניפולציות על אקסל עם ויזואל בייסיק  הקדמה והכנות
לחיצה על כפתור ADD תפתח את המסך הבא

 מניפולציות על אקסל עם ויזואל בייסיק  הקדמה והכנות
שם יש לבחור את  גירסת האקסל שאיתה תרצו לעבוד- 11  עבור אופיס 2003 ו 12  עבור 2007. שימו לב שאם אתן בוחרות את גירסה 12, בזמן ההתקנה של התוכנה על המחשב, ההתקנה תבדוק האם קיים אופיס 2007 על המחשב שעליו מנסים להתקין. אם לא קיים כזה, ההתקנה תיכשל. לכן יש לבחור את גירסת האקסל לפי מחשב היעד ולא מחשב הפיתוח.

בנוסף לפני תחילת הכתיבה של הקוד, צריך להוסיף את המשפט הבא:

1
 Imports Microsoft.Office.Interop

 עכשיו אנחנו  יכולות להתחיל לעבוד. בפוסטים הבאים -  איך לעבוד עם קבצי אקסל ולפרוש את הנתונים לתוך אובייקטים של ויבי.

025 מניפולציות על אקסל עם ויזואל בייסיק  הקדמה והכנות נהניתם ? הרשמו לעדכוני RSS !

מגודלים ???

במהלך שיטוטי ברשת הבוקר נתקלתי בפרסומות לתוכנית הריאליטי החדשה של סלקום – "מגודלים".

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

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

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

כאן זה בסדר הרי, זה ריאליטי.

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

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

יאללה בואו נתעלל באנשים שמוכנים לזה תמורת כסף.

השלב הבא יהיה המקבילה לכמה סרטי "ריאליטי" שראיתי, בואו נקח 10 איש, ניתן להם רובים ושיהרגו אחד את השני.השורד זוכה בחיייו ובמליון דולר.

מה? לא יסכימו להתקבל? אין בעיה – נקח אסירים שמועמדים למאסר עולם (או לעונש מוות או ערבים ממרתפי השב"כ-אל תדאגו, נסתדר).

גרררר

025 מגודלים ??? נהניתם ? הרשמו לעדכוני RSS !