-
01-13-2009, 05:01 AM #1Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Chuyển dữ liệu từ EXcel vào ACCESS
Mình tìm và đọc được thông tin và mẫu VBA như sau:
Để nhập mới nội dung một table (trong Access) từ một tập tin Excel, ta có thể dùng một trong những cách sau đây:
1. Chọn File \ Get External Data \ Import từ trình đơn Access. Trên hộp thoại Import, chọn mục Microsoft Excel từ danh sách Files of type, rồi chọn tập tin Excel muốn đưa dữ liệu vào Access và bấm OK. Sau đó, theo từng bước hướng dẫn của Access. Tuy nhiên, dữ liệu luôn luôn được đưa vào một table mới, chứ không đưa vào table có sẵn cấu trúc được.
2. Tạo một macro, rồi trên form vẽ một nút lệnh để chạy macro này. Tuy nhiên, các thông số như TableName, FileName cần phải được gõ sẵn, hoặc phải bổ sung thêm một số “kỹ xảo” nữa rất mất công.
3. Cách khác hay hơn: dùng đối tượng DoCmd, một hình thức sử dụng macro của Access trong VBA. Ví dụ: Tạo form như hình 1, gồm có một textbox (đặt tên txtTapTinExcel), một nút lệnh (có dấu 3 chấm, đặt tên cmdTimTapTin), một nút lệnh (để đọc dữ liệu từ tập tin Excel có tên chứa trong ô txtTapTinExcel, đặt tên cmdDocDuLieuTuExcel) và một ActiveX Control có tên dlgTimTapTin. ActiveX Control này được tạo bằng cách bấm nút More Controls (nút cuối cùng) trên ToolBox, rồi chọn mục Microsoft Common Dialog Control. Lần lượt gõ vào các thủ tục xử lý tình huống OnClick của các nút lệnh cmdDocDuLieuTuExcel và cmdTimTapTin (đoạn mã 1). Bạn lưu ý, thứ tự và tên các cột trong tập tin Excel phải giống như cấu trúc table đã khai báo trong Access.
Đoạn mã 1
Private Sub cmdTimTapTin_Click()
With dlgTimTapTin
.ShowOpen
txtTapTinExcel = .FileName
End With
End Sub
Private Sub cmdDocDuLieuTuExcel_Click()
Dim sTenTable As String
sTenTable = "tbNhanVien" ‘ Ví dụ
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _
sTenTable, txtTapTinExcel, True
End Sub
////////////////////////////////////////////////////////
Mình sử dụng cách 3. Nhưng từ Toolbox chọn Microsoft Common Dialog Control thì báo lỗi tạm thời mình dich là: bạn không có license để sử dụng ActiveX Control? Bạn có cách khắc phụ không?
Có phải là cài VB6.0 mới có không?View more random threads:
- Các viết lệnh trong AC
- tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform
- Làm đông hồ đếm ngược trong Access
- Xóa các record trong table access
- Chuyển dữ liệu từ EXcel vào ACCESS
- Giải pháp nào cho compact CSDL lớn !
- Tạo Form cập nhật có trường OLE Object
- Giúp sinh mã quản lý cho từng sản phẩm
- Nhờ các cao nhân giúp đỡ cách chạy phần mềm kế toán Access.
- Sau khi Append và Delete Record
-
01-13-2009, 05:17 AM #2Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Chuyển dữ liệu từ EXcel vào ACCESS
Gửi bởi vuthuanbkvn
VD: cái control của bạn là cái file có tên commdlg.ocx lưu ở D:-/MyApp thì bạn mở menu Start - Run và gõ vào:
regsvr32 D:-/MyApp\commdlg.ocx
-
01-13-2009, 05:25 AM #3Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Chuyển dữ liệu từ EXcel vào ACCESS
Gửi bởi phatnq2002
Cái này mình đọc vào làm nhưng nó chỉ sửa được lỗi báo sai Comdg32.ocx
"In order to fix this problem, you'll need to set up and register the library file.
The easiest way to do that is to download the following file that will install and register most of the Library Files used by Ascentive's products (if you still see the error, try the manual instructions below).
Please use the following URL to download a 5.66 MB (5,935,720 bytes) Ascentive Library Installer.
http://www.box.net/public/tv8pgkh16d
Alternatively, you may download just the file you are missing and manually register it yourself. Here's how to do it:
1. Download COMDLG32.OCX (right click the text on the left, go to website and save to your Desktop).
http://www.box.net/public/2snvbtgvge
2. Back up your current copy of COMDLG32.OCX and copy the new version to the same file location. This file should be located in the WINDOWS\SYSTEM directory on your C: drive (for Windows NT and 2000: \WINNT\system32).
3. Using your mouse, click on the "Start" button and then click on "Run".
4. According to your Operating System, type the following command to register this library file:
Windows 95, 98, or Me:
regsvr32 \windows\system\COMDLG32.OCX
Windows NT or 2000:
regsvr32 \WINNT\system32\COMDLG32.OCX
Windows XP:
regsvr32 \windows\system32\COMDLG32.OCX
5. You should see a message saying "DllRegisterServer ... succeeded"
If you are getting an error telling you that the file is missing, then you are not typing the command in correctly. You will need to type it in *exactly* as as shown above for your operating system."
-
01-13-2009, 05:34 AM #4Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
Ðề: Chuyển dữ liệu từ EXcel vào ACCESS
Gửi bởi vuthuanbkvn
Thông thường, dù đã khai báo OK, nhưng nếu bạn mở form ra để design thì nó lại báo lỗi, nhưng nếu bạn không mở design thì không sao. Nó vẫn chạy bình thường. Tôi đã gặp trường hợp này.
Tuy nhiên xin góp ý với bạn một chút, bạn hãy add thư viện Microsoft Office vào, trong đó có sẵn control dialog cũng ngon lành không kém và không bị báo lỗi.
-
01-13-2009, 06:04 AM #5Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Chuyển dữ liệu từ EXcel vào ACCESS
Gửi bởi phatnq2002
-
01-13-2009, 06:12 AM #6Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 5
Ðề: Chuyển dữ liệu từ EXcel vào ACCESS
Nếu đã biết dùng VBA thì cần gì cái tool đó nữa nhỉ?
Bản thân Access đã tích sẵn cái dialog cho chọn file rồi.
Private Sub cmdTimTapTin_Click()
Dim dlgOpen As FileDialog, txtFilePathname As String
Set dlgOpen = Application.FileDialog(msoFileDialogOpen)
With dlgOpen
.Title = "Chon file XLS chua data"
.Filters.Add "Excel file", "*.xls", 1
.AllowMultiSelect = False
If .Show = 0 Then
Exit Sub
Else
If .SelectedItems.Count = 0 Then
MsgBox "Chua chon mot file nao ca.", , "THONG BAO"
Exit Sub
Else
txtFilePathname = .SelectedItems(1)
End If
End If
End With
End Sub
-
01-14-2009, 03:11 AM #7Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Chuyển dữ liệu từ EXcel vào ACCESS
Gửi bởi muontennguoi
-
02-08-2009, 06:04 AM #8Silver member
- Ngày tham gia
- Apr 2016
- Bài viết
- 4
Ðề: Chuyển dữ liệu từ EXcel vào ACCESS
Mình muốn các bạn trợ giúp mình như sau:
tạo 1 form : formnhapexcel
1 textbox : txtExcel
1 textbox: txtAccess
<---------------- hiện đường dẫn của tập tin chứa Excel và Access
1 button : cmdExcel
1 Button : cmdAccess
<------- 2 nút tìm kiếm tập tin E và A
Giả sử mình tạo được 1 tập tin Excel tương ứng với 1 bảng dữ liệu trong access rồi bằng đoạn mã sau : DoCmd.OutputTo acTables, "tblnhap", "MicrosoftExcelBiff8(*.xls)", "", True, "", 0
bây giờ mình tạo 1 buton : cmdExceltoAccess
nhiệm vụ update hặc change những gì trên Excel vào Access.
Mong mọi người giúp đỡ!
-----------------------------------------------------------------------------------------
Đây mình chỉ làm được đến đây: hic
Private Sub cmdAccess_Click()
Set objdialog = CreateObject("UserAccounts.CommonDialog")
objdialog.Filter = "Programs|*.mdb"
objdialog.InitialDir = "C:-/"
Browse = objdialog.ShowOpen
If Browse = 0 Then
Else
'Run.Text = objdialog.Filename
TxtAccess = objdialog.Filename
MsgBox "ÐaÞ tiÌm thâìy dýÞ liêòu Access thaÌnh công!!", vbInformation, "Thông baìo "
End If
End Sub
Private Sub cmdExcel_Click()
Set objdialog = CreateObject("UserAccounts.CommonDialog")
objdialog.Filter = "Programs|*.xls"
objdialog.InitialDir = "C:-/"
Browse = objdialog.ShowOpen
If Browse = 0 Then
Else
'Run.Text = objdialog.Filename
txtExcel = objdialog.Filename
MsgBox "ÐaÞ tiÌm thâìy dýÞ liêòu Excel thaÌnh công!!", vbInformation, "Thông baìo "
End If
End Sub
-----------------------------------------------------------------------------------------
Mình thử viết như sau: nhưng không được. híc
Private Sub cmdExceltoAccess_Click()
Dim txtExcel As String
Dim TxtAccess As String
If IIf(IsNull(txtExcel), "", txtExcel) = "" Then
MsgBox "không coì dýÞ liêòu naÌo ðýõòc nhâòp vaÌo?", vbInformation, "Thông baìo lôÞi saÒy ra"
Exit Sub
End If
If IIf(IsNull(TxtAccess), "", TxtAccess) = "" Then
MsgBox "không coì dýÞ liêòu naÌo ðýõòc nhâòp vaÌo?", vbInformation, "Thông baìo lôÞi saÒy ra"
Exit Sub
End If
'''''''
Call Ex2Ac(ExcelPath$ & AccessPath$) '<-- Thay tên file Excel kèm Path thích ho'p
'Call Access2Excel2("txtExcel", "TxtAccess")
MsgBox "ÐaÞ nhâòp thaÌnh công?", vbInformation, "Thông baìo "
End Sub
Private Sub Ex2Ac(ExcelPath$)
Const acImport = 0: Const acSpreadsheetTypeExcel9 = 8
Set objAccess = CreateObject("Access.Application")
'objAccess.NewCurrentDatabase AccessPath$
objAccess.OpenCurrentDatabase ("TxtAccess")
objAccess.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "tblnhap", "txtExcel", True
End Sub
'//////////////////////
'Cach thu 2
Private Sub Access2Excel2(AccessPath$, ExcelPath$)
Const acExport = 1: Const acSpreadsheetTypeExcel9 = 8
Set objAccess = CreateObject("Access.Application")
objAccess.OpenCurrentDatabase AccessPath$ ' Câu sau có Test là tên Table
objAccess.DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Test", ExcelPath$, True
End Sub
-
02-09-2009, 04:35 PM #9Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 3
Ðề: Chuyển dữ liệu từ EXcel vào ACCESS
Gửi bởi vuthuanbkvn
Cái này "txtExcel" và "TxtAccess" cần bỏ mấy cái dấu '' là chạy phăm phăm thôi mà
Mà bạn xem lại đoạn này
Gửi bởi vuthuanbkvn
VD:
On error goto thongbaoloi
(action)
exit sub
thongbaoloi:
msgbox " Xem lai du lieu dau vao"
-
02-12-2009, 10:35 PM #10Silver member
- Ngày tham gia
- May 2016
- Bài viết
- 47
Ðề: Chuyển dữ liệu từ EXcel vào ACCESS
Nhân tiện đây cho hỏi người nào có source chỉ cần đặt sự kiện(VD: click) là nó auto convert các trường excel tùy chọn vào thành 01 table trong access. Rồi từ các table đó kết nối với nhau bằng câu lệnh VB chứ chuyển sang table tạm như SuyNghiDi nói cũng vất vả lắm mà lại không thuận tiện. Cảm ơn trước nhé
Khu dự án cao cấp Moonlight Avenue được phát triển bởi Tập đoàn Hưng Thịnh phù hợp khách hàng đẳng cấp nhất tiện ích phù hợp. Moonlight Thủ Đức phù hợp khách hàng khu an ninh phong cách nghỉ dưỡng....
Moonlight Avenue Dự án chung cư không gian thoáng mát thoải mái nhất