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

סיכום

בעת הפיכת מוצר Office לאוטומטי מ- Visual Basic, ייתכן שיהיה שימושי להעביר חלק מהקוד למודול Microsoft Visual Basic for Applications (VBA) העשויים לפעול בתוך שטח התהליך של השרת. פעולה זו יכולה להגביר את מהירות הביצוע הכוללת עבור היישום שלך ולעזור להקל על בעיות אם השרת מבצע פעולה רק כאשר שיחה בתהליך.

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

מידע נוסף

הדוגמה הבאה מדגימה הוספת מודול קוד Microsoft Excel, אך באפשרותך להשתמש באותה טכניקה עבור Word PowerPoint מכיוון ששניהם משלבים את אותו מנגנון VBA.

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

החל מ- Microsoft Office XP, משתמש חייב להעניק גישה למודל האובייקטים של VBA לפני שכל קוד אוטומציה שנכתב כדי לטפל ב- VBA יעבוד. זוהי תכונת אבטחה חדשה עם Office XP. לקבלת מידע נוסף, עיין במאמר Knowledge base הבא:

282830 תוכניתית Access ל- Office XP VBA Project נדחתה

שלבים לבניית הדוגמה

  1. תחילה, צור קובץ טקסט חדש בשם KbTest.bas (ללא .txt הסיומת). זהו מודול הקוד שנוסף ל- Excel בזמן ריצה.

  2. בקובץ הטקסט, הוסף את שורות הקוד הבאות:

       Attribute VB_Name = "KbTest"

    ' Your Microsoft Visual Basic for Applications macro function takes 1
    ' parameter, the sheet object that you are going to fill.

    Public Sub DoKbTest(oSheetToFill As Object)
    Dim i As Integer, j As Integer
    Dim sMsg As String
    For i = 1 To 100
    For j = 1 To 10

    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheetToFill.Cells(i, j).Value = sMsg
    Next j
    Next i
    End Sub
  3. שמור את קובץ הטקסט במדריך הכתובות C:\KbTest.bas ולאחר מכן סגור את הקובץ.

  4. התחל Visual Basic וצור פרוייקט רגיל. Form1 נוצר כברירת מחדל.

  5. בתפריט Project, לחץ עלReferences ולאחר מכן בחר את גירסת ספריית המסמכים המתאימה המאפשרת לך להשתמש באיגוד מוקדם כדי Excel.

    לדוגמה, בחר אחת מהאפשרויות הבאות:

    • עבור Microsoft Office Excel 2007, בחר את הספריה 12.0.

    • עבור Microsoft Office Excel 2003, בחר את הספריה 11.0.

    • עבור Microsoft Excel 2002, בחר את הספריה 10.0.

    • עבור Microsoft Excel 2000, בחר את הספריה 9.0.

    • עבור Microsoft Excel 97, בחר את הספריה 8.0.

  6. הוסף לחצן ל- Form1 ומקום את הקוד הבא במפעיל עבור אירוע הלחיצה של הלחצן:

       Private Sub Command1_Click()
    Dim oXL As Excel.Application
    Dim oBook As Excel.Workbook
    Dim oSheet As Excel.Worksheet
    Dim i As Integer, j As Integer
    Dim sMsg As String

    ' Create a new instance of Excel and make it visible.
    Set oXL = CreateObject("Excel.Application")
    oXL.Visible = True

    ' Add a new workbook and set a reference to Sheet1.
    Set oBook = oXL.Workbooks.Add
    Set oSheet = oBook.Sheets(1)

    ' Demo standard Automation from out-of-process,
    ' this routine simply fills in values of cells.
    sMsg = "Fill the sheet from out-of-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    For i = 1 To 100
    For j = 1 To 10
    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheet.Cells(i, j).Value = sMsg
    Next j
    Next i

    ' You're done with the first test, now switch sheets
    ' and run the same routine via an inserted Microsoft Visual Basic
    ' for Applications macro.
    MsgBox "Done.", vbMsgBoxSetForeground
    Set oSheet = oBook.Sheets.Add
    oSheet.Activate

    sMsg = "Fill the sheet from in-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    ' The Import method lets you add modules to VBA at
    ' run time. Change the file path to match the location
    ' of the text file you created in step 3.
    oXL.VBE.ActiveVBProject.VBComponents.Import "C:\KbTest.bas"

    ' Now run the macro, passing oSheet as the first parameter
    oXL.Run "DoKbTest", oSheet

    ' You're done with the second test
    MsgBox "Done.", vbMsgBoxSetForeground

    ' Turn instance of Excel over to end user and release
    ' any outstanding object references.
    oXL.UserControl = True
    Set oSheet = Nothing
    Set oBook = Nothing
    Set oXL = Nothing

    End Sub
  7. עבור Excel 2002 ובגירסות מתקדמות יותר של Excel, עליך להפעיל את הגישה לפרוייקט VBA. לשם כך, השתמש באחת מהשיטות הבאות:

    • ב- Excel 2007, לחץ על לחצן Microsoft Office ולאחר מכן לחץ על Excel אפשרויות. לחץ על מרכז יחסי האמון ולאחר מכן לחץ על מרכז יחסי האמון הגדרות. לחץ על הגדרות מאקרו, לחץ כדי לבחור את תיבת הסימון Access אמון במודל האובייקטים של פרוייקט VBA ולאחר מכן לחץ על אישור פעמיים.

    • ב- Excel 2003 וב בגירסאות קודמות של Excel, הצבע על מאקרובתפריט כלים ולאחר מכן לחץ על אבטחה. בתיבת הדו-שיח אבטחה, לחץ על הכרטיסיה מקורות מהימנים ולאחר מכן לחץ כדי לבחור בתיבת הסימון Visual Basic Project אמון.

  8. הפעל את Visual Basic הפרוייקט.

הפניות

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

http://support.microsoft.com/ofd

זקוק לעזרה נוספת?

מעוניין באפשרויות נוספות?

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

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

האם מידע זה היה שימושי?

עד כמה אתם מרוצים מאיכות השפה?
מה השפיע על החוויה שלך?
בלחיצה על 'שלח', אתה מאפשר למשוב שלך לשפר מוצרים ושירותים של Microsoft. מנהל ה-IT שלך יוכל לאסוף נתונים אלה. הצהרת הפרטיות.

תודה על המשוב!

×