http://www.dakars.info

הבלוג של ליאור

2

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

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

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

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

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

2

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

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

 

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 !

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

2

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

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

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

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

הציוד:

סביבת פיתוח. לי יש ויז’ואל סטודיו 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 !