วิธีการถ่ายโอนข้อมูลไปยัง Excel จาก Visual Basic

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

สรุป

บทความนี้อธิบายวิธีการจำนวนมากสำหรับการโอนย้าย ข้อมูลไปยัง Microsoft Excel จากโปรแกรมประยุกต์ Microsoft Visual Basic ของคุณ นี้ บทความยังแสดงข้อดีและข้อเสียสำหรับแต่ละวิธีการดังกล่าว ให้คุณสามารถเลือกวิธีการแก้ไขปัญหาที่ดีสุดสำหรับคุณ

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

วิธีการที่ใช้บ่อยที่สุดในการถ่ายโอนข้อมูลไปยัง สมุดงาน Excel จะทำงานโดยอัตโนมัติ ทำงานโดยอัตโนมัติช่วยให้คุณมีความยืดหยุ่นมากที่สุดสำหรับ การระบุตำแหน่งที่ตั้งของข้อมูลของคุณในสมุดงานเช่นเดียวกับความสามารถในการ การจัดรูปแบบสมุดงาน และทำการตั้งค่าต่าง ๆ ในขณะดำเนินการ ด้วยระบบอัตโนมัติ คุณ สามารถใช้วิธีการต่าง ๆ สำหรับการถ่ายโอนข้อมูลของคุณ:
  • การถ่ายโอนข้อมูลเซลล์ต่อเซลล์
  • การถ่ายโอนข้อมูลในอาร์เรย์ไปยังช่วงของเซลล์
  • การถ่ายโอนข้อมูลในชุดระเบียน ADO ไปยังช่วงของเซลล์ที่ใช้ ที่CopyFromRecordsetวิธีการ
  • สร้างตัวตารางแบบสอบถามบนแผ่นงาน Excel ที่ประกอบด้วยผลลัพธ์ของแบบสอบถามในตัว แหล่งข้อมูล ODBC หรือ OLEDB
  • การถ่ายโอนข้อมูลไปยังคลิปบอร์ด และวางในคลิปบอร์ด เนื้อหาลงในแผ่นงาน Excel
ยังมีวิธีที่คุณสามารถใช้ในการถ่ายโอนข้อมูลไปยัง Excel ไม่จำเป็นต้องทำงานโดยอัตโนมัติ ถ้าคุณกำลังทำงานอยู่ แอพลิเคชันฝั่งเซิร์ฟเวอร์ ซึ่งจะเป็นวิธีการที่ดีสำหรับการถ่ายจำนวนมากของ การประมวลผลข้อมูลออกจากเครื่องไคลเอนต์ของคุณ สามารถใช้วิธีการต่อไปนี้ การถ่ายโอนข้อมูลของคุณ โดยไม่มีการทำงานโดยอัตโนมัติ:
  • การถ่ายโอนข้อมูลของคุณไปยังแฟ้มข้อความที่กำหนดเขตแท็บ หรือเครื่องหมายจุลภาค ที่ Excel สามารถแยกวิเคราะห์ลงในเซลล์บนแผ่นงานในภายหลัง
  • การถ่ายโอนข้อมูลของคุณลงในแผ่นงานที่ใช้ ADO
  • การถ่ายโอนข้อมูลไปยัง Excel ที่ใช้ Dynamic Data Exchange (DDE)
ส่วนต่อไปนี้ให้รายละเอียดเพิ่มเติมเกี่ยวกับแต่ละรายการจะ การแก้ไขปัญหา

หมายเหตุเมื่อคุณใช้ Microsoft Office Excel 2007 คุณสามารถใช้แฟ้มรูปแบบใหม่ของการสมุดงาน Excel 2007 (*.xlsx) เมื่อคุณบันทึกสมุดงาน เมื่อต้องการทำเช่นนี้ ค้นหารหัสบรรทัดต่อไปนี้ในตัวอย่างรหัสต่อไปนี้:
oBook.SaveAs "C:\Book1.xls"
แทนโค้ดนี้ด้วย ด้วยรหัสบรรทัดต่อไปนี้:
oBook.SaveAs "C:\Book1.xlsx"
นอกจากนี้ ฐานข้อมูล Northwind จะไม่รวมอยู่ใน Office 2007 ตามค่าเริ่มต้น อย่างไรก็ตาม คุณสามารถดาวน์โหลดฐานข้อมูล Northwind จาก Microsoft Office Online

