SỐ 121
HỒ LÔ BIẾN

Dùng VBA để "chộp" màn hình
ĐÀM MINH KHÔI

Người dùng Word có kinh nghiệm lập trình thường dựa vào VBA (Visual Basic for Application) để tạo ra công cụ mới dưới dạng những vĩ lệnh (macro), sau đó dùng vĩ lệnh ấy thông qua một nút bấm trên thanh công cụ hoặc mục chọn trên trình đơn hoặc một phím tắt (shortcut key). Xin giới thiệu với bạn cách dùng VBA để tự động "chộp" màn hình (screen capture), không cần "ra tay" nhấn phím PrintScreen. Bạn có thể ứng dụng ý tưởng này trong các vĩ lệnh lớn hơn, khi cần tự động hóa một loạt thao tác "chộp" màn hình, đưa vào tài liệu nào đấy (rất đắc dụng khi... viết bài để gửi e-CHÍP).

Sử dụng hàm SendKeys

Khi muốn ra lệnh cho VBA “nhấn phím nào đấy” thay vì tự tay nhấn phím trên bàn phím, ta dùng hàm Sendkeys của WordBasic. Ví dụ, SendKeys “A” tương ứng với việc nhấn phím A trên bàn phím; SendKeys “{TAB}” tương ứng với việc nhấn phím TAB trên bàn phím. Để nhấn phím PrintScreen, ta dùng SendKeys "{prtsc}" hoặc SendKeys "{1068}". Mã 1068 có hiệu lực với mọi phiên bản ngôn ngữ (Anh, Đức, Trung Quốc,...) của Word.

Để thử nghiệm, trong Word, bạn hãy chọn Tools > Macro > Macros... để mở hộp thoại Macros. Trên hộp thoại này, bạn gõ tên vĩ lệnh cần tạo, ChomManHinh chẳng hạn, vào ô Macro name, chọn nút Create để mở cửa sổ soạn thảo Microsoft Visual Basic và gõ đoạn mã sau:

Sub ChomManHinh()
  WordBasic.SendKeys "{1068}"
End Sub

Muốn kiểm tra vĩ lệnh ChomManHinh, xem có hiệu quả không, bạn cần gán nó cho một phím tắt, ví dụ Ctrl+Alt+F12. Bạn hãy chọn mục Tools > Customize... để mở hộp thoại Customize. Trên hộp thoại này, bạn bấm nút Keyboard... để mở hộp thoại Customize keyboard. Trong danh sách Categories, chọn mục Macros rồi chọn tên ChomManHinh bên danh sách Macros. Sau đó, bấm vào ô Press new shortcut key, nhấn tổ hợp phím Ctrl+Alt+F12. Cuối cùng, bấm nút Assign và các nút Close để đóng các hộp thoại. Từ lúc này, khi nhấn tổ hợp phím Ctrl+Alt+F12 trong Word, bạn sẽ chôm được nội dung màn hình đang thấy.

Sử dụng các hàm API

Thay vì dùng hàm WordBasic.sendKeys, bạn có thể dùng hàm API keybd_event (đoạn mã 1). Với hàm này, bạn còn có thể "chộp" hình ảnh cửa sổ hiện hành, thay cho việc bấm tổ hợp phím Alt + PrintScreen (đoạn mã 2).

Đoạn mã 1
Option Explicit

Private Declare Sub keybd_event Lib "user32" (ByVal _
bVk As Byte, ByVal bScan As Byte, ByVal dwFlags _
As Long, ByVal dwExtraInfo As Long)

Private Const VK_SNAPSHOT = &H2C

Sub ChomManHinh()
keybd_event VK_SNAPSHOT, 1, 0, 0
End Sub

Đoạn mã 2
Option Explicit

Private Declare Sub keybd_event Lib "user32" (ByVal _
bVk As Byte, ByVal bScan As Byte, ByVal dwFlags _
As Long, ByVal dwExtraInfo As Long)

Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12

Sub ChomCuaSo()
keybd_event VK_MENU, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
End Sub

Cách kiểm tra hai thủ tục ChomManHinhChomCuaSo cũng được thực hiện tương tự trường hợp sử dụng hàm SendKeys nêu trên. Ngoài ra, để kiểm tra thủ tục ChomCuaSo, bạn có thể mở thêm vài tài liệu khác song song với tài liệu bạn đang soạn thảo để có nhiều cửa sổ đang mở, rồi chọn Window > Arrange All để các cửa sổ hiện ra cùng lúc. Bạn sẽ thấy rõ thủ tục ChomCuaSo chỉ "chộp" cửa sổ hiện hành mà thôi.

[Đầ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