Tải bản đầy đủ (.pdf) (5 trang)

Giáo trình hướng dẫn sử dụng Macro trong Microsoft Excel phần 10 docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (661.11 KB, 5 trang )



148
Application.Quit
End Sub
7.1.2. Khoá tương tác người dùng
Trong một số trường hợp, để tránh người dùng thoát khỏi Excel khi đang thực hiện một số
bước tính toán mất nhiều thời gian, cần phải giới hạn tương tác giữa người dùng và chương
trình Excel. Đối tượng Application có một số phương thức/thuộc tính để thực hiện điều này:
Ø
Ø

Gán thuộc tính
DisplayAlerts bằng FALSE để ẩn các hộp thoại Excel khi đang thực thi
mã lệnh.
Ø
Ø

Gán thuộc tính
Interactive bằng FALSE để người dùng hoàn toàn không thể tương tác
được với Excel.
Ø
Ø

Gán thuộc tính
ScreenUpdating bằng FALSE để tắt quá trình cập nhật lại màn hình, làm
ẩn đi những thay đổi diễn ra trong lúc thực thi mã lệnh.
Những cách trên đều cần phải thực hiện ở đầu đoạn mã lệnh và phải thực hiện lại ở cuối của
đoạn mã lệnh để thiết lập lại các giá trị mặc định, nếu không sẽ làm khoá hoàn toàn chương
trình Excel.
Ví dụ sau minh hoạ cách tạm thời khoá tương tác ngườ


i dùng khi thực hiện các đoạn mã lệnh
mất nhiều thời gian:
Sub Khoa_nguoi_dung()
Dim cel As Range
' Chuyển con trỏ chuột thành biểu tượng chờ.
Application.Cursor = xlWait
' Tắt tương tác người dùng và việc cập nhật màn hình.
Application.Interactive = False
Application.ScreenUpdating = False
' Đoạn mã lệnh mô phỏng việc tính toán mất nhiều thời gian.
For Each cel In [a1:iv999]
cel.Select
Next
' Khôi phục lại trạng thái ban đầu.
Application.Interactive = True
Application.ScreenUpdating = True
Application.Cursor = xlDefault
[a1].Select
End Sub
Một lợi điểm nữa của việc gán thuộc tính ScreenUpdating bằng FALSE là việc đoạn mã lệnh sẽ
thực thi với tốc độ nhanh hơn vì Excel không cần phải cập nhật lại màn hình khi tiến hành chọn
từng ô trong vùng dữ liệu từ A1:IV999. Nhưng cần lưu ý phải khôi phục lại các giá trị mặc
định trước khi kết thúc mã lệnh.
GỢI Ý Gán thuộc tính ScreenUpdating bằng FALSE trong khi thực khi các đoạn mã lệnh
có liên quan đến việc hiển thị trên màn hình, chằng hạn như đổi màu nền cho vùng dữ
liệu… , sẽ làm tăng tốc độ thực thi của mã lệnh
7.1.3. Thao tác với cửa sổ
Đối tượng Application có tập đối tượng Windows cho phép mở, sắp xếp, thay đổi kích thước và
đóng các cửa sổ bên trong Excel. Chẳng hạn như đoạn mã sau tạo thêm một cửa sổ mới và sau
đó xếp chồng các cửa sổ bên trong workbook hiện hành:

C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G


I
I
V
V
:
:


L
L


P
P



T
T
R
R
Ì
Ì
N
N
H
H


T
T
R
R
Ê
Ê
N
N


M
M
I
I
C
C
R
R

O
O
S
S
O
O
F
F
T
T


E
E
X
X
C
C
E
E
L
L



149

Sub OpenCascadeWindows()
ActiveWindow.NewWindow
Application.Windows.Arrange xlArrangeStyleCascade, True

End Sub
Người lập trình có thể đóng, thay đổi trạng thái của cửa sổ sử dụng các phương thức và thuộc
tính có trong đối tượng Window. Ví dụ sau sẽ đóng cửa sổ đã được tạo ra ở ví dụ trước và khôi
phục lại trạng thái của cửa sổ ban đầu trong Excel:
Sub CloseMaximize()
ActiveWindow.Close ‘Đóng cửa sổ hiện hành
ActiveWindow.WindowState = xlMaximized
End Sub
Việc đóng cửa sổ cuối cùng của Workbook tương đương với việc đóng workbook đó.
CHÚ Ý Trong cùng một workbook có thể có nhiều cửa sổ con, tất cả các cửa sổ con đó
đều có nội dung giống nhau và đều là một thể hiện của workbook. Chi tiết, xem lại mục

