วิธีการทำให้ Microsoft Excel ทำงานอัตโนมัติจาก Visual Basic

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 219151 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายเกี่ยวกับวิธีการสร้างและใช้งาน Excel โดยใช้การทำงานอัตโนมัติจาก Visual Basic

ข้อมูลเพิ่มเติม

การควบคุมเซิร์ฟเวอร์ Automation สามารถทำได้สองวิธี: โดยใช้การรวมภายหลังหรือการรวมก่อนหน้าอย่างใดอย่างหนึ่ง สำหรับการรวมภายหลัง วิธีการต่างๆ จะไม่ถูกรวมจนกว่าจะใช้งานจริงและเซิร์ฟเวอร์ Automation จะถูกประกาศให้เป็นวัตถุ สำหรับการรวมก่อนหน้า โปรแกรมประยุกต์ของคุณจะรับทราบถึงชนิดของวัตถุที่ถูกต้องที่จะทำการสื่อสารด้วยในขณะออกแบบ และสามารถประกาศวัตถุตามชนิดที่ระบุ ตัวอย่างนี้ใช้การรวมก่อนหน้า ซึ่งโดยส่วนใหญ่แล้ววิธีนี้ได้รับการพิจารณาว่าดีกว่าเนื่องจากทำให้เกิดประสิทธิภาพในการทำงานมากกว่าและความปลอดภัยดีกว่า

ในการรวมก่อนหน้ากับเซิร์ฟเวอร์ Automation คุณจำเป็นต้องตั้งค่าการอ้างอิงไปที่ไลบรารีชนิดของเซิร์ฟเวอร์นั้น ใน Visual Basic การดำเนินการนี้สามารถทำได้ผ่านทางกล่องโต้ตอบ การอ้างอิง ภายใต้เมนู โครงการ | การอ้างอิง สำหรับตัวอย่างนี้ คุณจำเป็นต้องเพิ่มการอ้างอิงไปยังไลบรารีชนิดสำหรับ Excel ก่อนจึงจะสามารถใช้งานโค้ดนี้ได้ ดูขั้นตอนการเพิ่มการอ้างอิงดังแสดงด้านล่าง

