Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Phương pháp để chuyển dữ liệu vào Excel từ Visual Basic

Hỗ trợ dành cho Office 2003 đã kết thúc

Microsoft đã kết thúc hỗ trợ dành cho Office 2003 vào ngày 8 tháng 4 năm 2014. Thay đổi này đã ảnh hưởng đến các bản cập nhật phần mềm và các tùy chọn bảo mật của bạn. Tìm hiểu ý nghĩa của điều này với bạn và cách thực hiện để luôn được bảo vệ.

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:247412
TÓM TẮT
Bài viết này thảo luận về nhiều phương pháp để chuyển dữ liệu để Microsoft Excel từ các ứng dụng Microsoft Visual Basic. Điều này bài viết cũng trình bày những lợi thế và bất lợi cho mỗi phương pháp như vậy bạn có thể chọn các giải pháp làm việc tốt nhất cho bạn.
THÔNG TIN THÊM
Phương pháp phổ biến nhất được sử dụng để truyền dữ liệu đến một Bảng tính Excel là tự động hóa. Tự động hóa giúp bạn linh hoạt lớn nhất cho xác định vị trí của dữ liệu trong bảng tính cũng như khả năng định dạng bảng tính và thực hiện cài đặt khác nhau tại thời gian chạy. Với tự động hóa, bạn có thể sử dụng một số phương pháp tiếp cận để chuyển dữ liệu của bạn:
  • Chuyển dữ liệu di động của tế bào
  • Chuyển dữ liệu trong một mảng đến một loạt các tế bào
  • Chuyển dữ liệu trong một recordset ADO đến một loạt các tế bào bằng cách sử dụng các CopyFromRecordset phương pháp
  • Tạo ra một QueryTable trên một bảng tính Excel có chứa kết quả của một truy vấn vào một ODBC hoặc OLEDB nguồn dữ liệu
  • Chuyển dữ liệu vào bảng tạm và sau đó dán bảng tạm nội dung vào một bảng tính Excel
Cũng có những phương pháp mà bạn có thể sử dụng để truyền dữ liệu đến Excel không nhất thiết phải yêu cầu tự động hóa. Nếu bạn đang chạy một ứng dụng phía máy chủ, điều này có thể là một cách tiếp cận tốt đã dành phần lớn xử lý dữ liệu đi từ khách hàng của bạn. Các phương pháp sau đây có thể được sử dụng để chuyển dữ liệu của bạn mà không có tự động hóa:
  • Chuyển dữ liệu của bạn vào một tab hoặc dấu phẩy phân cách tập tin văn bản Excel có thể sau đó phân tích vào các tế bào trên một bảng tính
  • Chuyển dữ liệu vào một bảng tính bằng cách sử dụng ADO
  • Chuyển dữ liệu vào Excel sử dụng năng động trao đổi dữ liệu (DDE)
Các đoạn sau đây cung cấp chi tiết hơn trên mỗi người trong số này các giải pháp.

Chú ý Khi bạn sử dụng Microsoft Office Excel 2007, bạn có thể sử dụng mới định dạng file Excel 2007 Workbook (*.xlsx) khi bạn lưu các sách bài tập. Để thực hiện việc này, xác định vị trí dòng sau mã trong ví dụ mã sau đây:
oBook.SaveAs "C:\Book1.xls"
Thay thế mã này với với dòng mã sau đây:
oBook.SaveAs "C:\Book1.xlsx"
Ngoài ra, cơ sở dữ liệu Northwind không được bao gồm trong Office 2007 theo mặc định. Tuy nhiên, bạn có thể tải về cơ sở dữ liệu Northwind từ Microsoft Office Online.

Sử dụng tự động hóa để truyền dữ liệu di động của tế bào

Với tự động hóa, bạn có thể chuyển dữ liệu vào một bảng tính một cell lúc một thời gian:
   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
