|
KINH NGHIỆM LẬP
TRÌNH |
|
Từ Access “nhảy”
sang Excel
ĐÀM MINH KHÔI |
|
Thỉnh thoảng, ta có nhu cầu “nhảy” từ Access sang
Excel: xuất một bảng nào đó của Access vào Excel.
Khi “mần” chuyện này với VBA, tui thấy không những
có thể “quăng” dữ liệu từ một bảng sang một sheet
của Excel ngay đúng vào một ô (cell) nào đó, mà còn
có thể định dạng nội dung của sheet y như
đang thao tác trong Excel. Tui sẽ dùng cơ sở dữ liệu
mẫu Northwind.MDB (hoặc Nwind.MDB) để
minh họa. Bạn mở nó ra nghen! |
|
 |
|
Trong cửa sổ Database vừa mở, chọn biểu mẫu
có tên Customers, vẽ một nút lệnh có tên là
cmdXuatRaExcel. Trong cửa sổ Properties
của nút lệnh này, chọn tình huống (event) On
Click, chọn [Event procedure] cho tình
huống này và bấm vào
để mở cửa sổ mã lệnh VBA. Bạn đưa đoạn mã 1 vào đó
nhằm kết xuất toàn bộ bảng Customers thành
tập tin Excel có tên D:\Customers.XLS (xem
hình) và "lén lút" dùng Excel mở tập tin
D:\Customers.XLS để: |
|
Thay đổi font cho toàn bộ sheet
thành Verdana. |
|
Làm cho dòng tiêu đề bự hơn và đậm hơn cho nó oai. |
|
Chỉnh kích thước các cột sao cho hiển thị đầy đủ
dữ liệu. |
|
Đổi màu tiêu đề cột thứ nhất thành màu đỏ. |
|
Đổi tiêu đề cột thứ hai thành: “Ten cong ty”. |
|
Chèn thêm một dòng bên trên dòng tiêu đề để làm
tựa cho báo cáo. |
|
Đoạn mã 1
Private Sub cmdXuatRaExcel_Click()
Dim sTapTinExcel As String
sTapTinExcel = "D:\Customers.XLS"
‘ Kết xuất ra Excel
DoCmd.OutputTo acOutputTable, "Customers",
acFormatXLS, sTapTinExcel
Dim xlApp As Object ' Khởi động Excel, nhưng hổng
thấy mặt mũi hắn
Set xlApp = CreateObject("Excel.Application")
Dim xlBook As Object ' Mở tập tin Excel
D:\Customers.XLS
Set xlBook = xlApp.Workbooks.Open(sTapTinExcel)
Dim xlSheet As Object
Set xlSheet = xlBook.Worksheets(1) ‘ Sheet1 trong
Excel
xlSheet.Cells.Font.Name = "Verdana" ' Font cho
toàn bộ sheet
' Tiêu đề gồm 11 cột từ A đến K
xlSheet.Range("A1:K1").Select
With xlApp.Selection
.Font.Size = 14
.Font.Bold = True
.RowHeight = .Font.Size * 1.4
End With
With xlSheet
.Columns.EntireColumn.AutoFit ' Chỉnh kích thước
các cột cho khớp dữ liệu
.Cells(1, 1).Font.ColorIndex = 3 ' Ô đầu tiên
trong sheet có màu đỏ
.Cells(1, 2).Value = "Ten cong ty" ‘ Đổi tên tiêu
đề cột thứ hai
.Rows("1:1").Insert Shift:=xlDown ' Chèn thêm
dòng tựa
.Range("A1").FormulaR1C1 = _
"BANG NAY XUAT RA EXCEL TU BANG CUSTOMERS CUA
DATABASE MAU: NORTHWIND.MDB"
End With
‘ Chỉnh dạng dòng tựa
With xlSheet.Rows("1:1").Font
.Size = 18
.Bold = True
End With
‘ Merge 11 ô để dòng tựa chứa hết trong 11 ô này
xlSheet.Range("A1:K1").Select
xlApp.Selection.Merge
xlBook.Save ' Ghi các sửa đổi vào tập tin
' Dọn dẹp rồi cất Excel đi
xlBook.Saved = True
xlApp.Quit
' Quay trở lại Microsoft Access
AppActivate "Microsoft Access"
End Sub |
|
Nếu... "chịu chơi", bạn thử tạo một macro
(bằng chức năng Record New Macro) trong Excel
để thực hiện thao-tác-cần-lập-trình-tự-động, sau đó
mở nội dung macro này để đọc mã lệnh rồi bắt
chước. Ví dụ, muốn biết đoạn mã VBA cần viết để
đổi font chữ ô thứ nhất thành Verdana, gõ nội dung
gì đó vào ô thứ hai trên dòng 1, ta “mần” như
sau: |
|
Chọn mục Tools \ Macro \ Record New Macro,
rồi bấm OK khi hộp thoại Record Macro
xuất hiện. Excel bắt đầu ghi lại các thao tác của
bạn. Hãy dùng chuột để đổi font và gõ nội
dung tùy ý. Xong xuôi, bạn bấm nút
.Thế
là macro được tạo ra. |
|
Chọn mục Tools \ Macro \ Macros, chọn tên
Macro1 trong hộp thoại Macro, rồi bấm
Edit để xem nội dung mã lệnh VBA. |
|
Ta không cần bắt chước tất tần tật những gì “mắt
thấy tai nghe” trong Macro1, vì có các thuộc
tính (properties) mặc định. Để cho dzui, bạn thử so
sánh cách ghi mã lệnh trong Macro1 và
trong thủ tục cmdXuatRaExcel_Click(), xem có
chi khác? |
|
|