ใช้การทำงานโดยอัตโนมัติในการถ่ายโอนข้อมูลเซลล์ต่อเซลล์

ด้วยระบบอัตโนมัติ คุณสามารถโอนย้ายข้อมูลไปหนึ่งเซลล์บนแผ่นงานที่ เวลา:
   Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object

   'Start a new workbook in Excel
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add


   'Add data to cells of the first worksheet in the new workbook
   Set oSheet = oBook.Worksheets(1)
   oSheet.Range("A1").Value = "Last Name"
   oSheet.Range("B1").Value = "First Name"
   oSheet.Range("A1:B1").Font.Bold = True
   oSheet.Range("A2").Value = "Doe"
   oSheet.Range("B2").Value = "John"

   'Save the Workbook and Quit Excel
   oBook.SaveAs "C:\Book1.xls"
   oExcel.Quit
การถ่ายโอนข้อมูลเซลล์ต่อเซลล์สามารถเป็นวิธีการที่ยอมรับได้ที่สุด ถ้ายอดเงินของข้อมูลที่มีขนาดเล็ก คุณมีความยืดหยุ่นเมื่อต้องการวางข้อมูลที่ใดก็ได้ ในสมุดงาน และสามารถจัดรูปแบบเซลล์ใส่ในขณะดำเนินการ อย่างไรก็ตาม วิธีการนี้คือไม่ถ้า คุณมีข้อมูลที่จะโอนย้ายไปจำนวนมากที่แนะนำตัว สมุดงาน Excel แต่ละช่วงวัตถุที่คุณได้รับในผลลัพธ์ของเวลาที่ใช้ในอินเทอร์เฟซ การร้องขอเพื่อให้การถ่ายโอนข้อมูลในลักษณะนี้สามารถทำล่าช้า นอกจากนี้ Microsoft Windows 95 และ Windows 98 มีข้อจำกัดที่ 64 K บนอินเทอร์เฟซ คำร้องขอ ถ้าคุณเข้าถึงได้ หรือเกินขีดจำกัดนี้ k 64 บนอินเทอร์เฟซที่ร้อง การ เซิร์ฟเวอร์ automation (Excel) อาจหยุดการตอบสนอง หรือคุณอาจได้รับข้อความแสดงข้อผิดพลาด ระบุหน่วยความจำไม่เพียงพอ มีข้อจำกัดนี้สำหรับ Windows 95 และ Windows 98 กล่าวถึงในบทความ Knowledge Base ต่อไปนี้:
216400ดำเนินการข้าม COM อัตโนมัติสามารถวางแอพลิเคชันของไคลเอนต์บน Win 95/98
หนึ่งครั้ง การโอนย้ายข้อมูลเซลล์ต่อเซลล์ได้ ยอมรับได้สำหรับข้อมูลจำนวนเล็กน้อยเท่านั้น ถ้าคุณต้องการถ่ายโอนข้อมูลขนาดใหญ่ หากต้องการตั้งค่าไปยัง Excel คุณควรพิจารณานำเสนอการแก้ไขปัญหาอย่างใดอย่างหนึ่ง ในภายหลัง

สำหรับการเพิ่มเติมโค้ดตัวอย่างสำหรับการทำงานอัตโนมัติสำหรับ Excel โปรดดู บทต่อไปนี้ความในฐานความรู้ของ Microsoft:
219151วิธีการทำให้ Microsoft Excel จาก Visual Basic

