Xuất dử liệu từ Access ra Excel và ngược lại

Liên hệ QC
Đúng là không thể sử dụng đối tượng Query mà bạn tạo ra từ Access.

Tôi xin lấy một ví dụ, trong Access tôi có tạo ra một query: Q_Count_Extra_P001
Vậy trong Excel kết hợp với ADO, tôi có thể dùng Query đó như sau:
Mã:
sSQL = "SELECT * " & _
           "FROM Q_Count_Extra_P001; "

Và dựa vào Recordset tôi có thể lấy dữ liệu về dựa trên Query ở trên

Mã:
Set adoResSap = QueryRecords(gcnAccess, sSQLSap)


Lê Văn Duyệt
 
Lần chỉnh sửa cuối:
Theo như tôi biết thì Access có nhiều loại Query, ngoài Query dạng SELECT(lúc đó được coi như 1 bảng), còn có các dạng query UPDATE, DELETE, INSERT,... Vậy nếu tôi có 1 đối tượng Query để thêm dữ liệu vào 1 bảng, bạn có thể cho tôi xin đoạn code để dùng đối tượng query đó ko?
Thanks!
 
Trích từ ebook ADO toàn tập:
Mã:
Sub SimpleCmd3() 
   Dim Cmd As New ADODB.Command 
   Dim RS As New ADODB.Recordset 
   Cmd.ActiveConnection = FileDS 
   Cmd.CommandText = "CustomerCount" [b]'Có thể là tên của table, view hay [COLOR="Red"]query[/COLOR] [/b]
   Cmd.Execute 
   RS.Open Cmd 
   MsgBox RS(0) 
End Sub

Như vậy với đoạn mã trên bạn có thể thực hiện các Query có sẵn trong Access.

Lê Văn Duyệt
 
Để có thể sử dụng hàm từ tạo trong access, ta phải mở Database của access ra như sau:
Mã:
Sub xlTest()
       Dim AC As Access.Application
       Set AC = New Access.Application
       AC.OpenCurrentDatabase "C:\Program Files\Microsoft _
            Office\Office\Samples\Northwind.mdb" , False, False

       Dim db As Database
       rs1 As Recordset         
       Dim qry As QueryDef         

       Set db = AC.DBEngine.Workspaces(0).OpenDatabase _ 
               ("C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb")     
 [COLOR=Blue]      ' Replace the above path with the correct path to the _       
    ' sample Northwind.mdb database on your computer.  [/COLOR]       
       Set qry = db.QueryDefs("qryExcelTest")         
       Set rs1 = qry.OpenRecordset 
       rs1.MoveLast         
       rs1.Close         
      db.Close      
      AC.CloseCurrentDatabase
End Sub


Như vậy thì cái hàm IsInternational trong access có thể chạy được rồi.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Đang là vấn đề em quan tâm, nhưng các bác cứ cho em xin 2 file ví dụ: data.mdb và So Quy Tien Mat.xls để em ngâm cứu dần dần ợ.
 
Các bác thử đọc thêm hướng dẫn bằng tiếng Anh, có lẽ hữu ích đó.
 

File đính kèm

  • Data Access from Excel VBA.rar
    447.7 KB · Đọc: 447
Thanks bạn đã chia sẽ
 
Chuyển dữ liệu từ query của acces sang excel

Tôi có dữ liệu trong access muốn chuyển dữ liệu từ query sang excel để làm báo cáo như file đính kèm mong các bạn chỉ
xin cám ơn
 
Lần chỉnh sửa cuối:
Gửi theo File đính kèm

Tôi chưa pót được bài mẫu lên cho các bạm nay tôi gửi file đính kèm
 

File đính kèm

  • Du lieu xuat sang excel.xls
    13.5 KB · Đọc: 124
Tôi có dữ liệu trong access muốn chuyển dữ liệu từ query sang excel để làm báo cáo như file đính kèm mong các bạn chỉ
Thì bạn tạo 1 form trong đó bạn tạo 1 nút command button sau đó tạo 1 macro với action là OutputTo trong Obejecttype bạn chọn query, Object name bạn chọn query cần mở. Phần Output Format bạn chọn Ms Excel97-2003. Phần Auto start chọn Yes.Lưu macro lại. Chạy
Mình kém diễn đạt, bạn nên đưa file lên mình sẽ xem cho nhéThân
Bạn xem bài này nhe
http://www.giaiphapexcel.com/forum/showthread.php?t=22218&page=2
Thân
 
Lần chỉnh sửa cuối:
Muốn dữ liệu trong Excel thay đổi khi dữ liệu trong access thay đổi

Tôi có dữ liệu trong access và được xuất sang Excel. Muốn khi dữ liệu trong acces thay đổi thì dữ liệu trong excel cũng thay đổi theo. Rất mong các bạn chỉ giùm
Xin Cám ơn!
 
