Tải bản đầy đủ (.doc) (2 trang)

Ghi nhật ký in tự động vào một tệp ppsx

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 (64.66 KB, 2 trang )

Ghi nhật ký in tự động vào một tệp
Nguyễn Phương Thảo 525 - Đường Điện Biên - TX. Yên Bái. Mailto:

Trên thực tế có rất nhiều việc phải ghi nhật ký. Ghi nhật ký in, tự động là một ví
dụ. Khi ghi nhật ký rồi ta có thể theo dõi kiểm soát toàn bộ quá trình in để có thể
xác định được lượng in mà có các biện pháp dự trù kế hoạch và nhiều vấn đề khác.
Nếu máy của bạn cài Visual Basic, bạn có thể thiết lập một lệnh nội trú âm
thầm, trong một lớp Class, tạo một lệnh riêng để phục bắt các hàm:
Declare Function PrintDlg Lib "comdlg32.dll" Alias "PrintDlgA" (pPrintdlg As
PRINTDLG) As Long
Declare Function AbortPrinter Lib "winspool.drv" Alias "AbortPrinter" (ByVal
hPrinter As Long) As Long
Declare Function WritePrinter Lib "winspool.drv" Alias "WritePrinter" (ByVal
hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pcWritten As Long) As
Long
(Bạn có thể liên hệ với tôi để có bản gốc phần lập trình này).
Tuy nhiên không phải máy nào cũng có cài Visual Basic, nên tôi xin giới thiệu
cách xây dựng hàm mới ngay chính trong VBA (Visual Basic For Application),
một cách làm mà ở bất cứ môi trường Microsoft Office nào cũng có thể thực hiện
được. Tôi lấy ví dụ thiết lập thủ tục cho Winword, môi trường nhiều người sử dụng
nhất, bạn có thể thiết lập ở các môi trường khác có in và hỗ trợ VBA như EXCEL,
ACCESS, POWER POINT thậm chí cả ACAD, bằng cách tương tự.
Từ Winword có nhiều cách để vào Visual Basic, tôi chọn nhấn Alt+F11, rồi
nhấn Ctrl +R để hiện Project Explore. Có thể đánh vào bất cứ module nào trong tệp
Normal.DOT nếu chưa có, ta có thể Insert\Module để đánh đoạn mã Visual Basic
sau:
Sub KiemtraIn()
Dim soban As String, ngayin As String, gioin As String, trangin As String
Dim tong As String, tentep As String, TH
Static hien As Boolean
Set hopin = Dialogs(wdDialogFilePrint)


'Tổng số trang trong văn bản là
tong = Str(Selection.Information(wdNumberOfPagesInDocument))
'Tên tệp là
tentep = ActiveDocument.FullName
If Left(tentep, 5) = "C:\My" Then
'Nếu tệp đặt ở My Document thì không cần nói rõ
tentep = Mid(tentep, 17, Len(tentep) - 20)
End If
TH = hopin.Show
If TH = -1 Then
soban = Str(hopin.NumCopies)
Select Case hopin.Range
Case 0
trangin = "In toàn bộ " + tong + " trang"
Case 2
trangin = "In trang hiện tại"
Case 4
trangin = " In rời trang " + hopin.Pages
Case Else
trangin = "Không rõ"
End Select
ngayin = Str(Date)
gioin = Str(Time)
ThongBao = trangin + " X " + soban + " bản của tệp [" + tentep + "] lúc " + gioin +
ngayin
'Mở tệp nhật ký in trong thư mục NC để ghi
Open "C:\NC\Nhatkyin.vns" For Append As #1
Print #1, ThongBao
Close #1
Else

ThongBao = "thủ tiêu in."
End If
If Not (hien) Then
'Thông báo số trang in bằng hộp thoại cho ngưười sử dụng
TraLoi = MsgBox("Bạn đã " + ThongBao + Chr(13) + "Quá trình in đã được ghi
vào Nhật ký. Nếu không muốn hiện thông báo này xin chọn nút Cancel.",
vbInformation + vbDefaultButton2 + vbOKCancel, "Tin học ABC - 029 854 134")
If TraLoi = vbCancel Then
hien = True
End If
End If
End Sub
Sau khi đã thiết lập xong hàm trên, bạn hãy sử dụng Tools\Customize để thủ tục
này thay thế nút Print trên thanh công cụ, thay thế thực đơn File\Print , thay thế tổ
hợp phím Ctrl +P. Xin xem bài cách đặt các Macro vào thanh công cụ, thực đơn,
và tổ hợp phím trên PCWorld. (Tôi sử dụng một cách làm tự động để thay các nút
như là Virus Macro vậy, vấn đề này xin đề cập ở bài viết sau).
Để tạo một ShortCut kiểm tra việc in ấn, ta tạo một tệp Xem.BAT bằng một
chương trình TEXT nào đó ví dụ NOTEPAD (Cất ở TEXT ONLY), nội dung như
sau:
C:\tbk.COM
wpview.EXE %1
c:\TBK/u
Phải sao tệp thường trú TBK.COM của nhóm Quách Tuấn Ngọc ra thư mục gốc
ổ C. (Tuy nhiên, bạn có thể sử dụng một chương trình thường trú khác có trùng mã
với phần lập trình trên, ví dụ VIETRES). Còn tệp WPVIEW.EXE có sẵn trong thư
mục của NC.

×