שימוש באובייקט חוברת עבודה ב- Excel VBA (פתח, סגור, שמור, הגדר)

תוכן העניינים

במדריך זה אסקור את אופן העבודה עם חוברות עבודה ב- Excel באמצעות VBA.

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

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

אז בואו נתחיל.

כל הקודים שאני מזכיר במדריך זה צריכים להיות ממוקמים בעורך Visual Basic. עבור לסעיף 'היכן לשים את קוד VBA' כדי לדעת כיצד הוא פועל.

אם אתה מעוניין ללמוד VBA בדרך הקלה, בדוק את שלי הדרכה מקוונת ב- Excel VBA.

הפניה לחוברת עבודה באמצעות VBA

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

שימוש בשמות של חוברות עבודה

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

נתחיל בדוגמא פשוטה.

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

תת ActivateWorkbook () חוברות עבודה ("דוגמאות.קסלסקס"). הפעל סיום תת

שים לב שעליך להשתמש בשם הקובץ יחד עם הסיומת אם הקובץ נשמר. אם הוא לא נשמר, תוכל להשתמש בשם ללא סיומת הקובץ.

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

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

תת ActivateWorkbook () חוברות עבודה ("דוגמאות.קסלסקס"). גליונות עבודה ("גיליון 1"). הפעל טווח ("A1"). בחר סיום משנה

הקוד לעיל מפעיל תחילה את גיליון 1 בחוברת העבודה של דוגמאות. Xlsx ולאחר מכן בוחר את התא A1 בגיליון.

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

שימוש במספרי אינדקס

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

לדוגמה, אם יש לך שלוש חוברות עבודה פתוחות, הקוד הבא יראה לך את שמות שלוש חוברות העבודה בתיבת הודעות (אחת בכל פעם).

Sub WorkbookName () MsgBox חוברות עבודה (1) .Name MsgBox חוברות עבודה (2) .Name MsgBox חוברות עבודה (3). שם סיום תת

הקוד לעיל משתמש ב- MsgBox - שהיא פונקציה המציגה תיבת הודעות עם הטקסט/הערך שצוין (שהוא שם חוברת העבודה במקרה זה).

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

Excel מתייחס לחוברת העבודה שנפתחה תחילה כדי לקבל את מספר האינדקס כ- 1, ואת הבא כ- 2 וכן הלאה.

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

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

תת CloseWorkbooks () Dim WbCount כמספר שלם WbCount = Workbooks.Count For i = WbCount לשלב -1 אם חוברות עבודה (i). Name ThisWorkbook.Name ואז חוברות עבודה (i). סגור סוף אם הבא אני מסיים תת

הקוד לעיל סופר את מספר חוברות העבודה הפתוחות ולאחר מכן עובר את כל חוברות העבודה באמצעות הלולאה לכל אחד.

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

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

שים לב שהפעלנו את הלולאה מ- WbCount ל- 1 עם שלב -1. זה נעשה כמו בכל לולאה, מספר חוברות העבודה הפתוחות הולך ופוחת.

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

שימוש ב- ActiveWorkbook

ActiveWorkbook, כפי שהשם מרמז, מתייחס לחוברת העבודה הפעילה.

הקוד שלהלן יראה לך את שם חוברת העבודה הפעילה.

תת ActiveWorkbookName () MsgBox ActiveWorkbook.Name סוף תת

כאשר אתה משתמש ב- VBA להפעלת חוברת עבודה נוספת, החלק של ActiveWorkbook ב- VBA לאחר מכן יתחיל להתייחס לחוברת העבודה המופעלת.

להלן דוגמא לכך.

אם יש לך חוברת עבודה פעילה ואתה מוסיף לתוכה את הקוד הבא ומריץ אותו, הוא יציג תחילה את שם חוברת העבודה שיש לה את הקוד ולאחר מכן את השם דוגמאות. Xlsx (שהופעל על ידי הקוד).

תת ActiveWorkbookName () MsgBox ActiveWorkbook.Name חוברות עבודה ("דוגמאות.קסלסקס"). הפעל את MsgBox ActiveWorkbook.Name סיום תת

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