Muốn dữ liệu Excel thay đổi thì dữ liệu đó phải link vào table của access:

- File - Open - File type = All datasource - chọn file mdb, OK - OK
- Trên thanh công cụ External data, nhấn nút Property
- click chọn vào các ô refresh on open, refresh every ... và gõ số phút mong muốn vào.

ExternaldataProperty.gif
 
Theo yêu cầu của Trang Tuyết Ngọc, tôi bổ sung hướng dẫn các bước thực hiện để mở access từ excel:
- File - Open - chọn File type là All Data source hoặc MS Access đều được

attachment.php


- Khi nhấn Open, phải nhấn tiếp Open trong cái hộp thoại thông báo này

attachment.php


- Chọn 1 trong các table của file access, và OK

attachment.php


- Kết quả
attachment.php


- Làm tiếp bước Property ở bài trên.
 

File đính kèm

  • External01.gif
    External01.gif
    15.3 KB · Đọc: 248
  • External02.gif
    External02.gif
    6.5 KB · Đọc: 235
  • External03.gif
    External03.gif
    11.3 KB · Đọc: 230
  • External04.gif
    External04.gif
    10.3 KB · Đọc: 234
Lần chỉnh sửa cuối:
chào bạn Lê Văn Duyệt,

hiện nay tôi cũng đang tự mình viết được một file quản lý tồn kho bằng access. nói chung là đáp ứng được nhu cầu công việc hiện tại tuy nhiên cũng gặp khó khăn khi nhập liệu vào file access từ file excel. việc ghi nhận dữ liệu nhập hàng chúng tôi dùng máy quét barcode để thu thập nên cũng khá tiện: itemcode, ngày sản xuất, mã vị trí chứa hàng, số lô trong ngày... tuy nhiên khi nhập vào access thì rất lâu vì chúng tôi chỉ copy và dán vào form nhập liệu trong access. nguyên nhân là trong form nhập liệu chúng tôi có thiết kế một số macro để kiểm tra dữ liệu vào. đôi khi máy bị treo luôn, đặc biệt khi số lượng dữ liệu tương đối lớn. bên cạnh đó một số báo cáo thiết lập bằng pivottable chạy rất chậm. có hướng nào khác phục tốc độ khi nhập liệu không? mỗi record chúng tôi có 5 thông tin và mỗi lần truy nhập có khoảng 400 đến 500 record.
Rất mong nhận được sự giúp đỡ của bạn.

Chân thành cám ơn.

Hung Hue
 
Chào bạn, Xuất dữ liệu từ Query sang Excel thô thì đây là code

1. Select dữ liệu
'Tim kiem SQL
On Error Resume Next
RS.Close
Dim SQL As String
RS.CursorLocation = adUseClient
SQL = "Select * from QLHS where" & " " & Me.Combo1.Text & " " & _
"Like" & " '" & Trim(Me.Text1.Text) & "%'" & " And" & " " _
& Me.Combo2.Text & " " & "like " & " '" & Trim(Me.Text2.Text) & "%'" & "" & "order by MA_PHONG ASC" & ""
'MsgBox "Cau lenh la " & " " & SQL
RS.Open SQL, DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = RS
DataGrid1.Refresh

2. Xuất dữ liệu từ Biến RS (một Recordset sang Excel)


Private Sub Cmd_xuat_excel_Click()
On Error Resume Next
Dim i, j As Integer
Dim str1 As String
i = 0
j = 0
With CommDial1
.CancelError = True
.ShowSave
str1 = .filename
End With
Dim createExcel As New Excel.Application
Dim Wbook As Excel.Workbook
Dim Wsheet As Excel.Worksheet
Set Wbook = createExcel.Workbooks.Add
Set Wsheet = Wbook.Worksheets.Add

For i = 0 To RS.Fields.Count - 1
Wsheet.Cells(1, i + 1).Value = RS.Fields(i).Name
Next i
If (RS.RecordCount > 0) Then
RS.MoveFirst
For i = 0 To RS.RecordCount - 1
For j = 0 To RS.Fields.Count - 1
Wsheet.Cells(i + 2, j + 1).Value = RS(j).Value
Next j
RS.MoveNext
Next i
End If
Wbook.SaveAs str1
Wbook.Protect "minh"
Wbook.Close True
Set createExcel = Nothing
Set Wbook = Nothing
Set Wsheet = Nothing
Set Wbook = createExcel.Workbooks.Open(str1)
createExcel.Visible = True
Exit Sub
End Sub
 
Lần chỉnh sửa cuối:
cập nhật dữ liệu từ excel vào access (code sai chỗ nào)

