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

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 247412 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

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

Thu?c tính

ID c?a bài: 247412 - L?n xem xét sau cùng: 06 Tháng Mười 2011 - Xem xét l?i: 3.0
Áp d?ng
  • 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
T? khóa: 
kbautomation kbdde kbinfo kbmt KB247412 KbMtvi
Máy d?ch
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

Cung cấp Phản hồi

 

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