Chuyển dữ liệu di động của tế bào có thể là một cách tiếp cận hoàn toàn chấp nhận được Nếu số lượng dữ liệu nhỏ. Bạn có sự linh hoạt để đặt dữ liệu ở bất cứ đâu trong bảng tính và có thể định dạng các tế bào có điều kiện và thời gian chạy. Tuy nhiên, cách tiếp cận này là không đề nghị nếu bạn có một lượng lớn dữ liệu để chuyển đến một Bảng tính Excel. Mỗi Phạm vi đối tượng mà bạn có được tại thời gian chạy kết quả trong một giao diện yêu cầu để cho chuyển dữ liệu theo cách này có thể được làm chậm. Ngoài ra, Microsoft Windows 95 và Windows 98 có một giới hạn 64 K trên giao diện yêu cầu. Nếu bạn đạt được hoặc vượt quá giới hạn này 64 k ngày yêu cầu giao diện, các Tự động hóa máy chủ (Excel) có thể ngừng đáp ứng hoặc bạn có thể nhận được lỗi chỉ ra thiếu bộ nhớ. Giới hạn này cho Windows 95 và Windows 98 là thảo luận trong bài viết cơ sở kiến thức sau:
216400 Tự động hóa COM Cross, quá trình có thể treo ứng dụng khách trên Win 95/98
Một lần nữa, chuyển giao dữ liệu di động của tế bào là chấp nhận được chỉ cho một lượng nhỏ dữ liệu. Nếu bạn cần để chuyển dữ liệu lớn bộ để Excel, bạn nên xem xét một trong những giải pháp được trình bày sau này.

Nhiều mẫu mã để tự động hoá Excel, xin vui lòng xem các bài viết sau trong cơ sở kiến thức Microsoft:
219151 Làm thế nào để tự động hoá Microsoft Excel từ Visual Basic

Sử dụng tự động hóa để sang một mảng của dữ liệu tầm hoạt động trên một bảng tính

Một mảng của dữ liệu có thể được chuyển đến một loạt các tế bào nhiều cùng một lúc:
   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
Nếu bạn chuyển dữ liệu của bạn bằng cách sử dụng mảng một chứ không phải là tế bào của tế bào, bạn có thể nhận ra một đạt được hiệu suất rất lớn với một lượng lớn dữ liệu. Xem xét dòng này từ mã ở trên truyền dữ liệu đến các tế bào 300 trong các bảng:
   oSheet.Range("A2").Resize(100, 3).Value = DataArray
Dòng này đại diện cho hai giao diện yêu cầu (một cho các Phạm vi đối tượng mà các Phạm vi trở về phương pháp và một cho các Phạm vi đối tượng mà các Thay đổi kích cỡ trở về phương pháp). Mặt khác, chuyển giao dữ liệu di động bởi tế bào sẽ đòi hỏi yêu cầu cho giao diện 300 để Phạm vi các đối tượng. Bất cứ khi nào có thể, bạn có thể hưởng lợi từ chuyển dữ liệu của bạn trong số lượng lớn và việc giảm số lượng yêu cầu giao diện bạn thực hiện.

Sử dụng tự động hóa để chuyển một recordset ADO đến một loạt các bảng tính

Excel 2000 giới thiệu các CopyFromRecordset phương pháp cho phép bạn chuyển một recordset ADO (hoặc DAO) để một tầm hoạt động trên một bảng tính. Mã sau đây minh hoạ làm thế nào bạn có thể tự động hoá Excel 2000, Excel 2002, hoặc Office Excel 2003 và chuyển các nội dung của các Đơn đặt hàng bảng trong các Northwind mẫu cơ sở dữ liệu bằng cách sử dụng các CopyFromRecordset phương pháp.
   '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
Chú ý Nếu bạn sử dụng phiên bản Office 2007 của cơ sở dữ liệu Northwind, bạn phải thay thế dòng mã trong ví dụ mã sau:
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ sNWind & ";"
Thay thế này dòng mã với dòng mã sau đây:
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _ sNWind & ";"
Excel 97 cũng cung cấp một CopyFromRecordset phương pháp, nhưng bạn có thể sử dụng nó chỉ với một đạo recordset. CopyFromRecordset với Excel 97 không hỗ trợ ADO.

