Thay đổi bảng gõ tắt
Nguyễn Phương Thảo. fthaoabc@yahoo.com
Khi các chương trình văn phòng của Microsoft có nhiều người dùng chung thì bảng gõ tắt AutoCorrect rất thuận lợi cho người này nhưng nhiều khi sẽ gây ra phiền toái cho người khác, vì mỗi người có thể có quy định gõ tắt riêng. Gõ tắt của người này có thể sẽ ảnh hưởng tới người kia. Các quy định gõ tắt trong OFFICE đều được lưu cất vào các tệp có đuôi *.ACL trong thư mục WINDOWS. Các quy định gõ tắt này dùng chung cho toàn bộ các chương trình OFFICE như Word, EXcel, Power Point, Acces. Đặc điểm của gõ tắt AutoCorrect là nó cho phép gõ tắt cả những đoạn FORMAT. (Điều này các bộ gõ Vietspell, ABC và VietKey.... đều không thực hiện được).
Muốn đặt Gõ tắt bạn vào Tools/AutoCorrect: Đánh tên ngăn gõ tắt vào hộp Replace, đánh giá trị của ngăn vào hộp With. Sau đó Add để nạp vào tệp lưu gõ tắt. Trường hợp muốn đặt một đoạn gõ tắt đã Format, thì phải bôi đen (lựa chọn) đoạn văn bản đó, rồi vào hộp thoại này đặt tên ngăn, rồi chọn sang Formated Text. Khi soạn thảo, bạn đánh tên ngăn xong sẽ tự thay bằng đoạn đã đặt có Format.
Microsoft có một số chương trình mẫu rất hay nhưng họ viết quá rời rạc và rải rác trong các tệp Help, điều này gây khó khăn cho chúng ta. Tôi đã dịch toàn bộ ra tiếng Việt, tổng hợp lại và xây dựng thành chương trình để các bạn tham khảo. Ngoài ra tôi có bổ sung thêm một số chức năng khác để tiện sử dụng. Trong đó có chương trình thay đổi bảng gõ tắt. Mỗi người sẽ tạo một bảng gõ tắt riêng cho từng mục đích khác nhau. Khi cần gõ tắt theo bảng nào ta có thể thực hiện đổi bảng gõ tắt khác. (Chương trình mẫu được viết cho môi trường Visual Basic For Application trong Winword)
Đầu tiên trong Winword, bạn hãy khởi động vào Visual Basic. Có nhiều cách như gõ Alt + F11, rồi gõ Ctrl + R để hiện cây Project Explore. Ta tạo các chương trình vào tệp Normal.dot thì click vào tệp NORMAL. Thực hiện chèn một Form và thiết đặt các thuộc tính như sau: (Thiết lập thuộc tính bằng cách cho hiện bảng thuộc tính Click vào nút Properties và đánh vào giá trị của thuộc tính)
Tên Form: GOTAT
Gotat.Caption =”Sử dụng gõ tắt Autocorrect theo ý muốn”