ใช้ระบบอัตโนมัติเพื่อโอนย้ายในอาร์เรย์ของข้อมูลเป็นช่วงบนแผ่นงาน

อาร์เรย์ของข้อมูลที่สามารถถ่ายโอนไปยังช่วงของเซลล์หลาย ๆ เซลล์ ครั้งเดียว:
   Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object

   'Start a new workbook in Excel
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add

   'Create an array with 3 columns and 100 rows
   Dim DataArray(1 To 100, 1 To 3) As Variant
   Dim r As Integer
   For r = 1 To 100
      DataArray(r, 1) = "ORD" & Format(r, "0000")
      DataArray(r, 2) = Rnd() * 1000
      DataArray(r, 3) = DataArray(r, 2) * 0.7
   Next

   'Add headers to the worksheet on row 1
   Set oSheet = oBook.Worksheets(1)
   oSheet.Range("A1:C1").Value = Array("Order ID", "Amount", "Tax")

   'Transfer the array to the worksheet starting at cell A2
   oSheet.Range("A2").Resize(100, 3).Value = DataArray
   
   'Save the Workbook and Quit Excel
   oBook.SaveAs "C:\Book1.xls"
   oExcel.Quit
ถ้าคุณถ่ายโอนข้อมูลของคุณโดยใช้กับอาร์เรย์แทนเซลล์ โดยเซลล์ คุณ สามารถสร้างกำไรมีขนาดใหญ่และประสิทธิภาพการทำงานกับข้อมูลจำนวนมาก พิจารณา บรรทัดนี้จากรหัสข้างต้นที่โอนย้ายข้อมูลไปยังเซลล์ที่ 300 ใน แผ่นงาน:
   oSheet.Range("A2").Resize(100, 3).Value = DataArray
บรรทัดนี้แสดงถึงการร้องขอการอินเทอร์เฟซที่สอง (หนึ่งสำหรับการช่วงวัตถุที่จะช่วงวิธีการส่งกลับและอีกสำหรับช่วงวัตถุที่จะการปรับขนาดวิธีคืน) ในทางกลับ โอนย้ายเซลล์ข้อมูลโดย เซลล์จะต้องร้องขอสำหรับอินเตอร์เฟส 300ช่วงวัตถุ เมื่อใดก็ ตามที่เป็นไปได้ คุณสามารถได้รับประโยชน์จากการโอนย้าย ตรวจสอบข้อมูลของคุณมีขนาดใหญ่และลดจำนวนการร้องขอการอินเทอร์เฟซสำหรับคุณให้

ใช้ระบบอัตโนมัติเพื่อถ่ายโอนภาพชุดระเบียนของ ADO ช่วงแผ่นงาน

Excel 2000 ที่นำมาใช้ในCopyFromRecordsetวิธีการที่ช่วยให้คุณสามารถถ่ายโอน recordset ADO (หรือ DAO) ไป ยัง ช่วงบนแผ่นงาน รหัสต่อไปนี้แสดงวิธีทำให้คุณสามารถ Excel 2000, Excel 2002 หรือ Office Excel 2003 และเนื้อหาของการโอนย้าย ตารางใบสั่งซื้อในการใช้ฐานข้อมูลตัวอย่าง NorthwindCopyFromRecordsetวิธีการ
   'Create a Recordset from all the records in the Orders table
   Dim sNWind As String
   Dim conn As New ADODB.Connection
   Dim rs As ADODB.Recordset
   sNWind = _
      "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"
   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      sNWind & ";"
   conn.CursorLocation = adUseClient
   Set rs = conn.Execute("Orders", , adCmdTable)
   
   'Create a new workbook in Excel
   Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add
   Set oSheet = oBook.Worksheets(1)
   
   'Transfer the data to Excel
   oSheet.Range("A1").CopyFromRecordset rs
   
   'Save the Workbook and Quit Excel
   oBook.SaveAs "C:\Book1.xls"
   oExcel.Quit
   
   'Close the connection
   rs.Close
   conn.Close
