-
Phân Biệt Code Viết Trong VBA Excel Và Access
kieu manh > 21-06-15, 08:57 PM
Xin Chào Các Thành Viên Thủ Thuật Access
Mình là thành viên mới tham gia hôm nay mình chưa được hoc về code viết trên Access và Access một ngày nào cả ...nhưng mình thấy code nó gần giống với code VBA mình hay viết trên Excel về cú pháp và ngữ pháp....
Vì vậy các Bạn cho mình hỏi
1/ Mình có thể tập viết được code trên Access hay không....
2/ Các điều kiên cần thiết để có thể viết được trên Access ..
3/ Tài liệu cho người mới làm quen với Access nếu có cho mình xin link...
4/ Phân biệt sự giống nhau và khác nhau giữa code viết trên Access Và trên Excel...
Xin cảm ơn
PS: Nếu bài viết của mình chưa đúng mục nhờ Mod chuyển dùm tới mục phù hợp ....Tại mới nên chưa quen ..Xin cảm ơn -
RE: Phân Biệt Code Viết Trong VBA Excel Và Access
paulsteigel > 22-06-15, 12:01 AM
Code VBA trong Access và Excel. ... nói chung là bộ Office là giống nhau, chỉ khác nhau về một số đối tượng của từng ứng dụng thôi bạn ạ
Bạn viết được trong excel thì bạn hoàn toàn có thể làm trên access.
Khi bạn chuyển sang Access bạn sẽ thấy sức mạnh của nó trong xử lý số liệu!
Thân -
RE: Phân Biệt Code Viết Trong VBA Excel Và Access
tranthanhan1962 > 22-06-15, 01:11 AM
VBA của access và excell là như nhau. Nhưng VBA là một ngôn ngữ thủ tục (procedural language) để bạn có thể sử dụng để tự động hóa các đối tượng. Vì vậy, trong Access bạn sử dụng VBA để thao tác Access Objects như các Button, Textbox, Form, Report (tham chiếu qua dữ liệu của các table, query)… Trong Excel bạn sử dụng VBA thao tác các Form hoặc các Excel Objects được thiết kế trực tiếp trên Sheet các để tự động hóa các đối tượng Excel như các ô (cells)và các dòng (ranges).
Tài liệu access cơ bản tiếng việt cũng nhiều trên mạng. Cách viết code cũng gần giống nhau (có thể nói là “y chang”).
Nói chung bạn đã có cảm nhận VBA của excel nên đến với VBA của access cũng dễ dàng.
Cái khác giữa access và excel không phải là vấn đề VBA, mà là bạn sẽ gặp các đối tượng chứa dữ liệu kiểu mới: Table thay thế Sheet, Field thay thế Column, Record thay thế Range. Bạn sẽ làm quen với các mối liên kết giữa các table…
Và phần khó khăn hơn là học cách sử dụng các công cụ mới mà bạn có thể sử dụng VBA để tự động hóa.
Trước mắt bạn có thể tải bất kỳ một tài liệu access cơ bản tiếng việt nào đó để nghiên cứu. Khi cần bạn có thể đến với Thủ Thuật Access. Anh chị em trong forum sẵn sàng hỗ trợ bạn. -
RE: Phân Biệt Code Viết Trong VBA Excel Và Access
kieu manh > 22-06-15, 09:40 AM
Mình viết 2 code mẫu trên Excel. Nếu Bạn nào rãnh hổ trợ mình Viết lại 2 code sau trên Access
1/ Lọc duy nhất cột A Sang cột [L2] Sử dụng dictionary
2/ Lọc copy theo điều kiên Cột C nếu trống thì bỏ Paste Qua [G1] sử dụng Array
Nhờ Trợ giúp:
Viết lại 2 yêu cầu trên ... Thực hiện trên Access để mình có thể so sánh cách viết và từng bước hoc tập và chinh phục Access
PS: Mình Tìm cách úp File lên trực tiếp lên mà không được .. Bạn nào biết xin chỉ dùm
Xin cảm ơn các Bạn
Code Lọc Duy Nhất
Mã:Code Lọc Duy Nhất
Public Sub LocDuyNhat()
Dim Nguon(), i As Long
Nguon = Range([A2], [A65536].End(3)).Value
With CreateObject("scripting.dictionary")
For i = 1 To UBound(Nguon)
.Item(Nguon(i, 1)) = .Item(Nguon(i, 1))
Next
Range("L2").Resize(.Count) = Application.Transpose(.keys)
End With
End Sub
Code Lọc Theo điều kiện
[code]
Public Sub CopyNguon(ByVal Nguon As Range, Dich As Range)
Dim Arr(), Kq(), i&, j&, k&
With Excel.ActiveSheet
Arr = Nguon.Value
ReDim Kq(1 To UBound(Arr, 1), 1 To UBound(Arr, 2))
For i = 1 To UBound(Arr, 1)
If Arr(i, 3) <> "" Then
k = k + 1
For j = 1 To UBound(Arr, 2)
Kq(k, j) = Arr(i, j)
Next
End If
Next
Dich.Resize(UBound(Arr, 1), UBound(Arr, 2)) = Kq
End With
End Sub
''Chạy Sub này
Public Sub MainNguon()
CopyNguon Range([A2], [A65536].End(3).Resize(, 4)), [G2]
End Sub
Link File Test
http://www.mediafire.com/download/0tkl42..._Excel.rar
[/code] -
RE: Phân Biệt Code Viết Trong VBA Excel Và Access
maidinhdan > 22-06-15, 10:01 AM
Trích dẫn:Kieumanh
Trả lời:
Mình viết 2 code mẫu trên Excel. Nếu Bạn nào rãnh hổ trợ mình Viết lại 2 code sau trên Access
1/ Lọc duy nhất cột A Sang cột [L2] Sử dụng dictionary
2/ Lọc copy theo điều kiên Cột C nếu trống thì bỏ Paste Qua [G1] sử dụng Array
3/ Mình Tìm cách úp File lên trực tiếp lên mà không được .. Bạn nào biết xin chỉ dùm
+ Câu 1 + 2: Trên Access không cần viết code như trên Access đâu bạn ạ, chỉ cần tạo Query và chọn Group by là nó ra rồi. Đó là điểm khác biệt giữa Excel và Access ( khuyến khích sử dụng Access 2003 vì hầu hết đề sử dụng Ac2003)
+ Câu 3: Do dung lượng diễn đàn không lớn nên chỉ có ban quản trị diễn đàn mới được phép gửi file đính kèm lên nhưng dung lượng file gửi lên cũng rất hạn chế. Riêng mình chỉ được cấp sử dụng có 19Mb lên diễn đàn nên mỗi lần Post file mình cũng hạn chế tối đa các file có dụng lượng trên 100Kb post lên diễn đàn.
* Cuối cùng, để làm cụ thể cho bạn về Query thì bạn hạy tạo Database sẳn trên Access rồi Post file lên nhé.
Thân ái chào bạn. -
RE: Phân Biệt Code Viết Trong VBA Excel Và Access
kieu manh > 22-06-15, 10:08 AM
To Bạn [b]maidinhdan[/b]
Access Mình Mù tịt nếu được Bạn làm dùm mình File luôn để mình nghiên cứu được không ....Cảm ơn Bạn -
RE: Phân Biệt Code Viết Trong VBA Excel Và Access
maidinhdan > 22-06-15, 10:19 AM
(22-06-15, 10:08 AM)kieu manh Đã viết: To Bạn [b]maidinhdan[/b]
Access Mình Mù tịt nếu được Bạn làm dùm mình File luôn để mình nghiên cứu được không ....Cảm ơn Bạn
Bài của bạn đây, lần sau không có chuyện là hộ nửa nhé...có gì thì tìm giáo trình Access trên diễn đàn rất nhiều
file đính kèm phía dưới -
RE: Phân Biệt Code Viết Trong VBA Excel Và Access
kieu manh > 22-06-15, 10:35 AM
(22-06-15, 10:01 AM)maidinhdan Đã viết:
Trích dẫn:Kieumanh
Trả lời:
Mình viết 2 code mẫu trên Excel. Nếu Bạn nào rãnh hổ trợ mình Viết lại 2 code sau trên Access
1/ Lọc duy nhất cột A Sang cột [L2] Sử dụng dictionary
2/ Lọc copy theo điều kiên Cột C nếu trống thì bỏ Paste Qua [G1] sử dụng Array
3/ Mình Tìm cách úp File lên trực tiếp lên mà không được .. Bạn nào biết xin chỉ dùm
+ Câu 1 + 2: Trên Access không cần viết code như trên Access đâu bạn ạ, chỉ cần tạo Query và chọn Group by là nó ra rồi. Đó là điểm khác biệt giữa Excel và Access ( khuyến khích sử dụng Access 2003 vì hầu hết đề sử dụng Ac2003)
+ Câu 3: Do dung lượng diễn đàn không lớn nên chỉ có ban quản trị diễn đàn mới được phép gửi file đính kèm lên nhưng dung lượng file gửi lên cũng rất hạn chế. Riêng mình chỉ được cấp sử dụng có 19Mb lên diễn đàn nên mỗi lần Post file mình cũng hạn chế tối đa các file có dụng lượng trên 100Kb post lên diễn đàn.
* Cuối cùng, để làm cụ thể cho bạn về Query thì bạn hạy tạo Database sẳn trên Access rồi Post file lên nhé.
Thân ái chào bạn.
(22-06-15, 10:19 AM)maidinhdan Đã viết:
Mình coi code trong đó thấy khác hẳn so với code viết trên Excel....Quả thực Access lọc dữ liệu hay thiệt ... Cảm ơn Bạn Từ từ mình nghiên cứu nếu khó khăn úp bài Nhờ các Bạn xử lý(22-06-15, 10:08 AM)kieu manh Đã viết: To Bạn [b]maidinhdan[/b]
Access Mình Mù tịt nếu được Bạn làm dùm mình File luôn để mình nghiên cứu được không ....Cảm ơn Bạn
Bài của bạn đây, lần sau không có chuyện là hộ nửa nhé...có gì thì tìm giáo trình Access trên diễn đàn rất nhiều
file đính kèm phía dưới
Một lần nữa xin cảm ơn các Bạn tham gia chỉ giúp -
RE: Phân Biệt Code Viết Trong VBA Excel Và Access
paulsteigel > 22-06-15, 12:17 PM
(22-06-15, 10:35 AM)Do Access mạnh về xử lý số liệu nên để sử dụng tốt nó, một trong những công cụ mới mà bạn cần làm quen đó là SQL (Câu lệnh truy vấn có cấu trúc). Đã viết: Với bài toán lọc duy nhất như bạn trong Excel cậu chuyện trở nên đơn giản hơn rất nhiều nhờ SQL.
Tôi lấy một ví dụ:
Để lấy một danh sách các bản ghi không trùng nhau trong một bảng theo cột tên chẳng hạn, với Access, đơn giản là:
Select distinct Hovaten from tblNguoi dung;
Trong khi với Excel bạn phải dùng vài cột phụ và hệ thống các hàm match, index, countif.
Đến excel 2007 việc này đã được cải thiện nhờ đưa khái niệm bảng vào bảng tính nhưng vẫn không thể so với Acess được.
Quay vào bài toán của bạn, đóng góp thêm cho Mai Đình Đàn.
:::Truy vấn Group by được sử dụng trong tính toán, gộp
Tham chiếu <<http://www.w3schools.com/sql/sql_groupby.asp>>
Để lọc danh sách duy nhất, ta chỉ cần dung truy vấn Select với từ khóa Distinct (khác nhau)
Ví dụ truy vấn duy nhất sẽ trở thành
SQL của Đàn
Mã:SELECT tbEx.A
FROM tbEx
GROUP BY tbEx.A;
SQL lọc duy nhất
Mã:SELECT DISTINCT tbEx.A from tbEx;
Tại sao chỉ cần như vậy, nếu dùng Groupby sẽ làm tốn tài nguyên vì bản chất nó là dùng để tính toán.
Nếu bạn dùng được tiếng Anh thì nguồn sau đây có thể là nơi tham khảo tốt về Query
http://www.w3schools.com/sql/sql_groupby.asp
Tiện thể, tôi có trang web www.sfdp.net do Google host, nếu mọi người muốn tải file lên mình có thể tạo ra một khu vực ví dụ
http://www.sfdp.net/thuthuataccess/thuthuataccess
Các bạn có tài khoản gmail có thể sử dụng để đăng tải file và tạo liên kết.
(hiện bạn Đinh Trọng Hòa cũng đã tải vài lần. -
RE: Phân Biệt Code Viết Trong VBA Excel Và Access
tranthanhan1962 > 22-06-15, 01:30 PM
Bạn maidinhdan đã xử lý công việc viết code Excel của bạn bằng Access. Qua đây bạn cũng thấy vài sự khác biệt giữa Excel và Access.1/ Trong Excel đơn vị cơ bản chứa dữ liệu là Worksheet. Một Worksheet có số lượng cột (column) / dòng (row - range) cố định, khi mở một Worksheet sẽ có sẵn số lượng cột, dòng tối đa. Excel 2003: 256 / 63.536. Excel 2013: 396 / 1.048.576.Trong Access đơn vị cơ bản chứa dữ liệu là Table. Một Table có số lượng cột (field) / dòng (record) không có sẳn (Nếu bạn thiết kế với lệnh Create table by entering data thì Access cũng cho bạn một table trắng 10 cột và 21 dòng). Thực ra cũng chả có ai thèm lệnh này. Nếu bạn tự thiết kế thì số field sẽ là số field do bạn thiết kế còn với bảng table mới nó chỉ cho bạn 1 record để bạn nhập dữ liệu và số record chỉ tăng mỗi lần 1 dòng cho bạn nhập dữ liệu mới, Số lượng cột (field) tốt đa của table là 255. Số lượng dòng không giới hạn miễn là không vượt 2G cho một tập tin mdb. Ước tính nếu tập tin mdb chỉ chứa một table với đầy đủ 255 field thi số lượng dòng có thể trên 6.000.000.2/Dữ liệu nguồn (bảng cơ sở) của excel bạn đặt bất kỳ vị trí nào trên bất kỳ worksheet nào cũng được, một worksheet có thể chứa nhiều bảng khác nhau, mối quan hệ của các bảng thông qua các hàm rất lỏng lẻo. Các định dạng dữ liệu trên các ô tùy ý. Bạn có thể viết các hàm ở bất kỳ ô nào. Các report cũng là những vùng nằm trên worksheet. Nói chung worksheet là một nồi lẩu chứa đủ thứ. Bạn muốn ăn miếng nào thì lại chỗ đó gắp ăn.Trong Access, dữ liệu nguồn được đặt trong các table riêng lẻ với các định dạng, quy chuẩn rõ ràng. Mối quan hệ giữ các bảng (table) chặt chẻ thông qua các khóa chính (primary key) và các khóa ngoại (foreign key). Định dạng các field là duy nhất. Trong table chỉ chứa các dữ liệu của bạn đưa trực tiếp vào. Muốn viết hàm bạn phải xử lý thông qua các query. Bạn cũng có thể nhập dữ liệu thẳng vào table nhưng nếu xử lý công việc này bằng form thì thật tuyệt vời (đã hơn mấy cái form trong excel gấp trăm lần). Để xử lý in ấn báo cáo thì report cho phép bạn tạo tổng, gom nhóm, dàn trang, cắt trang … với nhiều tùy biến tuyệt vời chứ không phải cù cưa với Group and Outline của Excel3/Xử lý code trong excel cũng như access nhìn chung không khác nhau. Cũng đưa các bẫy code xử lý sự cố vào các event, cũng form open, button click…cũng i chang các cấu trúc if – then, do – loop, for – next... Điều khác hơn là quét virus thoải mái mà không hề sợ mất, sợ lỗi.Nói tóm lại. Nếu bạn đang làm công việc xử lý kế hoạch cho đơn vị với nhiều bảng biểu đơn giản nhưng liên tục bị thay đổi phương án do các quyết định bất thường của ban giám đốc. Bạn không cần vội đến với Access vì có khi trong việc này Access là một công cụ tệ hại so với Excel. Nhưng nếu bạn đang cần một cơ sở dữ liệu qui chuẩn có bài bản, số lượng row trong từng bảng lớn. Những công thức lồng hàm dài dằng dặt nhưng không thay đổi (như các ứng dụng quản lý kế toán, quản lý nhân sự…) Acess sẽ thể hiện một sự vượt trội mà Excel so với nó giống như một chú lùn đứng ngang đầu gối của nàng Bạch Tuyết.Chúc bạn thành công.