Đối tượng Window
” trang 127.
Để điều khiển cửa sổ chính của Excel, sử dụng các thuộc tính WindowState và
DisplayFullScreen có trong đối tượng Application. Đoạn mã sau sẽ thực hiện thay đổi trạng
thái cửa sổ chính của Excel, giữa các thái thái sẽ có một thông báo:
Sub ChangeExcelWindowState()
Application.WindowState = xlMaximized ‘Phóng đại cửa sổ
MsgBox "Trang thai phong dai"
Application.WindowState = xlMinimized ‘Thu nhỏ cửa sổ
MsgBox "Trang thai thu nho"
Application.WindowState = xlNormal ‘Trạng thái thông thường
MsgBox "Trang thai thong thuong"
Application.DisplayFullScreen = True ‘Xem toàn màn hình
MsgBox "Trang thai toan man hinh"
Application.DisplayFullScreen = False ‘Trạng thái bình thường
MsgBox "Trang thai thong thuong"
End Sub
7.1.4. Khởi động Excel từ chương trình khác

Thông thường, khi sử dụng VBA trong Excel, chương trình Excel đã được khởi động sẵn và
người lập trình không cần quan tâm đến các thao tác để khởi động chương trình Excel. Tuy
nhiên, vẫn có những lúc cần khởi động chương trình Excel từ chương trình khác, chẳng hạn
như khi muốn xuất dữ liệu tính toán sang Excel chẳng hạn. Lúc đó, cần phải lập trình để khởi
động Excel, hay nói theo cách đơn giản h
ơn, là tạo đối tượng Application chứa ứng dụng Excel.
Để thực hiện được việc này, cần phải thực hiện các bước sau:
1. Tham chiếu đến với thư viện mở rộng của chương trình Excel.
2. Viết mã lệnh thực hiện việc khởi động chương trình Excel (tạo đối tượng Application của
Excel).
Dưới đây sẽ trình bày cách thức khởi động chương trình Excel từ VBA trong AutoCAD.
Tham
chiếuthưviệnmởrộngcủachươngtrìnhExcel
1. Khởi động chương trình AutoCAD Ö Khởi động VBAIDE trong AutoCAD bằng cách
nhấn tổ hợp phím ALT+F11.


150
2. Chọn trình đơn Tools Ö References… để hiển thị hộp thoại References dùng để tham
chiếu đến thư viện mở rộng.
3. Trong danh sách các thư viện có sẵn, chọn Microsoft Excel 11.0 Object Library Ö Chọn
OK. Như vậy là dự án VBA trong AutoCAD đã có tham chiếu đến thư viện mở rộng của
Excel, nghĩa là người lập trình có thể truy cập đến mô hình đối tượng của Excel ngay từ
bên trong VBA c
ủa AutoCAD

Hình IV-14: Hộp thoại References trong VBAIDE của AutoCAD.
CHÚ Ý Tuỳ từng phiên bản chương trình Excel đang được sử dụng mà tên của thư viện
mở rộng Excel có thể khác nhau.
ViếtmãlệnhkhởiđộngchươngtrìnhExcel

4. Trong VBAIDE của AutoCAD, chọn trình đơn Insert Ö Module để tạo mới một mô-đun
chuẩn.
5. Trong cửa sổ mã lệnh của mô-đun chuẩn, nhập đoạn mã lệnh dùng để khởi động chương
trình Excel như sau:
Sub ConnectToExcel()
Dim App As Excel.Application
On Error Resume Next
Set App = GetObject(, "Excel.Application")
‘ Kiểm tra xem Excel đã được khởi động chưa
‘ Nếu chưa sẽ tiến hành tạo đối tượng Application
If Err Then
Err.Clear
Set App = CreateObject("Excel.Application")
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G



I
I
V
V
:
:


L
L


P
P


T
T
R
R
Ì
Ì
N
N
H
H



T
T
R
R
Ê
Ê
N
N


M
M
I
I
C
C
R
R
O
O
S
S
O
O
F
F
T
T



E
E
X
X
C
C
E
E
L
L



151

‘Hiển thị cửa sổ chính của Excel
App.Visible = True
MsgBox "Now running " + App.Name + _
" version " + App.Version
‘====== Kết thúc việc khởi động chương trình Excel ======

‘Bắt đầu thực hiện các thao tác trong Excel
‘giống như khi thực hiện trong môi trường VBA của Excel
Dim WBook As Workbook, WSheet As Worksheet
Set WBook = App.Workbooks.Add
Set WSheet = WBook.Worksheets(1)
WSheet.Range("A1") = "Vi du ket noi voi Excel"
WBook.SaveAs "C:\Test.xls"
WBook.Close
Set WBook = Nothing

