Những thủ thuật trong OFFICE (5)
Tại sao bạn không dùng Spike trong Winword?
Nguyễn Phương Thảo - 525 - Điện Biên - TX. Yên Bái
Spike là một khái niệm đã cũ, ít người biết. Nó có từ thời Winword 6.0 nhưng chẳng ai chú ý đến nó, nên nhiều khi ta không ngờ nó đang tồn tại. Các tài liệu phổ cập Tin học thường bỏ quên chức năng của nó. Bài viết này xin giới thiệu công dụng cũng như cách sử dụng Spike.
Nếu bạn là một biên tập viên sử dụng Winword để biên tập cho một tờ báo, Spike sẽ rất có ích đối với bạn. Spike là một vùng nằm trên đĩa, bạn có thể đưa bất cứ thứ gì bạn lượm lặt vào trong nó. Nó sẽ xếp lần lượt theo thứ tự những phần bạn đã đưa vào, để đến khi cần, bạn chèn toàn bộ những gì trong đó ra. Nó không giống Clipboard, vì Clipboard nếu đưa thứ mới vào, thứ cũ sẽ mất. (Riêng OFF 2000 cho phép đặt tạm thời vào các ngăn Clipboard, để có thể chọn ngăn mà chèn ra). Những thứ đưa vào Spike sẽ tồn tại ngay cả khi bạn tắt máy, đến các phiên làm việc sau vẫn có thể chèn ra được. Nó chỉ bị xoá khi bạn ra lệnh xoá Spike.
Spike là cuốn sổ nháp của bạn, có thể ghi hỗn độn mọi thứ. Microsoft đã âm thầm hỗ trợ Spike từ lâu rồi, nhưng có thể bạn không biết hoặc chưa từng được nghe ai nói đến.
Để kiểm tra xem máy của bạn đã hỗ trợ Spike chưa, bạn hãy sử dụng các tổ hợp gõ tắt ngầm định về Spike như sau:
1. Lựa chọn (Bôi đen) đoạn cần
đưa vào Spike. Nhấn Ctrl+F3.
2. Muốn chèn toàn bộ những gì trong Spike ra, rồi xoá Spike. Đặt trỏ tại vị trí
cần chèn, nhấn Ctrl+Shift +F3.
3. Muốn chèn toàn bộ những gì trong Spike ra, nhưng không xoá Spike. Đánh chữ
Spike, nhấn F3. (Từ tính chất này, bạn có thể suy ngay ra chính Spike là đoạn
AutoText đặc biệt của Winword).
Còn nếu máy của bạn không hỗ trợ Spike, bạn có thể copy đoạn mã sau vào một Module lập trình của Winword để có thể sử dụng nó. Các Macro, xin gán vào tổ hợp phím để tiện sử dụng. (Xem các cách gán vào tổ hợp phím trên các bài viết trước). Bạn nên dịch ra bộ mã ký tự trùng với Font hệ thống của bạn để hộp thoại giao tiếp của bạn hiện tiếng Việt.
_________________
' Định nghĩa các biến, hàm dùng chung
Public Response As Variant
Public wantnewspike As Variant
'
' Các lời nhắc
'
Public Const SpikeCleared As String = "Nội dung trong Spike đã bị xoá..."
Public Const Title As String = "Chương trình Spike"
Public Const Spike As String = "Spike"
Public Const NoSpike As String = "Không có Spike trong khuôn mẫu hiện tại "
Public Const SpikeCreated As String = "Nội dung Spike đã được tạo trong chế độ
Normal cho bạn..."
Public Const NewSpikeCreated As String = "Nội dung Spike đã không tồn tại trong
Templete hiện tại nhưng nó có thể được tạo."
Public Const SpikeInserted As String = "Nội dung trong Spike đã được chèn tại vị
trí được chọn..."
Public Const NoDoc As String = "Không có văn bản nào đang mở để chèn Spike. Bạn
có muốn mở một văn bản trắng mới để chèn Spike không?"
Public Const NoSpikeQuestion As String = "Không có nội dung Spike trong template
hiện tại. Bạn có muốn tạo mới không?"
Public Const NeedaDoc As String = "cần mở văn bản để chèn được Spike."
Public Const SelectSomeText As String = "Bạn phải bôi đen phần được chọn mới đưa
vào được Spike"
Public Const SelectionAdded As String = "Phần chọn đã được thêm vào trong
spike..."
Public Const GeneralError As String = "Có lỗi trong thực hiện xin thử lại..."
Public Const ThanOi As String = "Ôi! Bạn ơi! Trong Spike chẳng còn gì để mà chèn
cả. Bạn hãy bôi đen rồi chọn chức năng Nối thêm vào Spike."
Public Const KhoThan As String = "Khổ thân bạn quá!"
'___________________________
Sub XoaSpike()
'XoáSpike()
StatusBar = Title
Set normaldot = Application.NormalTemplate
For Each entry In normaldot.AutoTextEntries
If entry.Name = Spike Then GoTo present
Next entry
'Nếu không có văn bản nào mở...
If Application.Documents.Count = 0 Then
'Hỏi có tạo mới không
wantnewspike = MsgBox(NoSpikeQuestion, 36, Title)
If wantnewspike = vbYes Then
Response = MsgBox(NoDoc, 36, Title)
If Response = vbYes Then Application.Documents.Add
If Response = vbNo Then Exit Sub
normaldot.AutoTextEntries.Add Name:=Spike, Range:=Selection.Range
MsgBox SpikeCreated, vbInformation, Title
MsgBox SpikeCleared, vbInformation, Title
Exit Sub
If wantnewspike = vbNo Then Exit Sub
End If
End If
Selection.HomeKey Unit:=wdStory
normaldot.AutoTextEntries.Add Name:=Spike, Range:=Selection.Range
MsgBox NewSpikeCreated, vbInformation, Title
Exit Sub
present:
'Đặt nội dung của AutoText Spike về rỗng...
normaldot.AutoTextEntries.Item(Spike).Value = ""
MsgBox SpikeCleared, vbInformation, Title
End Sub
'____________________
Sub ThemVaoSpike()
'Thêm Phần Chọn Vào Spike
StatusBar = Title
On Error GoTo handler
Set normaldot = Application.NormalTemplate
If Application.Documents.Count = 0 Then
MsgBox NeedaDoc, vbInformation, Title
Exit Sub
End If
For Each entry In normaldot.AutoTextEntries
If entry.Name = Spike Then GoTo present
Next entry
If Selection.Range = "" Then
MsgBox SelectSomeText, vbInformation, Title
Exit Sub
End If
normaldot.AutoTextEntries.Add Name:=Spike, Range:=Selection.Range
MsgBox NewSpikeCreated, vbInformation, Title
StatusBar = SelectionAdded$
Exit Sub
present:
If Selection.Range = "" Then
MsgBox SelectSomeText$, vbInformation, Title
Exit Sub
End If
With normaldot.AutoTextEntries
. AppendToSpike Range:=Selection.Range
End With
StatusBar = SelectionAdded
ActiveDocument.Undo
Exit Sub
handler:
MsgBox GeneralError, vbCritical, Title
End Sub
'___________________
Sub ChenSpikeRa ()
'Chèn Từ Spike Ra
StatusBar = Title
On Error GoTo handler
Set normaldot = Application.NormalTemplate
For Each entry In normaldot.AutoTextEntries
If entry.Name = Spike Then GoTo present
Next entry
MsgBox NoSpike, vbInformation, Title
Exit Sub
present:
If Application.Documents.Count = 0 Then
Response = MsgBox(NoDoc, 36, Title)
If Response = vbYes Then Documents.Add
If Response = vbNo Then Exit Sub
End If
With normaldot.AutoTextEntries.Item(Spike)
. Insert where:=Selection.Range, RichText:=True
If normaldot.AutoTextEntries.Item(Spike) = "" Then
MsgBox ThanOi, vbInformation, KhoThan
End If
End With
StatusBar = SpikeInserted
Exit Sub
handler:
MsgBox GeneralError, vbCritical, Title
End Sub
'_______________________
Sub XemSpike()
'XemNộiDungSpike
' Đặt trạng thái ghi tiêu đề
StatusBar = Title
Set normaldot = Application.NormalTemplate
'Kiểm tra xem có ngăn tên là Spike trong AutoText không
For Each entry In normaldot.AutoTextEntries
If entry.Name = Spike Then GoTo present
'Nếu thấy, hiển thị Form và nội dung...
Next entry
'Không thấy thông báo...
MsgBox NoSpike, vbInformation, Title
Exit Sub
present:
'Tải Form để hiển thị
Load frmpreview
frmpreview.Show
End Sub
Để xem nội dung Spike, bạn cần tạo một Form có một hộp RichTextBox để chứa Spike. Chèn Form Preview thiết lập tối thiểu như phần mẫu.

* Tên Form: frmpreview
* frmpreview.Caption = "Nội dung hiện tại của Spike"
* Một hộp Lable có thuộc tính Caption ="Hộp nội dung này chứa 256 ký tự đầu
tiên..."
* TextBox1 bỏ trống.
* Ngoài ra bạn có thể thiết lập các thuộc tính khác trang trí cho đẹp.
* Một nút lệnh btnClose.Caption ="Đóng"
Bạn Dclick vào Form để viết thủ tục sau:
Option Explicit
Private Sub btnClose_Click()
Unload Me
End Sub
Sub UserForm_Initialize()
TextBox1.WordWrap = True
TextBox1.MultiLine = True
TextBox1.Text = Application.NormalTemplate.AutoTextEntries.Item("Spike")
End Sub
Hi vọng là bạn sẽ làm được. Nếu bạn đánh không chính xác xin vào địa chỉ http://www.tlnet.com.vn/weblh/andi/ndc.htm để sao chép code được chính xác.
PcLeHoan
1996 - 2002
Mirror :
http://www.pclehoan.com
Mirror :
http://www.lehoanpc.net
Mirror :
http://www.ktlehoan.com