SỐ 155

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?

[Đầu trang]
Trang chủ
Nội lực "Peter Pan"
Cầu nối Intel Việt Nam
Chuyện trong tuần
Cõi người ta
Bình luận thị trường
Cõi Mô-bai
Chuyên đề
Bổ ngửa
Túi càn khôn IT
Hồ lô biến
Cảm về Game
Nhật ký e-CHÍP
Bản quyền Công ty Phần mềm & Truyền thông VASC
 99 Triệu Việt Vương HN; Tel: (04) 9782235 • email: echip@vasc.com.vn
Mọi chi tiết về kinh doanh và quảng cáo xin liên hệ Phòng Quảng cáo. Tel: (04) 9782077 kd@vasc.com.vn