אחת התכונות הבולטות ביותר של Visual Basic היא שהיא שלם סביבת פיתוח. לא משנה מה תרצו לעשות, יש טעם של Visual Basic שיעזור לכם לבצע את העבודה! אתה יכול להשתמש ב- Visual Basic לפיתוח שולחן עבודה ונייד ורחוק (VB.NET), סקריפט (VBScript) ופיתוח Office (VBA !) אם ניסית את VBA ואתה רוצה לדעת יותר כיצד להשתמש בה, זה הדרכה בשבילך. (קורס זה מבוסס על גרסת VBA שנמצאה ב- Microsoft Office 2010.)
אם אתה מחפש קורס ב- Microsoft Visual Basic .NET, מצאת גם את המקום הנכון. בדוק: Visual Basic .NET 2010 Express - מדריך "מהיסוד"
VBA כמושג כללי יכוסה במאמר זה. יש VBA יותר ממה שאתה עשוי לחשוב! אתה יכול גם למצוא מאמרים על אחיות Office VBA:
בעיקרון יש שתי דרכים לפתח תוכניות שיכולות לעבוד עם יישומי אופיס: VBA ו- VSTO. באוקטובר 2003, מיקרוסופט הציגה שיפור לסביבת התכנות המקצועית Visual Studio .NET בשם Visual Studio Tools for Office - VSTO. אך למרות ש- VSTO ממנף את היתרונות הניכרים של .NET ב- Office, VBA נותרה פופולרית יותר מ- VSTO. VSTO דורש שימוש בגרסה המקצועית או הגבוהה יותר של Visual Studio - מה שכנראה יעלה לך יותר מיישום Office שאתה משתמש בו - בנוסף ליישום Office. אך מכיוון VBA משולב ביישום Office המארח, אינכם זקוקים לשום דבר אחר.
VBA משמש בעיקר על ידי מומחי אופיס שרוצים להפוך את עבודתם למהירה וקלה יותר. לעיתים רחוקות אתה רואה מערכות גדולות שנכתבות ב- VBA. לעומת זאת, VSTO משמשת מתכנתים מקצועיים בארגונים גדולים יותר ליצירת תוספות שיכולות להיות די מתוחכמות. סביר להניח כי יישום של צד שלישי, כמו חברת נייר עבור Word או משרד רואי חשבון לאקסל, ייכתב באמצעות VSTO.
בתיעוד שלהם, מיקרוסופט מציינת כי יש בעיקרון שלוש סיבות להשתמש ב- VBA:
-> אוטומציה וחזרה - מחשבים יכולים לעשות את אותו הדבר שוב ושוב הרבה יותר טוב ומהיר ממה שאנשים יכולים.
-> תוספים לאינטראקציה בין משתמשים - האם ברצונך להציע בדיוק כיצד מישהו צריך לעצב מסמך או לשמור קובץ? VBA יכול לעשות זאת. האם אתה רוצה לאמת את מה שמישהו נכנס? גם VBA יכול לעשות זאת.
-> אינטראקציה בין יישומי Office 2010 - מאמר מאוחר יותר בסדרה זו נקרא Word ו- Excel Working Together. אבל אם זה מה שאתה צריך, כדאי לך לשקול מיכון משרדיכלומר, כתיבת המערכת באמצעות VB.NET ואז שימוש בפונקציות מיישום Office כמו Word או Excel לפי הצורך.
מיקרוסופט הצהירה כי הם ימשיכו לתמוך ב- VBA והיא מופיעה באופן בולט ב- רשמי מפת הדרכים לפיתוח Microsoft Office 2010. אז יש לך ביטחון רב כמו שמיקרוסופט מספקת אי פעם שההשקעה שלך בפיתוח VBA לא תתיישן בעתיד הקרוב.
מצד שני, VBA הוא המוצר האחרון של מיקרוסופט שנותר ותלוי בטכנולוגיית VB6 "COM". זה כבר למעלה מעשרים שנה! בשנות אנושיות, זה יהפוך אותו לוותיק יותר מלסטאט הערפד. אתה יכול לראות את זה כ"ניסה, נבדק ואמיתי ", או שאתה יכול לחשוב על זה כ"עתיק, שחוק ומיושן". אני נוטה להעדיף את התיאור הראשון, אך עליכם להיות מודעים לעובדות.
הדבר הראשון שצריך להבין הוא הקשר בין יישומי VBA ו- Office כמו Word ו- Excel. יישום Office הוא א מנחה עבור VBA. לעולם לא ניתן לבצע תוכנית VBA מעצמה. VBA מפותח בסביבה המארחת (באמצעות מפתח הכרטיסייה בסרט היישום של Office) ויש לבצע אותו כחלק ממסמך Word, חוברת עבודה של Excel, ממסד נתונים של Access או ממארח אחר של Office.
גם אופן השימוש ב- VBA שונה. ביישום כמו Word, VBA משמש בעיקר כדרך לגישה לאובייקטים של הסביבה המארחת, כגון גישה לפסקאות במסמך עם Word של Word. מסמך. אובייקט פסקאות. כל סביבת מארח תורמת אובייקטים ייחודיים שאינם זמינים בסביבות מארח אחרות. (לדוגמה, אין "חוברת עבודה" במסמך Word. חוברת עבודה ייחודית לאקסל.) הקוד Visual Basic נמצא בעיקר כדי לאפשר שימוש באובייקטים המותאמים אישית לכל יישום מארח של Office.
ניתן לראות את המיזוג בין VBA לקוד ספציפי לארח במדגם קוד זה (שנלקח ממיקרוסופט מסד נתונים לדוגמא של Northwind) בו קוד VBA בלבד מוצג באדום וקוד ספציפי לגישה מוצג ב- כחול. הקוד האדום יהיה זהה באקסל או ב- Word אך הקוד הכחול ייחודי ליישום Access זה.
ה- VBA עצמו כמעט זהה לזה שהיה שנים. הדרך בה היא משתלבת ביישום Office המארח ומערכת העזרה שופרה יותר.
גירסת Office של 2010 אינה מציגה את הכרטיסייה Developer כברירת מחדל. הכרטיסייה מפתח מפתחת אותך אל החלק של היישום בו אתה יכול ליצור תוכניות VBA כך שהדבר הראשון שאתה צריך לעשות זה לשנות את האפשרות הזו. פשוט עבור לכרטיסייה קובץ, אפשרויות, התאמה אישית של סרט ולחץ על התיבה מפתח בכרטיסיות הראשיות.
מערכת העזרה עובדת בצורה חלקה הרבה יותר ממה שהיא הייתה בגרסאות קודמות. אתה יכול לקבל עזרה לשאלות VBA שלך באופן לא מקוון, ממערכת המותקנת ביישום Office שלך או באופן מקוון ממיקרוסופט דרך האינטרנט. שני הממשקים נועדו להיראות דומים זה לזה:
לחץ כאן כדי להציג את האיור
אם חיבור האינטרנט שלך מהיר, העזרה המקוונת תעניק לך מידע טוב יותר ויותר. אבל הגרסה המותקנת באופן מקומי ככל הנראה תהיה מהירה יותר וברוב המקרים היא טובה באותה מידה. אולי תרצה להפוך את העזרה המקומית לברירת המחדל ואז להשתמש בעזרה המקוונת אם הגרסה המקומית לא נותנת לך את מה שאתה רוצה. הדרך המהירה ביותר להיכנס לרשת היא פשוט לבחור "כל Word" (או "כל Excel" או יישום אחר) מהתפריט הנפתח חיפוש בעזרה. זה יעבור באופן מקוון באופן מיידי ויבצע את אותו חיפוש, אך הוא לא יאפס את בחירת ברירת המחדל שלך.
לחץ כאן כדי להציג את האיור
בעמוד הבא מתחילים כיצד ליצור תוכנית VBA בפועל.
כאשר VBA "מתארח" על ידי יישום כמו Word או Excel, התוכנית "חיה" בקובץ המסמך המשמש את המארח. לדוגמה, ב- Word אתה יכול לשמור את 'מאקרו Word' שלך (זהו לא "מאקרו", אך לא נתלבט כרגע על טרמינולוגיה) לא במסמך Word או בתבנית Word.
עכשיו נניח שתוכנית VBA זו נוצרת ב- Word (התוכנית הפשוטה הזו פשוט משנה את הגופן למודגש עבור שורה שנבחרה) ונשמרת במסמך Word:
Sub AboutMacro () ' 'אודות מקרו מאקרו. מאקרו הקליט 9/9/9999 מאת דן מבוט. ' בחירה. יחידת HomeKey: = wdStory. בחירה. יחידת EndKey: = wdLine, הרחבה: = wdExtend. בחירה. גופן. מודגש = wdToggle. בחירה. יחידת EndKey: = wdStory. סיום משנה
בגירסאות קודמות של Office, ניתן היה לראות בבירור את קוד ה- VBA המאוחסן כחלק מהמסמך הקובץ במסמך Word שנשמר על ידי הצגתו בפנקס הרשימות שבו כל דבר במסמך Word יכול נראה. איור זה הופק עם גרסה קודמת של Word מכיוון שמיקרוסופט שינתה את פורמט המסמך בגירסה הנוכחית וקוד תוכנית VBA כבר לא מופיע כטקסט רגיל. אבל המנהלת זהה. באופן דומה, אם אתה יוצר גיליון אלקטרוני של Excel עם "מאקרו של Excel" הוא יישמר כחלק מקובץ .xlsm.
לחץ כאן כדי להציג את האיור
VBA וביטחון
אחד הטריקים היעילים ביותר בנגיף המחשב בעבר היה להכניס קוד VBA זדוני למסמך של Office. בגירסאות קודמות של Office, כשנפתח מסמך, הנגיף יכול לפעול באופן אוטומטי וליצור הרס במחשב שלך. חור האבטחה הפתוח הזה באופיס החל להשפיע על מכירות אופיס וזה באמת קיבל את תשומת לבה של מיקרוסופט. עם דור Office הנוכחי של 2010, מיקרוסופט תקעה היטב את החור. בנוסף לשיפורים שהוזכרו כאן, מיקרוסופט שיפרה את אבטחת Office בדרכים שאולי אפילו לא תבחין בהן עד לרמת החומרה. אם אתה מהסס להשתמש ב- VBA מכיוון ששמעת שזה לא בטוח, סמוך ובטוח שמיקרוסופט עשתה את הקילומטר הנוסף כדי לשנות את זה עכשיו.
השינוי החשוב ביותר היה ליצור סוג מסמך מיוחד רק למסמכי Office הכוללים תוכניות VBA. ב- Word, למשל, MyWordDoc.docx לא יכול להכיל תוכנית VBA מכיוון ש- Word לא יאפשר תוכניות בקובץ שנשמר עם סיומת קובץ "docx". יש לשמור את הקובץ כ- "MyWordDoc.docm" כדי לאפשר את תכנות VBA כחלק מהקובץ. ב- Excel סיומת הקובץ היא ".xlsm".
כדי להמשיך עם סוג מסמך משופר זה, מיקרוסופט יצרה מערכת משנה לאבטחה ב- Office בשם מרכז האמון. בעיקרון, באפשרותך להתאים אישית את האופן שבו יישום Office שלך מתייחס לפרטי פרטים במסמכים המכילים קוד VBA. אתה פותח את מרכז האמון מהכרטיסייה מפתחים ביישום Office שלך על ידי לחיצה על אבטחת מאקרו בקטע הקוד של הסרט.
לחץ כאן כדי להציג את האיור
חלק מהאפשרויות נועדו "להקשות" את יישומי Office שלך כך שקוד זדוני לא פועל ואחרים שנועד להקל על מפתחים ומשתמשים להשתמש ב- VBA מבלי שיש להם אבטחה להאטה שלא לצורך מטה. כפי שאתה יכול לראות, יש הרבה דרכים בהן אתה יכול להתאים אישית את האבטחה ולעבור את כולן הוא הרבה מעבר לתחום של מאמר זה. למרבה המזל, באתר של מיקרוסופט יש תיעוד נרחב בנושא זה. וזה גם מזל שהגדרות ברירת המחדל של האבטחה טובות לרוב הדרישות.
מכיוון VBA קשור ליישום Office המארח, אתה צריך להריץ אותו שם. נושא זה מכוסה החל מהעמוד הבא.
כיצד אוכל להריץ אפליקציית VBA
זו בעצם שאלה טובה מאוד מכיוון שהיא השאלה הראשונה שמשתמשים באפליקציה שלכם ישאלו. למעשה ישנן שתי דרכים:
-> אם תחליט לא להשתמש בבקרה, כמו כפתור, כדי להפעיל את התוכנית, עליך להשתמש בפקודה מאקרו בסרט (כרטיסיית מפתח, קבוצת קוד). בחר בתוכנית VBA ולחץ על הפעלה. אבל זה אולי נראה קצת יותר מדי עבור חלק מהמשתמשים שלך. לדוגמה, ייתכן שלא תרצה שהכרטיסייה 'מפתחים' תהיה אפילו זמינה עבורם. במקרה הזה ...
-> אתה צריך להוסיף משהו שהמשתמש יכול ללחוץ עליו או להקליד כדי להפעיל את היישום. במאמר זה, נסקור את בקרת הכפתור. אבל זה יכול להיות לחיצה על קיצור דרך, על אייקון בסרגל הכלים או אפילו על פעולת הזנת נתונים. אלה נקראים אירועים ומה נכתוב במאמרים זה ובמאוחר יותר קוד אירוע - קוד תוכנית המופעל אוטומטית כאשר אירוע ספציפי כלשהו - כמו לחיצה על כפתור כפתור - קורה.
UserForms, פקדי טפסים ובקרות ActiveX
אם אינך סתם בוחר מאקרו, הדרך הנפוצה ביותר להריץ תוכנית VBA היא ללחוץ על כפתור. כפתור זה יכול להיות בקרת טופס או בקרת ActiveX. במידה מסוימת הבחירות שלך תלויות ביישום Office בו אתה משתמש. Excel מספק אפשרויות שונות במקצת מאשר Word, למשל. אבל סוגים בסיסיים אלה של בקרות זהים.
מכיוון שהוא מציע הכי הרבה גמישות, בואו נראה מה תוכלו לעשות עם Excel 2010. הודעת טקסט פשוטה תוכנס לתא כאשר לוחצים על מספר כפתורים שונים רק כדי להבהיר את ההבדלים.
כדי להתחיל, צור חוברת עבודה חדשה של Excel ובחר בכרטיסייה מפתחים. (אם יש לך יישום אופיס אחר, וריאציה של הוראות אלה אמורה לעבוד.)
לחץ על סמל הכנס. נעבוד קודם עם כפתור בקרות הטפסים.
פקדי טפסים הם הטכנולוגיה הישנה יותר. ב- Excel הם הוצגו לראשונה בגרסה 5.0 בשנת 1993. כעת נעבוד עם VBA UserForms אך לא ניתן להשתמש בהם בקרות טפסים. הם גם לא תואמים לאינטרנט. פקדי טפסים ממוקמים ישירות על משטח גליון העבודה. מצד שני, לא ניתן להשתמש ישירות בבקרות ActiveX - שנחשיב להלן - ישירות בגיליונות העבודה.
פקדי טפסים משמשים בטכניקת "לחץ וצייר". לחץ על פקד טופס הכפתור. מצביע העכבר ישתנה לסימן פלוס. צייר את הפקד על ידי גרירה מעל פני השטח. כשאתה משחרר את כפתור העכבר, מופיע דו-שיח המבקש פקודת מאקרו להתחבר לכפתור.
לחץ כאן כדי להציג את האיור
במיוחד כשאתה יוצר בקרה לראשונה, לא יהיה לך מאקרו VBA שיחכה להתחבר אליו כפתור, אז לחץ על חדש ועורך ה- VBA ייפתח עם השם המוצע כבר מלא בקליפה של אירוע תת-רוטינה.
לחץ כאן כדי להציג את האיור
להשלמת יישום פשוט מאוד זה, פשוט הקלד את הצהרת קוד VBA זו בתוך המשנה:
תאים (2, 2) .Value = "לחצו על כפתור הטופס"
כפתור ActiveX כמעט זהה. הבדל אחד הוא ש- VBA מציב קוד זה בגליון העבודה, ולא במודול נפרד. להלן קוד האירוע המלא.
פקודת משנה פרטית לחצן 1_קליק () תאים (4, 2) .Value = "לחצו על כפתור ActiveX" סיום משנה
בנוסף להצבת פקדים אלה ישירות בגליון העבודה, באפשרותך להוסיף גם א UserForm לפרויקט ולמקם בו פקדים במקום זה. ל- UserForms - בערך אותו דבר כמו צורות חלונות - יש יתרונות רבים בכך שהם יכולים לנהל את הפקדים שלך יותר כמו יישום Visual Basic רגיל. הוסף UserForm לפרויקט בעורך Visual Basic. השתמש בתפריט תצוגה או לחץ באמצעות לחצן העכבר הימני ב- Project Explorer.
לחץ כאן כדי להציג את האיור
ברירת המחדל עבור UserForm היא לא להציג את הטופס. אז כדי להפוך אותו לגלוי (ולהפוך את הפקדים עליו לזמינים למשתמש), בצע את שיטת הצג של הטופס. הוספתי כפתור טופס אחר בדיוק בשביל זה.
לחצן משנה 2_קליק () UserForm1.Show. סיום משנה
תבחין כי UserForm הוא מודאלי כברירת מחדל. זה אומר שכאשר הטופס פעיל, כל השאר באפליקציה אינו פעיל. (לחיצה על הכפתורים האחרים לא עושה דבר, למשל.) אתה יכול לשנות זאת על ידי שינוי המאפיין ShowModal של UserForm ל- False. אבל זה מעמיק אותנו בתכנות. המאמרים הבאים בסדרה זו יסבירו יותר על כך.
הקוד עבור UserForm ממוקם באובייקט UserForm. אם תבחר באפשרות View Code עבור כל האובייקטים ב- Project Explorer, תראה שישנן שלוש תת-ערכות לחץ שונות של אירועי קליק שנמצאות בשלושה אובייקטים שונים. אבל כולם זמינים באותה חוברת עבודה.
לחץ כאן כדי להציג את האיור
בנוסף לאילוץ אירוע על ידי לחיצה על כפתור, VBA משמש גם להגיב לאירועים באובייקטים ביישום האירוח. לדוגמה, אתה יכול לזהות מתי גיליון אלקטרוני משתנה ב- Excel. לחלופין, תוכלו לזהות מתי מתווספת שורה למסד נתונים ב- Access ולכתוב תוכנית שתטפל באירוע הזה.
בנוסף ללחצני הפקודה המוכרים, תיבות הטקסט ורכיבים אחרים שאתה רואה בתוכניות כל הזמן, אתה יכול להוסיף רכיבים שהם למעשה חלק מגיליון האלקטרוני של Excel שלך. בתוך מסמך Word שלך. או לעשות את ההפך. זה הרבה מעבר ל"העתק והדבק ". לדוגמה, אתה יכול להציג גיליון אלקטרוני של Excel במסמך Word.
VBA מאפשר לך להשתמש בכל הכוח של יישום אופיס אחד באחר. לדוגמה, ל- Word יכולת חישוב פשוטה יחסית מובנית. אבל אקסל - ובכן - "מצטיינת" בחישוב. נניח שרצית להשתמש ביומן הטבעי של פונקציית הגמא (חישוב מתוחכם יחסית של מתמטיקה) במסמך Word שלך? באמצעות VBA אתה יכול להעביר ערכים לפונקציה זו באקסל ולקבל את התשובה בחזרה במסמך Word שלך.
ואתה יכול להשתמש בהרבה יותר מיישומי Office! אם תלחץ על הסמל "עוד בקרות", תוכל לראות רשימה ניכרת של דברים המותקנים במחשב שלך. לא כל אלה עובדים "מחוץ לקופסה" וכדאי שיהיה לך את התיעוד עבור כל אחד מהם, אבל זה נותן לך מושג עד כמה התמיכה רחבה ל- VBA.
מבין כל התכונות ב- VBA, ישנה תכונה שהיא שימושית יותר מכול שהיא. גלה מה זה בעמוד הבא.
חסכתי את הטוב ביותר לסוף אחרון! להלן טכניקה החלה על כל הלוח על כל יישומי Office. אתה תמצא את עצמך משתמש בו רבות ולכן אנו מכסים אותו כאן במבוא.
כשאתה מתחיל לקוד תוכניות VBA מתוחכמות יותר, אחת הבעיות הראשונות שתיתקל בהן היא כיצד לגלות על שיטות ותכונות של אובייקטים של Office. אם אתה כותב תוכנית VB.NET, לעתים קרובות תחפש דגימות קוד ודוגמאות לפתרון בעיה זו. אבל כשאתה מחשיב את כל יישומי האירוח השונים ואת העובדה שלכל אחד מהם יש מאות חפצים חדשים, בדרך כלל אתה לא יכול למצוא משהו שמתאים בדיוק למה שאתה צריך לעשות.
התשובה היא "הקלט מאקרו ..."
הרעיון הבסיסי הוא להפעיל את "הקלטת מאקרו", לעבור את השלבים של תהליך הדומה למה שאתה רוצה שהתוכנית שלך תשיג, ואז לבדוק את תוכנית VBA שהתקבלה בקוד ורעיונות.
אנשים רבים טועים לחשוב שאתה צריך להיות מסוגל להקליט בדיוק את התוכנית שאתה צריך. אבל זה בכלל לא צריך להיות מדויק. בדרך כלל זה מספיק טוב כדי להקליט תוכנית VBA שהיא פשוט "קרובה" למה שאתה רוצה ואז להוסיף את שינויי הקוד בכדי לגרום לזה לבצע את העבודה במדויק. זה כל כך קל ושימושי שלעתים להקליט תריסר תוכניות עם הבדלים קלים רק כדי לראות מה ההבדלים בקוד בתוצאה. זכור למחוק את כל הניסויים כשתסיים להסתכל עליהם!
כדוגמה, לחצתי על הקלטת מאקרו בעורך Word Visual Basic והקלדתי מספר שורות טקסט. הנה התוצאה. (נוסף המשך קו כדי לקצר אותם יותר.)
תת-מקרו 1 () ' מקרו 1 מאקרו. ' ' בחירה. TypeText טקסט: = _. "אלה התקופות בהן" בחירה. TypeText טקסט: = _. "נסה נשמות גברים. ה " בחירה. TypeText טקסט: = _. "חייל קיץ" בחירה. TypeText טקסט: = _. "ופטריוט השמש" בחירה. TypeText טקסט: = _. "בזמנים אלה יתכווץ מ-" בחירה. TypeText טקסט: = _. "שירות ארצם." בחירה. יחידת MoveUp: = wdLine, ספירה: = 1. בחירה. יחידת מפתח הבית: = wdLine. בחירה. יחידת MoveRight: = wdCharacter, _. ספירה: = 5, הרחבה: = wdExtend. בחירה. גופן. מודגש = wdToggle. סיום משנה
אף אחד לא לומד VBA רק לעצמו. אתה משתמש בו תמיד יחד עם יישום אופיס ספציפי. אז, כדי להמשיך ללמוד, יש כאן מאמרים המדגימים VBA המשמשים גם ב- Word וגם ב- Excel:
-> תחילת העבודה באמצעות VBA: שותף עובד Word
-> תחילת העבודה באמצעות VBA: שותף העבודה של Excel