PHP:
Option Compare Database
 Const cnn = "Provider = Microsoft.ACE.OLEDB.12.0;" & "Data Source=C:\Documents and Settings\Administrator\Desktop\ket noi\test1.xlsx;" & "Extended Properties = Excel 12.0"
Sub get_Edata()
Dim myCn As String, mySql As String
Dim myRc As ADODB.Recordset
Dim myTb As ADODB.Recordset

myCn = cnn
mySql = "select*from[sheet1$]"
Set myRc = New ADODB.Recordset
myRc.Open mySql, myCn, adOpenStatic, adLockReadOnly
Set myTb = New ADODB.Recordset
myTb.Open "tbldulieu", CurrentProject.Connection, adOpenDynamic, adLockOptimistic, adCmdTable
 Do Until myRc.EOF
    myTb.AddNew
    myTb!ID = myRc!ID
    myTb!maKH = myRc!maKH
    myTb!TenKH = myRc!TenKH
    myTb!Diachi = myRc!Diachi
    myTb!Dienthoai = myRc!Dienthoai
    myTb!Congty = myRc!Congty
    myTb!DienthoaiCT = myRc!DienthoaiCT
    myTb!Mahang = myRc!Mahang
    myTb!Soluong = myRc!Soluong
    myTb!Dongia = myRc!Dongia
    myTb!Thanhtien = myRc!Thanhtien
    myTb!MaNV = myRc!MaNV
    myTb!Mavung = myRc!Mavung
    myTb!Sohoadon = myRc!Sohoadon
    myTb.Update
    myRc.MoveNext
 Loop
 End Sub
em dùng đoạn code (học được từ diễn đàn) này để cập nhật dữ liệu từ excel vào access, khi chạy chương trình không báo lỗi nhưng dữ liệu không cập nhật vào bảng tbldulieu được.
Các bác chỉ giúp em sai ở chỗ nào với ạ -+*/.
Thanks
 
Chỉnh sửa lần cuối bởi điều hành viên:
Mình không thấy connect của Access đâu cả
 
Option Compare Database
Const cnn = "Provider = Microsoft.ACE.OLEDB.12.0;" & "Data Source=C:\Documents and Settings\Administrator\Desktop\ket noi\test1.xlsx;" & "Extended Properties = Excel 12.0"
Sub get_Edata()
Dim myCn As String
Dim myRc As ADODB.Recordset
Dim myTb As ADODB.Recordset
Dim mySql As String
myCn = cnn
mySql = "select*from[sheet1$]"
Set myRc = New ADODB.Recordset
myRc.Open mySql, myCn, adOpenStatic, adLockReadOnly
Set myTb = New ADODB.Recordset
myTb.Open "tbldulieu", CurrentProject.Connection, adOpenDynamic, adLockOptimistic, adCmdTable
Do Until myRc.EOF
myTb.AddNew
myTb!ID = myRc!ID
myTb!maKH = myRc!maKH
myTb!TenKH = myRc!TenKH
myTb!Diachi = myRc!Diachi
myTb!Dienthoai = myRc!Dienthoai
myTb!Congty = myRc!Congty
myTb!DienthoaiCT = myRc!DienthoaiCT
myTb!Mahang = myRc!Mahang
myTb!Soluong = myRc!Soluong
myTb!Dongia = myRc!Dongia
myTb!Thanhtien = myRc!Thanhtien
myTb!MaNV = myRc!MaNV
myTb!Mavung = myRc!Mavung
myTb!Sohoadon = myRc!Sohoadon
myTb.Update
myRc.MoveNext
Loop
End Sub

em dùng đoạn code (học được từ diễn đàn) này để cập nhật dữ liệu từ excel vào access, khi chạy chương trình không báo lỗi nhưng dữ liệu không cập nhật vào bảng tbldulieu được.
Các bác chỉ giúp em sai ở chỗ nào với ạ -+*/.
Thanks


1/ Chuỗi kết nối : Nếu viết trên một hàng thì bỏ dấu &, nếu viết xuống hàng thì thiếu dấu gạch dưới

PHP:
Const cnn = "Provider= Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\Documents and Settings\Administrator\Desktop\ket noi\test1.xlsx;" & _
"Extended Properties=Excel 12.0"

2/ myTb.Open "tbldulieu", CurrentProject.Connection, adOpenDynamic, adLockOptimistic, adCmdTable

Dư thừa adCmdTable

3/ Sau khi copy dữ liệu xong, nhớ giải phóng bộ nhớ
 
Lần chỉnh sửa cuối:
em đã sửa lại theo hướng dẫn của các bác, mặc dù sau khi chạy code đã cập nhật dữ liệu nhưng dũ liệu đã cập nhật bị thiếu, một số cột bị blank. Không hiểu lý do vì sao ??? Các bác giải thích giúp em với, không biết lỗi đó có khắc phục được không ???.
Thanks
 
Web KT
Back
Top Bottom