كيفية أتمتة Microsoft Excel من Visual Basic

ملخص

توضح هذه المقالة كيفية إنشاء ومعالجه Excel باستخدام التنفيذ التلقائي من Visual Basic.

مزيد من المعلومات

هناك طريقتان للتحكم في ملقم أتمتة: باستخدام الربط المتأخر أو الربط المبكر. باستخدام ربط في وقت التشغيل، أساليب غير مرتبطة حتى وقت التشغيل وخادم التنفيذ التلقائي التي تم تعريفه ككائن. مع الربط المبكر، التطبيق الخاص بك يعرف وقت التصميم الدقيق نوع الكائن سيتم الاتصال مع، ويمكنك تعريف الكائنات الخاصة بها كنوع معين. يستخدم هذا النموذج الربط المبكر يعتبر أفضل في معظم الحالات لأنها تتيح الحصول على أداء أفضل وأفضل أمان النوع.

الربط المبكر إلى ملقم أتمتة، تحتاج إلى تعيين مرجع إلى مكتبة النوع ذلك الملقم. في Visual Basic، يتم ذلك من خلال مربع حوار المراجع العثور على ضمن المشروع | قائمة المراجع. لهذا النموذج، سوف تحتاج إلى إضافة مرجع إلى مكتبة النوع ل Excel قبل تشغيل التعليمات البرمجية. راجع الخطوات أدناه على كيفية إضافة المرجع.