שימוש ב- ThisWorkbook

חוברת עבודה זו מתייחסת לחוברת העבודה שבה הקוד מבוצע.

לכל חוברת עבודה יהיה אובייקט ThisWorkbook כחלק ממנו (גלוי בסייר הפרויקטים).

'ThisWorkbook' יכול לאחסן פקודות מאקרו רגילות (בדומה לאלה שאנו מוסיפים מודולים) וכן נהלי אירועים. הליך אירוע הוא דבר המופעל על בסיס אירוע - כגון לחיצה כפולה על תא, או שמירת חוברת עבודה או הפעלת דף עבודה.

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

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

Sub Workbook_SheetBeforeDoubleClick (ByVal Sh as Object, ByVal Target as Range, Cancel as Boolean) MsgBox Target.Address End Sub

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

הקוד שלהלן יחזיר את שם חוברת העבודה שבה הקוד מבוצע.

Sub ThisWorkbookName () MsgBox ThisWorkbook.Name סיום תת

היתרון בשימוש ב- ThisWorkbook (על פני ActiveWorkbook) הוא שהוא יתייחס לאותו חוברת עבודה (זו שיש בה את הקוד) בכל המקרים. אז אם אתה משתמש בקוד VBA להוספת חוברת עבודה חדשה, חוברת ActiveWork הייתה משתנה, אך ThisWorkbook עדיין יתייחס לזה שיש לו את הקוד.

יצירת אובייקט חוברת עבודה חדשה

הקוד הבא ייצור חוברת עבודה חדשה.

תת צור NewWorkbook () חוברות עבודה

כאשר אתה מוסיף חוברת עבודה חדשה, הוא הופך לחוברת העבודה הפעילה.

הקוד הבא יוסיף חוברת עבודה חדשה ולאחר מכן יראה לך את שם חוברת העבודה (שיהיה שם ברירת המחדל של סוג Book1).

תת צור NewWorkbook () חוברות עבודה. הוסף MsgBox ActiveWorkbook.Name סיום תת

פתח חוברת עבודה באמצעות VBA

אתה יכול להשתמש ב- VBA כדי לפתוח חוברת עבודה ספציפית כאשר אתה יודע את נתיב הקובץ של חוברת העבודה.

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

תת OpenWorkbook () חוברות עבודה.פתוח ("C: \ Users \ sumit \ Documents \ Example.xlsx") סיום תת

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

תת OpenWorkbook () חוברות עבודה.פתוח ("דוגמאות.קסלסקס") סוף משנה

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

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

הקוד שלהלן יבדוק את מיקום הקובץ ואם הוא אינו קיים, הוא יראה הודעה מותאמת אישית (לא הודעת השגיאה):