Để biết thêm thông tin về việc sử dụng ADO và các CopyFromRecordset phương pháp, xin vui lòng xem các bài viết sau đây trong Microsoft Kiến thức cơ bản:
246335 Làm thế nào để chuyển dữ liệu từ một recordset ADO để Excel với tự động hóa

Sử dụng tự động hóa để tạo ra một QueryTable trên một bảng tính

Một QueryTable đối tượng đại diện cho một bảng được xây dựng từ dữ liệu trở lại từ một nguồn dữ liệu bên ngoài. Trong khi tự động hoá Microsoft Excel, bạn có thể tạo ra một QueryTable bởi chỉ đơn giản là cung cấp một chuỗi kết nối đến một OLEDB hoặc một ODBC dữ liệu nguồn cùng với một chuỗi SQL. Excel giả định trách nhiệm tạo ra recordset và chèn nó vào bảng tính ở vị trí bạn chỉ định. Bằng cách sử dụng QueryTables cung cấp một số lợi thế hơn các CopyFromRecordset phương pháp:
  • Excel xử lý việc tạo ra recordset và của nó vị trí vào bảng tính.
  • Truy vấn có thể được lưu với các QueryTable do đó nó có thể được làm mới tại một thời gian sau đó để có được một Cập Nhật RecordSet.
  • Khi một mới QueryTable sẽ được thêm vào bảng tính của bạn, bạn có thể chỉ ra rằng dữ liệu đã hiện có trong các tế bào trên bảng tính được chuyển để chứa dữ liệu mới (xem các RefreshStyle bất động sản để biết chi tiết).
Mã sau đây chứng tỏ làm thế nào bạn có thể tự động hoá Excel Năm 2000, Excel 2002, hoặc Office Excel 2003 để tạo ra một mới QueryTable trong một bảng tính Excel sử dụng dữ liệu từ mẫu Northwind Cơ sở dữ liệu:
   '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

Sử dụng bảng tạm

Bảng tạm Windows cũng có thể được sử dụng như một cơ chế cho chuyển dữ liệu vào một bảng tính. Để dán dữ liệu vào các tế bào nhiều vào một bảng tính, bạn có thể sao chép một chuỗi nơi cột được phân cách bởi các tab nhân vật và hàng được phân cách bởi trở về vận chuyển. Mã sau đây minh hoạ cách Visual Basic có thể sử dụng đối tượng bảng tạm để truyền dữ liệu với 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

Tạo một tập tin văn bản delimited Excel có thể phân tích thành các hàng và cột

Excel có thể mở tab hoặc dấu phẩy phân cách tập tin và phân tích một cách chính xác các dữ liệu vào các tế bào. Bạn có thể tận dụng lợi thế của tính năng này khi bạn muốn chuyển một lượng lớn dữ liệu vào một bảng tính trong khi sử dụng ít, nếu có, Tự động hóa. Điều này có thể là một cách tiếp cận tốt cho một ứng dụng client-server bởi vì các tập tin văn bản có thể là tạo ra phía máy chủ. Sau đó, bạn có thể mở các văn bản tập tin lúc khách hàng, sử dụng tự động hóa mà nó là thích hợp.

Các sau mã minh hoạ làm thế nào bạn có thể tạo một tập tin văn bản phân cách bằng dấu phẩy từ một recordset 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
Chú ý Nếu bạn sử dụng phiên bản Office 2007 của cơ sở dữ liệu Northwind, bạn phải thay thế dòng mã trong ví dụ mã sau:
 conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _      sNWind & ";"
Thay thế này dòng mã với dòng mã sau đây:
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _      sNWind & ";"
Nếu tập tin văn bản của bạn có một.Phần mở rộng CSV, Excel mở tập tin mà không cần hiển thị các thuật sĩ chuyển nhập văn bản và tự động giả định rằng tập tin là phân cách bằng dấu phẩy. Tương tự, nếu tập tin của bạn có một.Phần mở rộng TXT, Excel tự động phân tích các tập tin bằng cách sử dụng thẻ delimiters.