หมายเหตุถ้าคุณใช้ Office 2007 รุ่นของฐานข้อมูล Northwind คุณต้องแทนข้อความแสดงบรรทัดของรหัสในตัวอย่างรหัสต่อไปนี้:
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ sNWind & ";"
แทนรหัสบรรทัดนี้กับบรรทัดของรหัสต่อไปนี้:
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _ sNWind & ";"
มี Excel 97 ยังเป็นCopyFromRecordsetวิธีการแต่คุณสามารถใช้กับชุดระเบียน DAO เท่านั้นCopyFromRecordsetกับ Excel 97 ไม่สนับสนุน ADO

สำหรับข้อมูลเพิ่มเติม เกี่ยวกับการใช้ ADO และCopyFromRecordsetวิธี โปรดดูบทความต่อไปนี้ใน Microsoft Knowledge Base:
246335วิธีการถ่ายโอนข้อมูลจากชุดระเบียน ADO ไปยัง Excel ด้วยการทำงานโดยอัตโนมัติ

ใช้การทำงานโดยอัตโนมัติเมื่อต้องการสร้างตารางแบบสอบถามแบบบนแผ่นงาน

Aตารางแบบสอบถามวัตถุที่แสดงแทนตารางที่สร้างขึ้นจากข้อมูลที่ส่งคืนจากการ แหล่งข้อมูลภายนอก ในขณะที่ทำงานอัตโนมัติสำหรับ Microsoft Excel คุณสามารถสร้างตัวตารางแบบสอบถามโดยเพียงแค่มีสายอักขระการเชื่อมต่อ OLEDB ข้อหรือตัว ODBC แหล่งข้อมูลพร้อมกับสตริ SQL ความรับผิดชอบสำหรับอนุมาน Excel การสร้างชุดระเบียนและแทรกลงในแผ่นงานของสถานที่ คุณระบุ การใช้QueryTablesมีข้อดีหลายอย่างที่ผ่านการCopyFromRecordsetวิธีการ:
  • การสร้างชุดระเบียนจัดการกับ Excel และของ การจัดวางลงในแผ่นงาน
  • แบบสอบถามสามารถถูกบันทึกพร้อมกับการตารางแบบสอบถามเพื่อให้สามารถฟื้นฟูในภายหลังได้รับการปรับปรุง ชุดระเบียน
  • เมื่อต้องการใหม่ตารางแบบสอบถามถูกเพิ่มไปยังแผ่นงานของคุณ คุณสามารถระบุข้อมูลนั้นอยู่แล้ว ที่มีอยู่ในเซลล์บนแผ่นงานเลื่อนขึ้นเพื่อรองรับข้อมูลใหม่ (ดู ที่RefreshStyleคุณสมบัติสำหรับรายละเอียด)