Trong Form Gotat thêm một hộp label1.
Label1. Caption =”Chương trình sẽ cho phép bạn cất những nội dung của AutoCorrect hiện tại vào một tệp. Chọn nút Cất để tạo tệp cơ sở dữ liệu gõ tắt đó, nhớ đặt tên riêng để tiện sử dụng. Chọn nút Đổi Gõ Tắt để thay tệp gõ tắt hiện tại bằng tệp Cơ sở dữ liệu gõ tắt có trên đĩa. Chọn nút xoá gõ tắt để bỏ toàn bộ bảng gõ tắt hiện tại.”
Trong Form Gotat thêm 4 nút lệnh
· Nút btnBackup dùng để ghi những thiết lập gõ tắt AutoCorrect hiện tại vào một
tệp btnBackup.Caption =”Cất gõ tắt vào tệp”
· Nút btnRestore dùng để thay gõ
tắt từ một tệp vào bảng AutoCorrect.
btnRestore.Caption =”Đổi gõ tắt từ tệp”
· Nút btnClear dùng để xoá toàn
bộ thiết lập gõ tắt AutoCorrect.
btnClear.Caption=”Xoá gõ tắt”
· Nút btnClose dùng để đóng Form
Gotat
btnClose.Caption=”Đóng”
Sau đó chèn một Module (Click Insert, Click Module) đánh vào các dòng
Option Explicit
‘ START LOCALIZATION’
Const StatMsg1 = “Thêm nội dung AutoCorrect thứ: “
Const StatMsg2 = “ trên tổng số “
Const StatMsg3 = “Đang Format...”
Const StatMsg4 = “Đang cất...”
Const TagText = “Tệp CSDL AutoCorrect - Tin học ABC - 029 854 134”
Const TinABC = “Có thể thêm gõ tắt theo bảng, đừng thay đổi tiêu đề máy sẽ từ
chối thực hiện.”
Const szAppName = “Thay đổi tệp gõ tắt”
Const szErrorMsg = “Có một lỗi. Bạn có muốn thử lại không?”
Const szACEntriesErrorMsg = “Đã có một lỗi. Tệp văn bản không phải tệp Format
chuẩn.”
Const szWarnMsg = “Chương trình sẽ thay thế nội dung của AutoCorrect hiện tại
bằng nội dung gõ tắt của tệp cơ sở dữ liệu mới. Bạn có muốn tiếp tục nữa không?”
Const szFormatIncorrect = “Văn bản này không phải tệp gõ tắt AutoCorrect, xin
đóng lại và đổi tệp khác.”
Const szRestoreCompletemsg = “Đã tiến hành thay gõ tắt xong. Bạn có thể sử dụng
theo gõ tắt mới.”
Const Thongbaoxoa =“Tin học ABC đã tiến hành điều khiển Word xoá xong bảng gõ
tắt hiện tại. Nếu bạn cần gõ tắt xin tạo tệp gõ tắt rồi chọn chức năng “”Đổi gõ
tắt từ tệp””.”
Const ABC ="Tin học ABC - 029 854 134"
END LOCALIZATION’
Sub DoiGoTat()
Gotat.Show
End Sub
‘*********** btnBackup_Click() ******************
’
’ Giấu Form, tạo một văn bản mới, gọi thực hiện GetAutoCorrectEntries(),
’ thêm vào đoạn “Tệp CSDL AutoCorrect” tại đầu văn bản,
’ và cất văn bản với tên gọi SaveACDoc.’
’ Sử dụng biến giá trị y nhưng không làm việc gì cả.
Private Sub btnBackup_Click()
Dim Y As Integer
GoTat.Hide
Application.ScreenUpdating = False
’Tạo tệp văn bản mới
Application.Documents.Add
‘ gọi GetAutoCorrectEntries() mà
người sử dụng vừa định nghĩa
Y = GetAutoCorrectEntries()
’ thêm tiêu đề vào đầu văn bản
With Selection
.SplitTable
.TypeText Text:=TagText + Chr(13) + TinABC
.TypeParagraph
End With
’thêm format
With ActiveDocument.Sentences(1)
.Bold = True
.Font.Size = 14
End With
’ Cất văn bản, gọi SaveACDoc() mà
người sử dụng đã định nghĩa, và đóng lại nếu thành công
Application.StatusBar = StatMsg4
If SaveACDoc = True Then
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
End If
Application.ScreenUpdating = True
GoTat.Show
End Sub
Private Sub btnClose_Click()
GoTat.Hide
End Sub
’************* btnRestore_Click() **************
’ Thông báo đầu tiên sẽ thay thế
nội dung hiện tại của AutoCorrect
‘ Nếu họ trả lời không, thì kết thúc thực hiện công việc. Tiếp đến hộp thoại
FileOpen để nhận
‘ tên tệp CSDL gõ tắt đã định nghĩa (Tạo bởi nút Cất Gõ tắt vào tệp)
‘ Tiếp theo gọi OpenACDoc() để mở tệp. Nếu thành công sẽ gọi RestoreACEntries().
Cuối cùng đóng văn bản lại
Private Sub btnRestore_Click()
Dim ACFileName, Title As String
Dim Style, Response, x As Integer
GoTat.Hide
’ Thông báo sẽ thay nội dung...
Style = vbYesNo + vbInformation + vbDefaultButton2 ‘ Define buttons.
Title = szAppName
Response = MsgBox(szWarnMsg, Style, Title)
If Response = vbNo Then
‘exit
GoTo bye:
End If
’ Nhận têp tệp gõ tắt...
With Dialogs(wdDialogFileOpen)
.Display
ACFileName = .Name
End With
‘ Mở tệp CSDL, gọi OpenACDoc() đã
định nghĩa
If OpenACDoc(ACFileName) = True Then
‘ Hiện nội dung , gọi hàm hiện đã
được định nghĩa để lấy
x = RestoreACEntries()
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
End If
bye:
GoTat.Show
End Sub
Function RestoreACEntries()
Dim i, NumRows As Integer
Dim oDoc, oACorrect, oTable As Object
Dim szName As String
Dim szValue As String
Dim szRTF As String
Err.Clear
On Error GoTo RestoreACEntriesErrors:
‘ Kiểm tra Format
IF Document.Words(1) = “Tệp “ Then
Application.ScreenUpdating = False
Set oDoc = ActiveDocument
Set oTable = oDoc.Tables(1)
Set oACorrect = Application.Autocorrect.Entries
NumRows = ActiveDocument.Tables(1).Rows.Count
Selection.GoTo What:=wdGoToTable, Which:=wdGoToFirst
Selection.MoveRight Unit:=wdCell, Count:=3
For i = 2 To NumRows
szName = Selection.Text
Selection.MoveRight Unit:=wdCell
szValue = Selection.Text
Selection.MoveRight Unit:=wdCell
szRTF = Selection.Text
If szRTF = “False” Then
Application.StatusBar = StatMsg1 & szName
oACorrect.Add Name:=szName, Value:=szValue
Else
Application.StatusBar = StatMsg1 & szName
Selection.MoveLeft Unit:=wdCell
oACorrect.AddRichText szName, Selection.Range
Selection.MoveRight Unit:=wdCell
End If
Selection.MoveRight Unit:=wdCell
Next i
Application.ScreenUpdating = True
MsgBox szRestoreCompletemsg, , ABC
Else
MsgBox szFormatIncorrect, , ABC
End If
RestoreACEntriesErrors:
Select Case Err.Number
Case 0:
‘ Không lỗi
Case Else
MsgBox (szACEntriesErrorMsg & vbCr & Err.Number & “ “ & Err.Description & “ “ &
szName), , ABC
End Select
End Function
’****** GetAutoCorrectEntries() ******
’ Thêm mỗi ngăn AutoCorrect vào
tệp CSDL với tên ngăn và giá trị và Format
‘Tên ngăn là phần gõ vào, giá trị là phần nhận được
‘ và RTF là giá trị logic sẽ là True nếu giá trị được Format bởi hộp Formatted
Text Sau đó con vớt văn bản vào bảng và thêm tiêu đề ở đầu và cuối bảng
‘ Biến X để lặp lại nếu còn các ngăn gõ tắt Autocorrect
‘TotalACEntries là tổng số ngăn gõ tắt
Private Function GetAutoCorrectEntries()
Dim x As Integer
Dim TotalACEntries As Integer
TotalACEntries = Application.Autocorrect.Entries.Count
For x = 1 To TotalACEntries
With Selection
.TypeText Text:=Application.Autocorrect.Entries.Item(x).Name
.TypeText vbTab
‘Kiểm tra formatting và chèn chữ
RTF nếu cần thiết
If Application.Autocorrect.Entries.Item(x).RichText = True Then
Application.Autocorrect.Entries(x).Apply Range:=Selection.Range
Else
.TypeText Text:=Application.Autocorrect.Entries.Item(x).Value
End If
.TypeText vbTab
.TypeText Text:=Application.Autocorrect.Entries.Item(x).RichText
.TypeParagraph
End With
‘thông báo ở thanh trạng thái
Application.StatusBar = StatMsg1 & x & StatMsg2 & TotalACEntries
Next x
’ convert thành một bảng
Application.StatusBar = StatMsg3
Selection.HomeKey Unit:=wdStory, Extend:=wdExtend
Selection.ConvertToTable Separator:=wdSeparateByTabs,
Format:=wdTableFormatSimple1, _
ApplyBorders:false, ApplyShading:false, ApplyFont:false, ApplyColor:false, _
ApplyHeadingRows:false, ApplyLastRow:false, ApplyFirstColumn:false,
ApplyLastColumn:false, _
AutoFit:=True
’ Thêm tiêu đề bảng
With Selection
.MoveUp Unit:=wdLine, Count:=1
.InsertRows 1
.TypeText Text:=”Tên”
.MoveRight Unit:=wdCell
.TypeText Text:=”Giá trị”
.MoveRight Unit:=wdCell
.TypeText Text:=”RTF”
.HomeKey Unit:=wdStory
End With
‘Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext
‘Selection.InsertBreak Type:=wdPageBreak
End Function
Public Function SaveACDoc()
Dim Style, Response As Integer
Dim Title As String
SaveACDoc = True
Err.Clear
On Error GoTo SaveACDocErrors
ActiveDocument.Save
SaveACDocErrors:
Select Case Err.Number
Case 0:
‘ không có lỗi
Case 4198:
‘ thôi
SaveACDoc = False
Case Else
Style = vbYesNo + vbCritical + vbDefaultButton2 ‘ Định nghiã nút
’Đặt số lỗi và mô tả lên tiêu đề
của hộp thoại
Title = Err.Number & “ “ & Err.Description
Response = MsgBox(szErrorMsg, Style, Title)
If Response = vbYes Then
Resume ‘hiện lại SaveAs
Else ‘ người dùng chọn No.
SaveACDoc = False
End If
End Select
End Function
Public Function OpenACDoc(ByVal ACFileOpenName As String) As Boolean
Dim Style As Integer
OpenACDoc = True
Err.Clear
On Error GoTo OpenACDocErrors
Documents.Open FileName:¬FileOpenName
OpenACDocErrors:
If Err.Number <> 0 Then
OpenACDoc = False
End If
End Function
Private Sub btnClear_Click()
Dim anEntry
Dim MyConfirm
GoTat.Hide
MyConfirm = MsgBox(“Bạn có muốn xoá bỏ bảng AutoCorrect hiện tại không? “,
vbOKCancel + vbQuestion + vbDefaultButton2, ABC)
If MyConfirm = vbOK Then
For Each anEntry In Application.Autocorrect.Entries
anEntry.Delete
Next
MsgBox thongbaoxoa, vbInformation, ABC
End If
GoTat.Show
End Sub
Ta có thể gán Macro cho tổ hợp phím, nút lệnh hoặc Menu.
Chạy thử bằng cách chọn Tools\Macro và chọn tệp DOIGOTAT, chương trình sẽ thực hiện Form cho phép ta cất, đổi, xoá gõ tắt.
PcLeHoan
1996 - 2002
Mirror :
http://www.pclehoan.com
Mirror :
http://www.lehoanpc.net
Mirror :
http://www.ktlehoan.com