การสร้างตัวอย่าง Automation

  1. เริ่ม Visual Basic และสร้างโครงการ EXE แบบมาตรฐานขึ้นใหม่ Form1 จะถูกสร้างขึ้นตามค่าเริ่มต้น
  2. คลิกที่โครงการ แล้วคลิก การอ้างอิง กล่องโต้ตอบ การอ้างอิง จะปรากฏขึ้น เลื่อนลงมาตามรายการจนคุณพบ ไลบรารีวัตถุ Microsoft Excel แล้วเลือกรายการดังกล่าวเพื่อเพิ่มการอ้างอิงให้ Excel ถ้าไลบรารีวัตถุที่ถูกต้องสำหรับ Excel รุ่นของคุณไม่มีอยู่ในรายการ ให้ตรวจสอบว่าคุณได้ติดตั้ง Excel รุ่นที่คุณมีอยู่อย่างถูกต้องแล้ว

    หมายเหตุ
    • ถ้าคุณใช้การทำงานอัตโนมัติสำหรับ Microsoft Office Excel 2007 ไลบรารีชนิดจะปรากฏเป็น ไลบรารีวัตถุ Microsoft Excel 12.0 ในรายการ การอ้างอิง
    • ถ้าคุณใช้การทำงานอัตโนมัติสำหรับ Microsoft Office Excel 2003 ไลบรารีชนิดจะปรากฏเป็น ไลบรารีวัตถุ Microsoft Excel 11.0 ในรายการ การอ้างอิง
    • ถ้าคุณใช้การทำงานอัตโนมัติสำหรับ Microsoft Excel 2002 ไลบรารีชนิดจะปรากฏเป็น ไลบรารีวัตถุ Microsoft Excel 10.0 ในรายการ การอ้างอิง
    • ถ้าคุณใช้การทำงานอัตโนมัติสำหรับ Microsoft Excel 2000 ไลบรารีชนิดจะปรากฏเป็น ไลบรารีวัตถุ Microsoft Excel 9.0 ในรายการ การอ้างอิง
    • ถ้าคุณใช้การทำงานอัตโนมัติสำหรับ Microsoft Excel 97 ไลบรารีชนิดจะปรากฏเป็น ไลบรารีวัตถุ Microsoft Excel 8.0 ในรายการ การอ้างอิง
  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
          
       ' เริ่ม Excel และรับวัตถุ โปรแกรมประยุกต์
          Set oXL = CreateObject("Excel.Application")
          oXL.Visible = True
          
       ' เปิดสมุดงานใหม่
          Set oWB = oXL.Workbooks.Add
          Set oSheet = oWB.ActiveSheet
          
       ' เพิ่มส่วนหัวของตารางทีละเซลล์
          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"
          
    
       ' จัดรูปแบบเซลล์ A1:D1 เป็นแบบตัวหนา การจัดแนวตามแนวตั้ง = กึ่งกลาง
          With oSheet.Range("A1", "D1")
             .Font.Bold = True
             .VerticalAlignment = xlVAlignCenter
          End With
          
       ' สร้างอาร์เรย์เพื่อตั้งค่าหลายๆ ค่าพร้อมกัน
          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"
          
        ' เติมเซลล์ A2:B6 ด้วยอาร์เรย์ของค่าต่างๆ (ชื่อและนามสกุล)
          oSheet.Range("A2", "B6").Value = saNames
          
        ' เติมเซลล์ C2:C6 ด้วยสูตรแบบสัมพัทธ์ (=A2 & " " & B2)
          Set oRng = oSheet.Range("C2", "C6")
          oRng.Formula = "=A2 & "" "" & B2"
          
        ' เติมเซลล์ D2:D6 ด้วยสูตร(=RAND()*100000) และใช้งานรูปแบบ
          Set oRng = oSheet.Range("D2", "D6")
          oRng.Formula = "=RAND()*100000"
          oRng.NumberFormat = "$0.00"
          
        ' ปรับคอลัมน์ A:D ให้พอดีโดยอัตโนมัติ
          Set oRng = oSheet.Range("A1", "D1")
          oRng.EntireColumn.AutoFit
          
        ' ใช้จำนวนคอลัมน์ที่เปลี่ยนแปลงได้สำหรับ Quarterly Sales Data
          Call DisplayQuarterlySales(oSheet)
          
        ' ตรวจสอบให้แน่ใจว่า Excel มองเห็นได้และผู้ใช้สามารถควบคุม
        ' ได้ตลอดการใช้งานของ Microsoft Excel
          oXL.Visible = True
          oXL.UserControl = True
          
        ' ตรวจสอบให้แน่ใจว่าคุณปล่อยการอ้างอิงวัตถุแล้ว
          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
          
        ' กำหนดจำนวนไตรมาสที่จะแสดงข้อมูล
          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"
          
        ' เริ่มต้นที่เซลล์ E1 เติมส่วนหัวสำหรับจำนวนคอลัมน์ที่เลือกไว้
          Set oResizeRange = oWS.Range("E1", "E1").Resize(ColumnSize:=iNumQtrs)
    
          oResizeRange.Formula = "=""Q"" & COLUMN()-4 & CHAR(10) & ""Sales"""
          
        ' เปลี่ยนคุณสมบัติการวางแนวและการตัดข้อความสำหรับส่วนหัว
          oResizeRange.Orientation = 38
          oResizeRange.WrapText = True
          
        ' เติมสีภายในของส่วนหัว
          oResizeRange.Interior.ColorIndex = 36
          
        ' เติมค่าสูตรในคอลัมน์และใช้รูปแบบตัวเลข
          Set oResizeRange = oWS.Range("E2", "E6").Resize(ColumnSize:=iNumQtrs)
          oResizeRange.Formula = "=RAND()*100"
          oResizeRange.NumberFormat = "$0.00"
          
        ' เลือกใช้เส้นขอบสำหรับข้อมูลและส่วนหัวของ Sales
          Set oResizeRange = oWS.Range("E1", "E6").Resize(ColumnSize:=iNumQtrs)
          oResizeRange.Borders.Weight = xlThin
          
        ' เพิ่มสูตร Totals สำหรับข้อมูลการขายและเลือกใช้เส้นขอบ
          Set oResizeRange = oWS.Range("E8", "E8").Resize(ColumnSize:=iNumQtrs)
          oResizeRange.Formula = "=SUM(E2:E6)"
          With oResizeRange.Borders(xlEdgeBottom)
             .LineStyle = xlDouble
             .Weight = xlThick
          End With
          
        ' เพิ่มแผนภูมิสำหรับข้อมูลที่เลือกไว้
          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
          
        ' ย้ายตำแหน่งแผนภูมิเพื่อไม่ให้บังข้อมูลของคุณ
          With oWS.Shapes("Chart 1")
             .Top = oWS.Rows(10).Top
             .Left = oWS.Columns(2).Left
    
          End With
          
        ' ลบการอ้างอิงใดๆ
          Set oChart = Nothing
          Set oResizeRange = Nothing
       
       End Sub
    
    						
  6. กดแป้น F5 เพื่อเรียกใช้โครงการ

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Office Automation โปรดแวะไปที่เว็บไซต์บริการช่วยเหลือของ Microsoft Office Development ต่อไปนี้:
http://support.microsoft.com/ofd
(c) Microsoft Corporation 1999 สงวนลิขสิทธิ์ เขียนโดย Richard R. Taylor, Microsoft Corporation

คุณสมบัติ

หมายเลขบทความ (Article ID): 219151 - รีวิวครั้งสุดท้าย: 3 มิถุนายน 2551 - Revision: 5.0
ใช้กับ
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
Keywords: 
kbexpertisebeginner kbautomation kbhowto KB219151

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com