إنشاء نموذج التنفيذ التلقائي

  1. بدء تشغيل Visual Basic وإنشاء مشروع EXE قياسي جديد. يتم إنشاء Form1 افتراضياً.
  2. انقر فوقالمشروع وانقر فوق المراجع. يظهر مربع حوار المراجع. قم بالتمرير إلى أسفل القائمة حتى العثور على مكتبة كائنات Microsoft Excel، ثم حدد الصنف المراد إضافة مرجع إلى Excel. إذا لم يظهر في القائمة مكتبة الكائن الصحيح لإصدار Excel، تأكد من أن لديك إصدار Excel مثبتاً بشكل صحيح.

    ملاحظات
    • إذا كان يتم أتمتة Microsoft Office Excel 2007، يظهر مكتبة النوع كائن Microsoft Excel 12.0 مكتبة في قائمة المراجع.
    • إذا كان يتم أتمتة Microsoft Office Excel 2003، يظهر مكتبة النوع مكتبة كائنات 11.0 Microsoft Excel في قائمة المراجع.
    • إذا كان يتم أتمتة Microsoft Excel 2002، مكتبة النوع يظهر
      مكتبة كائنات 10.0 Microsoft Excel في قائمة المراجع
    • إذا كان يتم أتمتة Microsoft Excel 2000، مكتبة النوع يظهر
      مكتبة كائنات Microsoft Excel 9.0 في قائمة المراجع .
    • إذا كان يتم أتمتة Microsoft Excel 97، مكتبة النوع يظهر
      مكتبة كائنات 8.0 Microsoft Excel في قائمة المراجع
  3. انقر فوق موافق لإغلاق مربع حوار المراجع .
  4. قم بإضافة CommandButton إلى Form1.
  5. في إطار التعليمات البرمجية ل Form1 إدراج التعليمات البرمجية التالية:
       Option Explicit   
    Private Sub Command1_Click()
    Dim oXL As Excel.Application
    Dim oWB As Excel.Workbook
    Dim oSheet As Excel.Worksheet
    Dim oRng As Excel.Range


    'On Error GoTo Err_Handler

    ' Start Excel and get Application object.
    Set oXL = CreateObject("Excel.Application")
    oXL.Visible = True

    ' Get a new workbook.
    Set oWB = oXL.Workbooks.Add
    Set oSheet = oWB.ActiveSheet

    ' Add table headers going cell by cell.
    oSheet.Cells(1, 1).Value = "First Name"
    oSheet.Cells(1, 2).Value = "Last Name"
    oSheet.Cells(1, 3).Value = "Full Name"
    oSheet.Cells(1, 4).Value = "Salary"


    ' Format A1:D1 as bold, vertical alignment = center.
    With oSheet.Range("A1", "D1")
    .Font.Bold = True
    .VerticalAlignment = xlVAlignCenter
    End With

    ' Create an array to set multiple values at once.
    Dim saNames(5, 2) As String
    saNames(0, 0) = "John"
    saNames(0, 1) = "Smith"
    saNames(1, 0) = "Tom"
    saNames(1, 1) = "Brown"
    saNames(2, 0) = "Sue"
    saNames(2, 1) = "Thomas"
    saNames(3, 0) = "Jane"

    saNames(3, 1) = "Jones"
    saNames(4, 0) = "Adam"
    saNames(4, 1) = "Johnson"

    ' Fill A2:B6 with an array of values (First and Last Names).
    oSheet.Range("A2", "B6").Value = saNames

    ' Fill C2:C6 with a relative formula (=A2 & " " & B2).
    Set oRng = oSheet.Range("C2", "C6")
    oRng.Formula = "=A2 & "" "" & B2"

    ' Fill D2:D6 with a formula(=RAND()*100000) and apply format.
    Set oRng = oSheet.Range("D2", "D6")
    oRng.Formula = "=RAND()*100000"
    oRng.NumberFormat = "$0.00"

    ' AutoFit columns A:D.
    Set oRng = oSheet.Range("A1", "D1")
    oRng.EntireColumn.AutoFit

    ' Manipulate a variable number of columns for Quarterly Sales Data.
    Call DisplayQuarterlySales(oSheet)

    ' Make sure Excel is visible and give the user control
    ' of Microsoft Excel's lifetime.
    oXL.Visible = True
    oXL.UserControl = True

    ' Make sure you release object references.
    Set oRng = Nothing
    Set oSheet = Nothing
    Set oWB = Nothing
    Set oXL = Nothing

    Exit Sub
    Err_Handler:
    MsgBox Err.Description, vbCritical, "Error: " & Err.Number
    End Sub

    Private Sub DisplayQuarterlySales(oWS As Excel.Worksheet)
    Dim oResizeRange As Excel.Range
    Dim oChart As Excel.Chart
    Dim iNumQtrs As Integer
    Dim sMsg As String
    Dim iRet As Integer

    ' Determine how many quarters to display data for.
    For iNumQtrs = 4 To 2 Step -1
    sMsg = "Enter sales data for" & Str(iNumQtrs) & " quarter(s)?"
    iRet = MsgBox(sMsg, vbYesNo Or vbQuestion _
    Or vbMsgBoxSetForeground, "Quarterly Sales")
    If iRet = vbYes Then Exit For
    Next iNumQtrs


    sMsg = "Displaying data for" & Str(iNumQtrs) & " quarter(s)."
    MsgBox sMsg, vbMsgBoxSetForeground, "Quarterly Sales"

    ' Starting at E1, fill headers for the number of columns selected.
    Set oResizeRange = oWS.Range("E1", "E1").Resize(ColumnSize:=iNumQtrs)

    oResizeRange.Formula = "=""Q"" & COLUMN()-4 & CHAR(10) & ""Sales"""

    ' Change the Orientation and WrapText properties for the headers.
    oResizeRange.Orientation = 38
    oResizeRange.WrapText = True

    ' Fill the interior color of the headers.
    oResizeRange.Interior.ColorIndex = 36

    ' Fill the columns with a formula and apply a number format.
    Set oResizeRange = oWS.Range("E2", "E6").Resize(ColumnSize:=iNumQtrs)
    oResizeRange.Formula = "=RAND()*100"
    oResizeRange.NumberFormat = "$0.00"

    ' Apply borders to the Sales data and headers.
    Set oResizeRange = oWS.Range("E1", "E6").Resize(ColumnSize:=iNumQtrs)
    oResizeRange.Borders.Weight = xlThin

    ' Add a Totals formula for the sales data and apply a border.
    Set oResizeRange = oWS.Range("E8", "E8").Resize(ColumnSize:=iNumQtrs)
    oResizeRange.Formula = "=SUM(E2:E6)"
    With oResizeRange.Borders(xlEdgeBottom)
    .LineStyle = xlDouble
    .Weight = xlThick
    End With

    ' Add a Chart for the selected data
    Set oResizeRange = oWS.Range("E2:E6").Resize(ColumnSize:=iNumQtrs)
    Set oChart = oWS.Parent.Charts.Add
    With oChart
    .ChartWizard oResizeRange, xl3DColumn, , xlColumns
    .SeriesCollection(1).XValues = oWS.Range("A2", "A6")
    For iRet = 1 To iNumQtrs
    .SeriesCollection(iRet).Name = "=""Q" & Str(iRet) & """"
    Next iRet
    .Location xlLocationAsObject, oWS.Name
    End With

    ' Move the chart so as not to cover your data.
    With oWS.Shapes("Chart 1")
    .Top = oWS.Rows(10).Top
    .Left = oWS.Columns(2).Left

    End With

    ' Free any references.
    Set oChart = Nothing
    Set oResizeRange = Nothing

    End Sub


  6. اضغط F5 لتشغيل المشروع.

المراجع

لمزيد من المعلومات حول "التشغيل الآلي للمكاتب"، الرجاء زيارة موقع دعم تطوير Microsoft Office في:(ج) 1999 شركة مايكروسوفت، جميع الحقوق محفوظة. المساهمات المقدمة من ريتشارد ر. تايلور، Microsoft Corporation.

خصائص

رقم الموضوع: 219151 - آخر مراجعة: 08‏/01‏/2017 - المراجعة: 1

تعليقات