Trong trước đó mẫu mã, Excel được phóng lên bằng cách sử dụng các Vỏ tuyên bố và tên tập tin được sử dụng như là một dòng lệnh đối số. Không có tự động hóa được sử dụng trong mẫu trước đó. Tuy nhiên, nếu như vậy bạn muốn, bạn có thể sử dụng một số tiền tối thiểu của tự động hóa để mở tập tin văn bản và lưu nó trong định dạng bảng tính 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
Cho biết thêm thông tin về việc sử dụng tập tin I/O từ của bạn Visual Basic ứng dụng, xin vui lòng xem bài viết sau trong cơ sở kiến thức Microsoft:
172267 RECEDIT.VBP thể hiện tệp I/O trong Visual Basic

Chuyển dữ liệu vào một bảng tính bằng cách sử dụng ADO

Sử dụng các Microsoft Jet OLE DB Provider, bạn có thể thêm hồ sơ để một bảng trong một bảng tính Excel hiện có. Một bảng"" trong Excel là chỉ đơn thuần là một phạm vi với một tên được xác định. Hàng đầu của dãy phải chứa thông tin thư (hoặc các lĩnh vực tên) và tất cả các tiếp theo hàng có chứa các hồ sơ. Các bước sau minh họa như thế nào bạn có thể tạo ra một bảng tính với một bảng có sản phẩm nào được đặt tên MyTable.
Excel 97, Excel 2000 và Excel 2003
  1. Bắt đầu một bảng tính mới trong Excel.
  2. Thêm các tiêu đề sau đây cho các tế bào A1:B1 của Sheet1:

    A1: Thứ B1: LastName
  3. Định dạng tế bào B1 như quyền liên kết.
  4. Chọn A1:B1.
  5. Trên các Chèn trình đơn, chọn Tên và sau đó chọn Xác định. Nhập tên MyTable và nhấp vào Ok.
  6. Lưu bảng tính mới như C:\Book1.xls và bỏ thuốc lá Excel.
Thêm ghi lại để MyTable bằng cách sử dụng ADO, bạn có thể sử dụng mã tương tự như sau:
   '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. Trong Excel 2007, bắt đầu một bảng tính mới.
  2. Thêm các tiêu đề sau đây cho các tế bào A1:B1 của Sheet1:

    A1: Thứ B1: LastName
  3. Định dạng tế bào B1 như quyền liên kết.
  4. Chọn A1:B1.
  5. Trên Ribbon, bấm các Công thức tab, và sau đó bấm Xác định tên. Gõ tên MyTable, và sau đó nhấp vào Ok.
  6. Lưu bảng tính mới như C:\Book1.xlsx, và sau đó bỏ thuốc lá Excel.
Để thêm bản ghi vào bảng MyTable bằng cách sử dụng ADO, sử dụng mã tương tự với ví dụ mã sau.
   '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
Khi bạn thêm bản ghi vào bảng theo cách này, các định dạng trong các bảng tính được duy trì. Trong ví dụ trước đó, các lĩnh vực mới thêm vào cột b đang được định dạng với quyền chỉnh. Mỗi bản ghi sẽ được thêm vào một hàng vay mượn các định dạng từ dòng ở trên nó.

Bạn nên lưu ý rằng khi một kỷ lục được đưa vào một tế bào hoặc các tế bào trong bảng tính, nó sẽ ghi đè mọi dữ liệu trước đó trong những tế bào; nói cách khác, các hàng trong bảng tính không "đẩy" khi hồ sơ mới được thêm vào. Bạn nên ghi nhớ điều này khi thiết kế các bố trí của dữ liệu trên bảng của bạn.

Chú ýPhương pháp để cập nhật dữ liệu trong một bảng tính Excel bằng cách sử dụng ADO hoặc bằng cách sử dụng DAO không làm việc trong Visual Basic cho môi trường ứng dụng trong truy cập sau khi bạn cài đặt Office 2003 Service Pack 2 (SP2) hoặc sau khi bạn cài đặt bản cập nhật cho truy cập 2002 là bao gồm trong bài viết cơ sở kiến thức Microsoft 904018. Các phương pháp làm việc tốt trong Visual Cơ bản cho môi trường ứng dụng từ các ứng dụng văn phòng khác, chẳng hạn như Word, Excel, và Outlook. Để biết thêm chi tiết, nhấp vào số bài viết sau để xem các bài viết trong cơ sở kiến thức Microsoft:
904953Bạn không thể thay đổi, thêm hoặc xóa dữ liệu trong bảng mà được liên kết với một bảng tính Excel trong Office Access 2003 hoặc trong Truy cập 2002
904018 Mô tả về Cập Nhật cho truy cập 2002: 18 tháng 10 năm 2005

