כיצד להכניס טבלת אקסל למילה באמצעות VBA
מיקרוסופט אופיס מייקרוסופט וורד מיקרוסופט מיקרוסופט מצטיינת גיבור Word / / April 29, 2020
עודכן לאחרונה ב
VBA הוא כלי חזק מאוד בו תוכלו להשתמש כדי להפוך אוטומציה רבה לעבודה בין יישומי Microsoft Office מרובים. פעילות אחת נפוצה שתוכלו לבצע אוטומציה באמצעות VBA היא הכנסת טבלת אקסל למסמך Word.
Visual Basic for Applications (VBA) הוא כלי רב עוצמה שאתה יכול להשתמש בו כדי להפוך אוטומציה רבה לעבודה בין יישומי Microsoft Office מרובים. פעילות אחת נפוצה שתוכלו לבצע אוטומציה באמצעות VBA היא הכנסת טבלת אקסל למסמך Word.
יש שתי דרכים לעשות זאת. הראשונה היא אוטומציה של העתקה והדבקה ישרים של טווח קיים מ- Excel לטבלה חדשה במסמך Word. השנייה היא ביצוע חישובים באקסל, יצירת טבלה חדשה ב- Word וכתיבת התוצאות לטבלה.
אתה יכול לנסות הקלט מאקרו לעשות זאת, אך פקודות מאקרו רק יאפשרו לך לבצע משימות אוטומטיות בתוך Word. במאמר זה תלמד כיצד לכתוב קוד VBA לאוטומציה של פעולות אלה בין Excel ל- Word.
העתק והדבק טווח אקסל לתוך Word באמצעות VBA
בשתי הדוגמאות נתחיל בגיליון אלקטרוני של Excel. מדגם זה הוא רשימת הזמנות רכישה עבור מגוון מוצרים.
נניח שאתה רוצה להעתיק ולהדביק את כל טווח התאים בגליון העבודה למסמך Word. לשם כך עליכם לכתוב פונקציית VBA שתפעל כשתלחצו על כפתור "העתק למילה".
בחר מפתח מהתפריט ובחר הכנס מקבוצת בקרות בסרט. ברשימה הנפתחת בחר את בקרת הכפתור תחת פקדי ActiveX.
בשלב הבא, צייר את לחצן הפקודה בצד ימין של הגליון. אתה יכול לשנות את הכיתוב ל"העתק ל- Word "על ידי לחיצה ימנית על הכפתור ובחירה נכסים. שנה את טקסט הכיתוב ותוכל להשתמש בגופן לעדכון גודל וסגנון הגופן.
פתק: אם אינך רואה מפתח בתפריט ה- Excel שלך, ואז הוסף אותו. בחר קובץ, אפשרויות, התאם אישית סרט, ובחר כל הפקודות מהתפריט הנפתח השמאלי. ואז זוז מפתח מהחלונית השמאלית לימין ובחר אישור לסיום.
כתוב את העתק והדבק את קוד ה- VBA
עכשיו אתה מוכן להתחיל לכתוב קוד VBA. כדי להתחיל, לחץ פעמיים על החדש העתק ל- Word כפתור לפתיחת חלון עורך הקוד.
אתה אמור לראות תת-כינוי שנקרא Commandbutton1_Click () כמוצג להלן.
למטה תרצה להעתיק כל קטע קוד. לפני שתתחיל בקידוד, כדי לשלוט ב- Word במחשב באמצעות VBA, תצטרך להפעיל את ספריית הייחוס של Microsoft Word.
בעורך הקוד, בחר כלים מהתפריט ובחר הפניות. ברשימת הפניות הזמינות, גלול מטה והפעל ספריית אובייקטים של מיקרוסופט וורד 16.0.
בחר אישור ואתה מוכן להתחיל בקידוד. אנו נעבור על כל קטע קוד בכל פעם, כך שתבינו מה הקוד הזה עושה ומדוע.
ראשית, עליכם ליצור את המשתנים והאובייקטים שיחזיקו את הטווח ויאפשרו לכם לשלוט ביישום Word.
עמעום tblRange כ- Excel. טווח
עמעום WordApp כמו Word. יישום
עמום WordDoc כמילה. מסמך
טשטש טבלת Word כמילה. שולחן
שורת הקוד הבאה בוחרת טווח תאים ספציפי ושומרת אותו לאובייקט טווח אקסל ב- VBA.
הגדר tblRange = ThisWorkbook. גיליונות עבודה ("גיליון 1"). טווח ("A2: G44")
בשלב הבא ברצונך לבדוק אם יישום Word כבר פתוח במחשב. אתה יכול להפנות ליישום Word באמצעות הפניה מיוחדת "מחלקה" עם הפקודה GetObject VBA כדי להשיג זאת. אם Word עדיין לא נפתח, השורה הבאה תפעיל אותו באמצעות הפונקציה CreateObject. השורה "בשגיאה המשך לחדש הבא" מונעת שגיאה בפונקציה הראשונה של GetObject (אם Word עדיין לא פתוחה) לעצור את ביצוע השורה הבאה בתוכנית.
בשגיאה חידוש הבא
הגדר את WordApp = GetObject (class: = "Word. יישום")
אם WordApp אינו דבר, הגדר WordApp = CreateObject (class: = "Word. יישום")
כעת, משושם יישום Word, ברצונך להפוך אותו גלוי למשתמש ולהפעיל אותו לשימוש.
WordApp. גלוי = נכון
WordApp. הפעל
בשלב הבא ברצונך ליצור מסמך חדש בתוך יישום Word.
הגדר WordDoc = WordApp. מסמכים. הוסף
לבסוף תעתיק ותדביק את טווח התאים לטבלה חדשה במסמך Word.
tblRange. עותק
WordDoc. פסקאות (1). סידור. PasteExcelTable _
LinkedToExcel: = שווא, _
עיצוב Word: = שווא, _
RTF: = לא נכון
המתגים בפונקציה שלמעלה יכניסו טבלה לא מקושרת תוך שימוש בעיצוב מקורי של Excel (לא בפורמט Word) ולא באמצעות פורמט טקסט עשיר.
לבסוף, כדי להתמודד עם טווחי Excel שהם רחבים יותר מהמסמך, תצטרך לבצע התאמה אוטומטית של הטבלה החדשה כך שהיא תיכנס לשוליים של מסמך ה- Word החדש שלך.
הגדר WordTable = WordDoc. שולחנות (1)
לוח שולחן. AutoFitBehavior (wdAutoFitWindow)
ועכשיו סיימת! שמור את הקובץ כקובץ Excel המאפשר מאקרו (סיומת .xlsm). סגור את העורך, שמור שוב את קובץ האקסל המקורי ולחץ על כפתור הפקודה שלך כדי לראות את הקוד שלך בפעולה!
כתוב תוצאות אקסל לשולחן מילים עם VBA
בסעיף הבא זה תכתוב קוד VBA המבצע חישובים על ערכים ב- Excel ותכתוב אותם שולחן ב- Word.
לדוגמה זו, אנו נשאב 10 שורות של נתונים, נחשב ונכתוב את התוצאות לטבלה במסמך Word. כמו כן, הטבלה המקורית תכלול ארבע עמודות, וקוד ה- VBA ימשוך את עשר שורות הנתונים הראשונות מאותו טווח.
ממש כמו בקטע האחרון, נעבור על כל קטע בכל פעם, כך שתבינו מה הקוד הזה עושה ומדוע.
ראשית, צור את המשתנים והאובייקטים שיכולים להחזיק את הנתונים ולאפשר לך לכתוב ליישום Word.
עמעום tblRange כ- Excel. טווח
עמעום WrdRange כמילה. טווח
עמעום WordApp כמו Word. יישום
עמום WordDoc כמילה. מסמך
טשטש טבלת Word כמילה. שולחן
IntRows עמומים
עמודות עמודות עמומות
אפלולית כמחרוזת
מחרוזת עמומה כמחרוזת
אינטים יחידות כהות וריאנט
ערוך intCost כווריאנט
עמום intototal כווריאנט
בשלב הבא, קבע את סך העמודות והשורות שברצונך לקרוא מתוך טווח האקסל.
intNoOfRows = 10
intNoOfColumns = 5
חזור על אותו קוד כמו החלק האחרון שיפתח את Word אם הוא כבר לא פתוח.
בשגיאה חידוש הבא
הגדר את WordApp = GetObject (class: = "Word. יישום")
אם WordApp אינו דבר, הגדר WordApp = CreateObject (class: = "Word. יישום")
WordApp. גלוי = נכון
WordApp. הפעל
הגדר WordDoc = WordApp. מסמכים. הוסף
ארבע השורות הבאות יוצרות טבלה בתוך אותו מסמך Word שנפתח לאחרונה.
הגדר WrdRange = WordDoc. טווח (0, 0)
WordDoc. שולחנות. הוסף WrdRange, intNoOfRows, intNoOfColumns
הגדר WordTable = WordDoc. שולחנות (1)
לוח שולחן. גבולות. אפשר = נכון
לבסוף, הלולאה הבאה תבצע פעולות אלה:
- לכל שורה, הכניסו את תאריך ההזמנה, הפריט, היחידות והעלות למשתנים
- חשב את עלות זמני היחידה (המכירה הכוללת) ושמור אותה במשתנה
- עבור כל עמודה, כתוב את הערכים לטבלת Word, כולל המכירה הכוללת המחושבת בתא האחרון
- עבור לשורה הבאה וחזור על הנוהל שלמעלה
כך נראה קוד זה:
עבור i = 1 ל- intNoOfRows
עבור j = 1 לעמודות intNoOf
אם j = 1 אז
strDate = tblRange. תאים (i + 1, j). ערך
strItem = tblRange. תאים (i + 1, j + 1). ערך
intUnits = Val (tblRange. תאים (i + 1, j + 2). ערך)
intCost = Val (tblRange. תאים (i + 1, j + 3). ערך)
intTotal = intUnits * intCost
סוף אם
בחר מקרה j
המקרה הוא = 1
לוח שולחן. תא (i, j). סידור. טקסט = strDate
המקרה הוא = 2
לוח שולחן. תא (i, j). סידור. טקסט = strItem
המקרה הוא = 3
לוח שולחן. תא (i, j). סידור. טקסט = intUnits
המקרה הוא = 4
לוח שולחן. תא (i, j). סידור. טקסט = intCost
המקרה הוא = 5
לוח שולחן. תא (i, j). סידור. טקסט = intototal
מקרה אחר
סיום בחירה
הבא
הבא
הפונקציה "תאים" בחלק הראשון מושכת את ערכי תאים מתוך Excel. תאים (x, y) פירושם שהם מושכים את ערך התא בשורה x ועמודה y.
הפונקציה "תא" בחלק האחרון כותבת לתאים בטבלת הוורד, תוך שימוש באותן הקצאות שורה ועמודה.
לאחר שתשמור והפעלת קוד VBA זה, תראה את התוצאות במסמך ה- Word החדש שלך.
כפי שאתה יכול לראות, זה לא מסובך מדי ליצור אוטומציה שימושית בין Excel ל- Word. זה רק עניין להבין כיצד "האובייקטים" השונים עובדים שיכולים ליצור ולשלוט הן באקסל והן ביישומי Word במחשב שלך.