תת OpenWorkbook () אם Dir ("C: \ Users \ sumit \ Documents \ Example.xlsx") "" ואז חוברות עבודה. פתח ("C: Users Sumit Documents Exx.xlsx" אחר MsgBox "הקובץ לא לא קיים "סוף אם סוף תת

תוכל גם להשתמש בתיבת הדו -שיח פתח כדי לבחור את הקובץ שברצונך לפתוח.

תת OpenWorkbook () על חידוש שגיאה המשך הבא FilePath כמחרוזת FilePath = Application.GetOpenFilename Workbooks.Open (FilePath) סיום תת

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

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

קָשׁוּר: למד הכל אודות טיפול בשגיאות ב- Excel VBA

שמירת חוברת עבודה

כדי לשמור את חוברת העבודה הפעילה, השתמש בקוד שלהלן:

תת SaveWorkbook () ActiveWorkbook.Save סוף משנה

קוד זה פועל עבור חוברות העבודה שכבר נשמרו קודם לכן. כמו כן, מכיוון שחוברת העבודה מכילה את המאקרו לעיל, אם היא לא נשמרה כקובץ .xlsm (או .xls), תאבד את המאקרו כשתפתח אותו לאחר מכן.

אם אתה שומר את חוברת העבודה בפעם הראשונה, הוא יראה לך הודעה כפי שמוצג להלן:

כשאתה שומר בפעם הראשונה, עדיף להשתמש באפשרות 'Saveas'.

הקוד שלהלן ישמור את חוברת העבודה הפעילה כקובץ .xlsm במיקום ברירת המחדל (שהיא תיקיית המסמך במערכת שלי).

תת SaveWorkbook () שם קובץ ActiveWorkbook.SaveAs: = "Test.xlsm", FileFormat: = xlOpenXMLWorkbookMacroEnabled End Sub

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

תת SaveWorkbook () שם קובץ ActiveWorkbook.SaveAs: = "C: \ Users \ sumit \ Desktop \ Test.xlsm", FileFormat: = xlOpenXMLWorkbookMacroEnabled End Sub

אם אתה רוצה שהמשתמש יקבל את האפשרות לבחור את המיקום לשמירת הקובץ, תוכל להתקשר לתיבת הדו -שיח Saveas. הקוד שלהלן מציג את תיבת הדו -שיח Saveas ומאפשר למשתמש לבחור את המיקום שבו יש לשמור את הקובץ.

תת SaveWorkbook () Dim FilePath כמחרוזת FilePath = Application.GetSaveAsFilename ActiveWorkbook.SaveAs שם קובץ: = FilePath & ".xlsm", FileFormat: = xlOpenXMLWorkbookMacroEnabled End Sub

שים לב שבמקום להשתמש ב- FileFormat: = xlOpenXMLWorkbookMacroEnabled, תוכל גם להשתמש ב- FileFormat: = 52, כאשר 52 הוא הקוד xlOpenXMLWorkbookMacroEnabled.

שמירת כל חוברות העבודה הפתוחות

אם יש לך יותר מחוברת עבודה אחת ואתה רוצה לשמור את כל חוברות העבודה, תוכל להשתמש בקוד שלהלן:

תת שמור כל חוברות העבודה () עמום wb כחוברת עבודה עבור כל wb בחוברות עבודה wb. שמור wb סוף המשנה הבאה

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

אם ברצונך לשמור רק את חוברות העבודה שנשמרו בעבר, תוכל להשתמש בקוד שלהלן:

תת SaveAllWorkbooks () Dim wb כחוברת עבודה עבור כל wb בחוברות עבודה אם wb.Path "" ואז wb.Save End If הבא wb End Sub

שמירה וסגירה של כל חוברות העבודה

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

תת CloseandSaveWorkbooks () Dim wb כחוברת עבודה עבור כל wb בחוברות עבודה אם wb.Name ThisWorkbook.Name ואז wb.Close SaveChanges: = End True אם הבא wb סוף המשנה

הקוד לעיל יסגור את כל חוברות העבודה (למעט חוברת העבודה שיש לה את הקוד - ThisWorkbook). במקרה של שינויים בחוברות עבודה אלה, השינויים יישמרו. במקרה שיש חוברת עבודה שמעולם לא נשמרה, היא תציג את תיבת הדו -שיח שמירה בשם.

שמור עותק של חוברת העבודה (עם חותמת זמן)

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

להלן קוד ה- VBA שייצור עותק של חוברת העבודה שלך וישמור אותו במיקום שצוין.

Sub CreateaCopyofWorkbook () ThisWorkbook.SaveCopyAs שם קובץ: = "C: \ Users \ sumit \ Desktop \ BackupCopy.xlsm" סיום תת

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

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

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

Sub Sub Private Workbook_BeforeSave (ByVal SaveAsUI כבולאני, בטל כבולאני) ThisWorkbook.SaveCopyAs שם קובץ: = "C: \ Users \ sumit \ Desktop \ BackupCopy" ופורמט (עכשיו (), "dd-mm-yy-hh-mm-ss -AMPM ") &" .xlsm "Sub Sub

הקוד לעיל יוצר עותק בכל פעם שאתה מפעיל מאקרו זה ומוסיף חותמת תאריך/שעה לשם חוברת העבודה.

צור חוברת עבודה חדשה לכל גליון עבודה

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

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

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

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

משנה CreateWorkbookforWorksheets () Dim ws As גליון עבודה Dim wb כחוברת עבודה עבור כל ws ב- ThisWorkbook.Worksheets Set wb = Workbooks.Add ws.Copy Before: = wb.Sheets (1) Application.DisplayAlerts = False wb.Sheets (2) .Delete Application.DisplayAlerts = True wb.SaveAs "C: Users sumit \ Desktop \ Test \" & ws.Name & ".xlsx" wb.Close הבא ws End Sub

בקוד לעיל, השתמשנו בשני משתנים 'ws' ו- 'wb'.

הקוד עובר בכל גליון עבודה (באמצעות הלולאה For Every Next Next) ויוצר עבורו חוברת עבודה. הוא משתמש גם בשיטת ההעתקה של אובייקט גליון העבודה כדי ליצור עותק של גליון העבודה בחוברת העבודה החדשה.

שים לב שהשתמשתי במשפט SET כדי להקצות את המשתנה 'wb' לכל חוברת עבודה חדשה שנוצרת על ידי הקוד.

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

הקצה אובייקט חוברת עבודה למשתנה

ב- VBA, תוכל להקצות אובייקט למשתנה ולאחר מכן להשתמש במשתנה להתייחס לאובייקט זה.

לדוגמה, בקוד שלהלן, אני משתמש ב- VBA כדי להוסיף חוברת עבודה חדשה ולאחר מכן להקצות את חוברת העבודה הזו למשתנה wb. לשם כך עלי להשתמש בהצהרת SET.

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

Sub AssigntoVariable () Dim wb כערכת חוברות עבודה wb = Workbooks.Add wb.SaveAs שם קובץ: = "C: \ Users \ sumit \ Desktop \ Beisp.xlsx" סיום תת

שים לב כי השלב הראשון בקוד הוא הכרזה על 'wb' כמשתנה מסוג חוברת עבודה. זה אומר ל- VBA כי משתנה זה יכול להכיל את אובייקט חוברת העבודה.

המשפט הבא משתמש ב- SET כדי להקצות את המשתנה לחוברת העבודה החדשה שאנו מוסיפים. לאחר ביצוע הקצאה זו, נוכל להשתמש במשתנה wb כדי לשמור את חוברת העבודה (או לעשות איתה משהו אחר).

לולאה באמצעות חוברות עבודה פתוחות

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

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

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

תת CloseandSaveWorkbooks () Dim wb כחוברת עבודה עבור כל wb בחוברות עבודה אם wb.Name ThisWorkbook.Name ואז wb.Close SaveChanges: = סוף נכון אם הבא wb סוף המשנה

הקוד לעיל משתמש בלולאה לכל אחד כדי לעבור על כל חוברת עבודה באוסף חוברות העבודה. לשם כך, תחילה עלינו להכריז על 'wb' כמשתנה מסוג חוברת העבודה.

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

אותו הדבר ניתן להשיג גם בלולאה אחרת כפי שמוצג להלן:

תת CloseWorkbooks () Dim WbCount כמספר שלם WbCount = חוברות עבודה עבור i = WbCount לשלב -1 אם חוברות עבודה (i). שם ThisWorkbook.Name ואז חוברות עבודה (i).

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

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

שגיאה בעת עבודה עם אובייקט חוברת העבודה (שגיאת זמן ריצה '9')

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

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

להלן כמה מהסיבות האפשריות שעלולות להוביל לשגיאה זו:

  • חוברת העבודה שאליה אתה מנסה לגשת אינה קיימת. לדוגמה, אם אני מנסה לגשת לחוברת העבודה החמישית באמצעות חוברות עבודה (5), ופתוחים רק 4 חוברות עבודה, אז אקבל את השגיאה הזו.
  • אם אתה משתמש בשם שגוי כדי להתייחס לחוברת העבודה. לדוגמה, אם שם חוברת העבודה שלך הוא דוגמאות.קסלסקס ואתה משתמש בדוגמא.קסלסקס. אז זה יראה לך את השגיאה הזו.
  • אם לא שמרת חוברת עבודה ואתה משתמש בתוסף, תקבל שגיאה זו. לדוגמה, אם שם חוברת העבודה שלך הוא ספר 1 ואתה משתמש בשם ספר 1 .קסלסקס מבלי לשמור אותו, תקבל שגיאה זו.
  • חוברת העבודה אליה אתה מנסה לגשת סגורה.

קבל רשימה של כל חוברות העבודה הפתוחות

אם ברצונך לקבל רשימה של כל חוברות העבודה הפתוחות בחוברת העבודה הנוכחית (חוברת העבודה שבה אתה מפעיל את הקוד), תוכל להשתמש בקוד שלהלן:

תת GetWorkbookNames () Dim wbcount כמספר שלם wbcount = Workbooks.Count ThisWorkbook.Worksheets.Add ActiveSheet.Range ("A1"). הפעל עבור i = 1 לטווח wbcount ("A1"). קיזוז (i - 1, 0). ערך = חוברות עבודה (i). שם הבא i סוף משנה

הקוד לעיל מוסיף דף עבודה חדש ולאחר מכן מפרט את שם כל חוברות העבודה הפתוחות.

אם אתה רוצה לקבל גם את נתיב הקבצים שלהם, אתה יכול להשתמש בקוד שלהלן:

תת GetWorkbookNames () Dim wbcount כמספר שלם wbcount = Workbooks.Count ThisWorkbook.Worksheets.Add ActiveSheet.Range ("A1"). הפעל עבור i = 1 לטווח wbcount ("A1"). קיזוז (i - 1, 0). ערך = חוברות עבודה (i). נתיב & "\" וחוברות עבודה (i). שם הבא i סוף משנה

פתח את חוברת העבודה שצוין על ידי לחיצה כפולה על התא

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

Sub Workbook_SheetBeforeDoubleClick (ByVal Sh as Object, ByVal Target as Range, Cancel as Boolean) חוברות עבודה. פתח יעד. תת סוף ערך

קוד זה יוצב בחלון הקוד של ThisWorkbook.

כדי לעשות זאת:

  • לחץ פעמיים על האובייקט ThisWorkbook במחקר הפרויקטים. שים לב שהאובייקט ThisWorkbook צריך להיות בחוברת העבודה שבה אתה רוצה פונקציונליות זו.
  • העתק והדבק את הקוד למעלה.

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

היכן לשים את קוד ה- VBA

תוהה לאן קוד VBA הולך בחוברת העבודה שלך ב- Excel?

ל- Excel יש תומך תומך ב- VBA שנקרא עורך VBA. עליך להעתיק ולהדביק את הקוד בחלון קוד המודול של עורך VB.

להלן השלבים לביצוע פעולה זו:

  1. עבור לכרטיסייה מפתחים.
  2. לחץ על האפשרות Visual Basic. פעולה זו תפתח את עורך ה- VB בקצה האחורי.
  3. בחלונית סייר הפרויקט בעורך VB, לחץ באמצעות לחצן העכבר הימני על כל אובייקט עבור חוברת העבודה שבה ברצונך להכניס את הקוד. אם אינך רואה את סייר הפרוייקטים עבור לכרטיסייה תצוגה ולחץ על סייר הפרוייקטים.
  4. עבור אל הוספה ולחץ על מודול. זה יכניס אובייקט מודול לחוברת העבודה שלך.
  5. העתק והדבק את הקוד בחלון המודול.

אולי תאהב גם את מדריכי ה- VBA הבאים של Excel:

  • כיצד להקליט מאקרו ב- Excel.
  • יצירת פונקציה מוגדרת משתמש ב- Excel.
  • כיצד ליצור ולהשתמש בתוסף ב- Excel.
  • כיצד לרזות פקודות מאקרו על ידי הצבתה בחוברת העבודה המאקרו האישית.
  • קבל את רשימת שמות הקבצים מתיקייה ב- Excel (עם ובלי VBA).
  • כיצד להשתמש בפונקציית InStr VBA של Excel (עם דוגמאות מעשיות).
  • כיצד למיין נתונים ב- Excel באמצעות VBA (מדריך שלב אחר שלב).

תוכל לעזור בפיתוח האתר, שיתוף הדף עם החברים שלך

wave wave wave wave wave