Cho thêm thông tin về cách sử dụng ADO để truy cập vào một bảng tính Excel, xin vui lòng xem dưới đây bài viết trong cơ sở kiến thức Microsoft:
195951 Làm thế nào để truy vấn và cập nhật dữ liệu Excel sử dụng ADO từ ASP

Sử dụng DDE để chuyển dữ liệu vào Excel

DDE là một thay thế cho tự động hóa như là một phương tiện cho giao tiếp với Excel và chuyển dữ liệu; Tuy nhiên, với sự ra đời của tự động hóa và COM, DDE không còn ưa thích phương pháp để giao tiếp với nhau các ứng dụng và chỉ nên được sử dụng khi không có giải pháp nào khác có sẵn để bạn.

Để truyền dữ liệu với Excel sử dụng DDE, bạn có thể:
  • Sử dụng các LinkPoke phương pháp để poke dữ liệu đến một phạm vi cụ thể của Cell(s),

    - hay -
  • Sử dụng các LinkExecute phương pháp để gửi lệnh đó Excel sẽ thực hiện.
Ví dụ mã sau đây minh hoạ làm thế nào để thiết lập một DDE hội thoại với Excel do đó bạn có thể poke dữ liệu đến các tế bào trên một bảng tính và thực thi lệnh. Bằng cách sử dụng mẫu này, cho một cuộc trò chuyện DDE được thành công được thành lập để các LinkTopic Excel|MyBook.xls, một bảng tính với tên MyBook.xls phải đã được mở trong một trường hợp đang chạy Excel.

Chú ý Khi bạn sử dụng Excel 2007, bạn có thể sử dụng mới định dạng tập tin .xlsx để tiết kiệm các sách bài tập. Hãy chắc chắn rằng bạn Cập Nhật tên tập tin trong ví dụ mã sau.

Chú ý Trong ví dụ này, Text1 đại diện cho một Hộp văn bản kiểm soát trên một biểu mẫu 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
Khi sử dụng LinkPoke với Excel, bạn chỉ định phạm vi trong ký hiệu hàng cột (R1C1) Đối với các LinkItem. Nếu bạn đang poking dữ liệu đến các tế bào nhiều, bạn có thể sử dụng một chuỗi nơi các cột được phân cách bởi tabs và hàng được phân cách bởi vận chuyển trả về.

Khi bạn sử dụng LinkExecute Gofyn Excel để thực hiện một lệnh, bạn phải cung cấp cho Excel các lệnh cú pháp ngôn ngữ Macro Excel (XLM). Các tài liệu XLM không phải là bao gồm trong các phiên bản Excel 97 và sau này. Cho biết thêm thông tin về cách bạn có thể có được tài liệu XLM, xin vui lòng xem các bài viết sau đây trong các Cơ sở kiến thức Microsoft:
143466 Macro97.exe tập tin có sẵn trên dịch vụ trực tuyến
DDE không phải là một giải pháp được đề nghị cho giao tiếp với Excel. Tự động hóa cung cấp tính linh hoạt lớn nhất và cung cấp cho bạn nhiều hơn nữa truy cập vào các tính năng mới mà Excel cung cấp.
THAM KHẢO
Để biết thêm chi tiết, nhấp vào số bài viết sau đây để xem các bài viết trong cơ sở kiến thức Microsoft:
306022Làm thế nào để chuyển dữ liệu vào một bảng tính Excel bằng cách sử dụng Visual Basic.NET
Windows 98 trội tự động hóa hạn chế vb XL2007

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 247412 - Xem lại Lần cuối: 10/06/2011 04:11:00 - Bản sửa đổi: 3.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

  • kbautomation kbdde kbinfo kbmt KB247412 KbMtvi
Phản hồi