Set WSheet = Nothing
End Sub
6. Thực thi Macro: ConnectToExcel như trên, chương trình Excel sẽ được khởi động Ö Tạo
một Worksheet mới Ö Lưu thành tệp có tên
Test.xls nằm trong thư mục gốc của ổ đĩa
C:\ Ö Thoát khỏi chương trình Excel.
7.2. Làm việc với Workbook
7.2.1. Tạo mới, mở, lưu và đóng workbook
Tạomớiworkbook
Để tạo mới workbook, sử dụng phương thức Add có trong tập đối tượng Workbooks:
Dim wb As Workbook
Set wb = Application.Workbooks.Add
Mởworkbook
Để mở một workbook đã có, sử dụng phương thức Open có trong tập đối tượng Workbooks:
Dim wb As Workbook
Set wb = Application.Workbooks.Open("C:\MyBook.xls")
Nếu tham số tên tệp chỉ có tên mà không bao gồm đường dẫn, Excel sẽ tìm tệp đó trong thư
mục hiện hành. Nếu tệp không tồn tại thì sẽ làm phát sinh lỗi trong Excel.
Lưuworkbook
Để lưu workbook, sử dụng phương thức Save và SaveAs có trong đối tượng Workbook. Thư
mục mặc định để lưu trong Excel có thể được thiết lập thông qua thuộc tính DefaultFilePath
của đối tượng Application, thông thường thư mục mặc đị
nh là thư mục My Documents. Ví dụ
sau sẽ lưu workbook mới tạo vào thư mục My Documents với tên là NewWorkbook.xls:
ActiveWorkbook.SaveAs "NewWorkbook"
Phương thức SaveAs thích hợp khi lưu workbook lần đầu tiên, hoặc khi muốn lưu workbook
thành một workbook có tên khác. Còn phương thức Save sẽ lưu workbook và giữ nguyên tên
hiện tại của workbook.
Đóngworkbook



152
Để đóng workbook, sử dụng phương thức Close có trong đối tượng workbook. Phương thức
này không tự động lưu workbook, nhưng khi có sự thay đổi nào đó chưa lưu, Excel sẽ hiển thị
hộp thoại SaveChanges trước khi đóng workbook. Người lập trình có thể tắt hộp thoại này bằng
cách truyền thêm tham số vào cho phương thức thức Close:
ThisWorkbook.Close True
Đoạn mã sẽ lưu tất cả các thay đổi và sau đó đóng workbook hiện hành. Để đóng mà không lưu
những thay đổi của workbook, sử dụng đoạn mã sau:
ThisWorkbook.Close False
Để đóng tất cả các workbook, sử dụng phương thức Close có trong tập đối tượng Workbooks.
Tuy nhiên phương thức này không có tham số, vì vậy hộp thoại SaveChanges sẽ xuất hiện khi
có workbook nào đó chưa được lưu.
Sub TestCloseAll()
Workbooks.Close
End Sub
7.3. Làm việc với Worksheet
7.3.1. Tạo mới, xoá và đổi tên worksheet
Tạomớiworksheet
Để tạo mới Worksheet, sử dụng phương thức Add có trong tập đối tượng Worksheets hoặc tập
đối tượng Sheets.
Sub Tao_moi_worksheet()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
‘Thêm một worksheet vào trước worksheet hiện hành
Set ws1 = Worksheets.Add
‘Thêm một worksheet khác vào sau sheet cuối cùng của workbook
Set ws2 = Sheets.Add(After:=Sheets(Sheets.Count), Type:=xlWorksheet)
End Sub
Do tập đối tượng Sheets bao gồm nhiều loại sheet khác nhau nên khi thêm worksheet sử dụng

phương thức Add có trong tập đối tượng Sheets, cần phải xác định rõ loại sheet sẽ được thêm
vào.
Xoáworksheet
Để xoá worksheet, sử dụng phương thức Delete có trong đối tượng worksheet. Ví dụ sau sẽ xoá
worksheet có tên là Sheet1.
Sub Xoa_worksheet()
Dim mySheet As Worksheet
Set mySheet = Worksheets("Sheet1")
Application.DisplayAlerts = False
mySheet.Delete
Application.DisplayAlerts = True
End Sub
Khi sử dụng phương thức Delete để xoá worksheet, Excel sẽ hiển thị hộp thông báo để xác
nhận thao tác xoá worksheet. Vì vậy, khi đã chắc chắn xoá worksheet phải tắt hết tất cả các

×