รหัสต่อไปนี้แสดงว่าคุณไม่สามารถทำให้ Excel 2000, Excel 2002 หรือ Office Excel 2003 สร้างใหม่ตารางแบบสอบถามในแผ่นงาน Excel ที่ใช้ข้อมูลตัวอย่าง Northwind ฐานข้อมูล:
   'Create a new workbook in Excel
   Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add
   Set oSheet = oBook.Worksheets(1)
   
   'Create the QueryTable
   Dim sNWind As String
   sNWind = _
      "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"
   Dim oQryTable As Object
   Set oQryTable = oSheet.QueryTables.Add( _
   "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      sNWind & ";", oSheet.Range("A1"), "Select * from Orders")
   oQryTable.RefreshStyle = xlInsertEntireRows
   oQryTable.Refresh False
   
   'Save the Workbook and Quit Excel
   oBook.SaveAs "C:\Book1.xls"
   oExcel.Quit

ใช้คลิปบอร์ด

คลิปบอร์ด Windows ยังสามารถใช้เป็นกลไกในการ การถ่ายโอนข้อมูลไปยังแผ่นงาน เมื่อต้องการวางข้อมูลลงในเซลล์หลาย ๆ เซลล์บนตัว แผ่นงาน คุณสามารถคัดลอกสายอักขระที่คอลัมน์ตัวคั่น ด้วยอักขระแท็บ และแถวที่ถูกคั่น ด้วยอักขระขึ้นบรรทัดใหม่ โค้ดต่อไปนี้แสดงวิธี Visual Basic สามารถใช้วัตถุของคลิปบอร์ดเพื่อถ่ายโอนข้อมูลไปยัง Excel:
   'Copy a string to the clipboard
   Dim sData As String
   sData = "FirstName" & vbTab & "LastName" & vbTab & "Birthdate" & vbCr _
           & "Bill" & vbTab & "Brown" & vbTab & "2/5/85" & vbCr _
           & "Joe" & vbTab & "Thomas" & vbTab & "1/1/91"
   Clipboard.Clear

   Clipboard.SetText sData
   
   'Create a new workbook in Excel
   Dim oExcel As Object
   Dim oBook As Object
   Set oExcel = CreateObject("Excel.Application")
   Set oBook = oExcel.Workbooks.Add
   

   'Paste the data
   oBook.Worksheets(1).Range("A1").Select
   oBook.Worksheets(1).Paste
   
   'Save the Workbook and Quit Excel
   oBook.SaveAs "C:\Book1.xls"
   oExcel.Quit

สร้างแฟ้มข้อความที่มีตัวคั่นที่ Excel สามารถแยกลงในแถวและคอลัมน์

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

ที่ รหัสการต่อไปนี้แสดงวิธีสร้างแฟ้มข้อความที่ใช้จุลภาคเป็นตัวคั่นจาก ชุดระเบียน ADO:
   'Create a Recordset from all the records in the Orders table
   Dim sNWind As String
   Dim conn As New ADODB.Connection
   Dim rs As ADODB.Recordset
   Dim sData As String
   sNWind = _
      "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"
   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      sNWind & ";"
   conn.CursorLocation = adUseClient
   Set rs = conn.Execute("Orders", , adCmdTable)
   
   'Save the recordset as a tab-delimited file
   sData = rs.GetString(adClipString, , vbTab, vbCr, vbNullString)
   Open "C:\Test.txt" For Output As #1
   Print #1, sData
   Close #1
    
   'Close the connection
   rs.Close
   conn.Close
   
   'Open the new text file in Excel
   Shell "C:\Program Files\Microsoft Office\Office\Excel.exe " & _
      Chr(34) & "C:\Test.txt" & Chr(34), vbMaximizedFocus
หมายเหตุถ้าคุณใช้ Office 2007 รุ่นของฐานข้อมูล Northwind คุณต้องแทนข้อความแสดงบรรทัดของรหัสในตัวอย่างรหัสต่อไปนี้:
 conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      sNWind & ";"
แทนรหัสบรรทัดนี้กับบรรทัดของรหัสต่อไปนี้:
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
      sNWind & ";"
ถ้ามีแฟ้มข้อความของคุณนามสกุล CSV, Excel เปิดแฟ้มโดยไม่มี แสดงตัวช่วยสร้างการนำเข้าข้อความ และสันนิษฐานว่าแฟ้มนั้นโดยอัตโนมัติ เครื่องหมายจุลภาคคั่นไว้ ในทำนองเดียวกัน ถ้ามีแฟ้มของคุณนามสกุล TXT, Excel แยกวิเคราะห์แฟ้มใช้ตัวคั่นของแท็บโดยอัตโนมัติ

ในก่อนหน้านี้ โค้ดตัวอย่าง Excel ถูกเปิดใช้แล้วโดยใช้การเชลล์คำชี้แจงและชื่อของแฟ้มถูกใช้เป็นบรรทัดคำสั่ง อาร์กิวเมนต์ ไม่มีการทำงานโดยอัตโนมัติถูกใช้ในตัวอย่างก่อนหน้านี้ อย่างไรก็ตาม ถ้าเป็นเช่นนั้น ต้อง คุณสามารถใช้จำนวนที่น้อยที่สุดของการทำงานโดยอัตโนมัติเมื่อต้องการเปิดแฟ้มข้อความ และ บันทึกแฟ้มนั้นในรูปแบบสมุดงาน Excel:
   'Create a new instance of Excel
   Dim oExcel As Object
   Dim oBook As Object
   Dim oSheet As Object
   Set oExcel = CreateObject("Excel.Application")
       
   'Open the text file
   Set oBook = oExcel.Workbooks.Open("C:\Test.txt")
   
   'Save as Excel workbook and Quit Excel
   oBook.SaveAs "C:\Book1.xls", xlWorkbookNormal
   oExcel.Quit
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้แฟ้ม I/O จาก Visual Basic ของคุณ แอพลิเคชัน โปรดดูบทความในฐานความรู้ของ Microsoft ต่อไปนี้:
172267RECEDITVBP แสดงแฟ้ม I/O ใน Visual Basic

การถ่ายโอนข้อมูลไปยังแผ่นงาน โดยใช้ ADO

ใช้ที่ Microsoft Jet บริการ OLE DB คุณสามารถเพิ่มระเบียนไว้ใน ตารางในสมุดงาน Excel ที่มีอยู่ "ตาราง" ใน Excel เป็นเพียงช่วงด้วย ชื่อที่กำหนดไว้ แถวแรกของช่วงต้องประกอบด้วยส่วนหัว (หรือเขตข้อมูล ชื่อ) และแถวที่ตามมาทั้งหมดประกอบด้วยระเบียน ขั้นตอนต่อไปนี้ แสดงให้เห็นถึงวิธีการที่คุณสามารถสร้างสมุดงาน ด้วยตารางว่างที่มีชื่อว่าMyTable.
Excel 97, Excel 2000 และ Excel 2003
  1. เริ่มการทำงานของสมุดงานใหม่ใน Excel
  2. เพิ่มหัวข้อต่อไปนี้ลงในเซลล์ A1:B1 ของ แผ่นงาน 1:

    A1: ชื่อ B1: นามสกุล
  3. การจัดรูปแบบเซลล์ B1 เป็นการจัดตำแหน่งชิดขวา
  4. เลือก A1:B1
  5. บนเครื่องแทรกเมนู เลือกชื่อแล้ว เลือกกำหนด. ป้อนชื่อMyTableคลิกตกลง.
  6. บันทึกสมุดงานใหม่เป็น C:\Book1.xls และจบการทำงาน Excel
เมื่อต้องการเพิ่มระเบียนMyTableใช้ ADO คุณ สามารถใช้รหัสที่คล้ายกับข้อความต่อไปนี้:
   'Create a new connection object for Book1.xls
   Dim conn As New ADODB.Connection
   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=C:\Book1.xls;Extended Properties=Excel 8.0;"
   conn.Execute "Insert into MyTable (FirstName, LastName)" & _
      " values ('Bill', 'Brown')"
   conn.Execute "Insert into MyTable (FirstName, LastName)" & _
      " values ('Joe', 'Thomas')"
   conn.Close
Excel 2007
  1. ใน Excel 2007 เริ่มต้นสมุดงานใหม่
  2. เพิ่มหัวข้อต่อไปนี้ลงในเซลล์ A1:B1 ของ แผ่นงาน 1:

    A1: ชื่อ B1: นามสกุล
  3. การจัดรูปแบบเซลล์ B1 เป็นการจัดตำแหน่งชิดขวา
  4. เลือก A1:B1
  5. บน Ribbon คลิกสูตรแท็บ จากนั้นคลิกกำหนดชื่อ. พิมพ์ชื่อMyTableแล้ว คลิกตกลง.
  6. บันทึกสมุดงานใหม่เป็น C:\Book1.xlsx และจบการทำงานแล้ว Excel
เมื่อต้องการเพิ่มระเบียนลงในตาราง MyTable โดยใช้ ADO ใช้รหัสที่คล้ายกับตัวอย่างรหัสต่อไปนี้
   'Create a new connection object for Book1.xls
   Dim conn As New ADODB.Connection
   conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
      "Data Source=C:\Book1.xlsx;Extended Properties=Excel 12.0;"
   conn.Execute "Insert into MyTable (FirstName, LastName)" & _
      " values ('Scott', 'Brown')"
   conn.Execute "Insert into MyTable (FirstName, LastName)" & _
      " values ('Jane', 'Dow')"
   conn.Close
เมื่อคุณเพิ่มระเบียนลงในตารางในลักษณะนี้ การจัดรูปแบบในการ สมุดงานจะยังคงเดิม จากตัวอย่างก่อนหน้านี้ เขตข้อมูลใหม่ที่เพิ่มลงในคอลัมน์ B กำลังจัดรูปแบบ ด้วยการจัดตำแหน่งไปทางขวา แต่ละระเบียนที่ถูกเพิ่มลงในแถว borrows รูปแบบจากแถวข้างบนนั้น

คุณควรจดบันทึกที่เมื่อระเบียน เพิ่มเซลล์หรือเซลล์ในแผ่นงาน โปรแกรมจะบันทึกทับข้อมูลใด ๆ ก่อนหน้านี้ ในเซลล์เหล่านั้น กล่าว แถวในแผ่นงานจะไม่ถูกดัน "ลงลง" เมื่อกำลังเพิ่มระเบียนใหม่ คุณควรให้นี้นึกถึงเมื่อคุณออกแบบนั้น เค้าโครงของข้อมูลบนแผ่นงานของคุณ

หมายเหตุวิธีการปรับปรุงข้อมูลในแผ่นงาน Excel โดยใช้ ADO หรือ DAO ไม่ ทำงานใน Visual Basic สำหรับสภาพแวดล้อมของโปรแกรมประยุกต์ภายในการเข้าถึงหลังจากที่คุณ การติดตั้ง Office 2003 Service Pack 2 (SP2) หรือหลัง จากที่คุณ การติดตั้งโปรแกรมปรับปรุงสำหรับ Access 2002 ที่อยู่ รวมอยู่ในบทความ Microsoft Knowledge base 904018 วิธีการทำงานได้ดีใน Visual พื้นฐานสำหรับสภาพแวดล้อมของโปรแกรมประยุกต์จากโปรแกรมประยุกต์ Office อื่น ๆ เช่น Word Excel และ Outlookสำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
904953คุณไม่สามารถเปลี่ยนแปลง เพิ่ม หรือลบ ข้อมูลในตารางที่เชื่อมโยงไปยังสมุดงาน Excel ใน Office Access 2003 หรือใน Access 2002
904018คำอธิบายของโปรแกรมปรับปรุงสำหรับ Access 2002:18 ตุลาคม 2005

สำหรับการเพิ่มเติม ข้อมูลเกี่ยวกับการใช้ ADO ในการเข้าถึงสมุดงาน Excel โปรดดูต่อไปนี้ บทความในฐานความรู้ของ Microsoft:
195951วิธีการสอบถามและปรับปรุงข้อมูลของ Excel โดยใช้ ADO จาก ASP

ใช้ DDE เพื่อถ่ายโอนข้อมูลไปยัง Excel

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

การถ่ายโอนข้อมูลไปยัง Excel โดยใช้ DDE คุณสามารถ:
  • ใช้การLinkPokeวิธีการ poke ข้อมูลไปยังช่วงที่ระบุของ เซลล์ที่ถูก

    - หรือ -
  • ใช้การLinkExecuteวิธีการส่งคำสั่งให้ Excel จะเรียกใช้
ตัวอย่างรหัสต่อไปนี้แสดงให้เห็นถึงวิธีการสร้างการ DDE สนทนากับ Excel เพื่อให้คุณสามารถ poke ข้อมูลไปยังเซลล์บนแผ่นงาน และ ดำเนินการคำสั่ง การใช้ตัวอย่างนี้ สำหรับการสนทนา DDE ให้เสร็จเรียบร้อยแล้ว เริ่มต้นไปLinkTopicExcel|MyBook.xls สมุดงานที่ มีชื่อMyBook.xlsต้องอยู่แล้วสามารถเปิดในอินสแตนซ์ที่กำลังทำงานของ Excel

หมายเหตุเมื่อคุณใช้ Excel 2007 คุณสามารถใช้รูปแบบแฟ้ม.xlsx ใหม่เมื่อต้องการบันทึกสมุดงาน ตรวจสอบให้แน่ใจว่า คุณได้ปรับปรุงชื่อแฟ้มในตัวอย่างรหัสต่อไปนี้

หมายเหตุในตัวอย่างนี้ข้อความ1แทนกล่องข้อความควบคุมบนฟอร์ม Visual Basic:
   'Initiate a DDE communication with Excel
   Text1.LinkMode = 0
   Text1.LinkTopic = "Excel|MyBook.xls"
   Text1.LinkItem = "R1C1:R2C3"
   Text1.LinkMode = 1
   
   'Poke the text in Text1 to the R1C1:R2C3 in MyBook.xls
   Text1.Text = "one" & vbTab & "two" & vbTab & "three" & vbCr & _
                "four" & vbTab & "five" & vbTab & "six"
   Text1.LinkPoke
   
   'Execute commands to select cell A1 (same as R1C1) and change the font
   'format
   Text1.LinkExecute "[SELECT(""R1C1"")]"
   Text1.LinkExecute "[FONT.PROPERTIES(""Times New Roman"",""Bold"",10)]"
   
   'Terminate the DDE communication
   Text1.LinkMode = 0
เมื่อใช้LinkPokeExcel คุณระบุช่วงในการใช้เครื่องหมายคอลัมน์แถว (แบบ R1C1) สำหรับการLinkItem. ถ้าคุณกำลัง poking ข้อมูลไปยังเซลล์หลาย ๆ เซลล์ คุณสามารถใช้สายอักขระ ที่คอลัมน์ตัวคั่น ด้วยแท็บและแถวถูกคั่น ด้วยค่าขนส่ง ส่งกลับ

เมื่อคุณใช้LinkExecuteขอให้ Excel เพื่อที่ดำเนินการคำสั่ง คุณต้องให้ Excel คำสั่งในไวยากรณ์ของ Excel แมโครภาษา (XLM) เอกสารประกอบ XLM ไม่รวมอยู่กับ Excel รุ่น 97 และรุ่นที่ใหม่กว่า สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธี คุณสามารถขอรับเอกสารประกอบ XLM โปรดดูบทความต่อไปนี้ในการ ฐานความรู้ของ Microsoft:
143466Macro97.exe แฟ้มพร้อมใช้งานในบริการแบบออนไลน์
DDE ไม่ได้แก้ไขปัญหาที่แนะนำสำหรับการสื่อสาร ด้วย Excel ระบบอัตโนมัติมีความยืดหยุ่นมากที่สุด และช่วยให้คุณเพิ่มเติม เข้าถึงคุณลักษณะใหม่ที่ Excel มีการเสนอ

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

สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความใน ฐานความรู้ของ Microsoft:
306022วิธีการถ่ายโอนข้อมูลไปยังสมุดงาน Excel โดยใช้ Visual Basicสุทธิ

คุณสมบัติ

หมายเลขบทความ (Article ID): 247412 - รีวิวครั้งสุดท้าย: 6 ตุลาคม 2554 - Revision: 5.0
ใช้กับ
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Visual Basic for Applications 6.0
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2010
Keywords: 
kbautomation kbdde kbinfo kbmt KB247412 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:247412

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

 

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