Tra từ bamboo với Word và Excel

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Cũng nghịch ngợm chút ít, thực ra là bắt đầu từ cái phần mềm gửi SMS bằng VB và VBA của mình, chợt nghĩ đến tại sao không làm một tiện ích tra từ ngay trong word với bamboo tra từ nhỉ. Ngoài ra cũng phải nhờ cái công cụ Bamboo cho firefox.
Cách tiếp cận thế này:
1. Chọn được từ cần tra.
2. Kết nối được với máy chủ của Bamboo
3. Gửi tham số tra từ tới máy chủ
Tham số có dạng
https://tratu.baamboo.com/dispatchaddon.php?dict=[Tên từ điển]&title=[Từ cần tra]&ver=0.9.14. và nhận kết quả, thể hiện qua một điều khiển Browser là xong.
Mình gửi tặng các bạn tập tin ví dụ với word nhé, Excel thì tương tự thôi.
Tuy nhiên cần lưu ý:
+ Trong VBA project, phải tham chiếu đến Microsoft Html Object library.
+ Đặt một nút bấm chẳng hạn Dictionary trong word và link đến wordlookup.
Caption của nút nên là Ditionar&y (để sau này chỉ cần nhấn Alt+Y là có kết quả).
Cách tra đơn giản, chọn một từ cần tra (nhấn đúp chuột lên từ đó), nhấn Alt+Y hoặc nhấn nút Dictionary vừa tạo là được. Kết quả sẽ tự hiển thị ra.
+ Tham số tra từ ở mục từ điển tương ứng như sau:
en_vn=Anh-Việt
vn_en=Việt-Anh
jp_vn=Nhật-Việt
vn_jp=Việt-Nhật
jp_en=Nhật-Anh
en_jp=Anh-Nhật
fr_vn=Pháp-Việt
vn_fr=Việt-Pháp
vn_vn=Việt-Việt
td_vt=Viết TắtChi tiết xin xem thêm trong file đính kèm nhé
=================================================
Giờ tớ giải thích cụ thể một chút về cách làm nhé:
A. Thêm 1 mô đun vào word, sau đó thêm cái ni, cốt để gọi ra cái form hiển thị kết quả.
Sub WorkLookup()
frmResults.Show
End Sub
B. Giờ vào làm form
+ Thêm Userform và đặt tên là frmResults
+ Thêm vào Toolbox một điều khiển Microsoft Web browser.
+ Lôi vào trên form cái điều khiển ý nhá, đặt tên là Browser chẳng hạn
Và sau đó thêm các đoạn code sau vào form là xong.
(À quên, còn phải thêm nút bấm trong word, liên kết với cái form này, có thể thêm tự động bằng cách thêm thực đơn như trong một số bài viết đã đề cập)

Option Explicit
Dim SysPath As String
Private HttpObject As Object

Private Const IF_FROM_CACHE = &H1000000
Private Const IF_NO_CACHE_WRITE = &H4000000
Private Const BUFFER_LEN = 256
Private Const VBA_AGENT = "VB Agent"

'//// Constant for WinHttp
Private Const WinHttpRequestOption_EnableHttpsToHttpRedirects = 12
Private Const WinHttpRequestOption_EnableRedirects = 6

Private Sub UserForm_Initialize()
Dim ServiceUrl As String
Dim myDic As String
Dim myWord As String
Dim myDoc As Object

' Initial the httpobject
Set HttpObject = CreateObject("WinHttp.WinHttpRequest.5.1")

SysPath = ThisDocument.Path
ServiceUrl = "https://tratu.baamboo.com/dispatchaddon.php?"
ServiceUrl = ServiceUrl & "dict=en_vn&title=" & RTrim(Selection.Text) & "&ver=0.9.1"
With Browser
.Navigate ServiceUrl
.Width = Me.Width – 15
.Height = Me.Height – 30
.Left = 5
.Top = 5
End With
On Error Resume Next
Set myDoc = Browser.Document
myDoc.body.innerHTML = GetUrlSource(ServiceUrl)
End Sub

Private Function GetUrlSourceNew(strUrl As String, _
Optional strParameter As String = "", _
Optional Redirect As Boolean = True, _
Optional ActionType As String = "POST", _
Optional ShouldBreakMessage As Boolean = False, _
Optional RefererText As String = "") As String

Dim retStr As String ' Variable to hold response data
With HttpObject
' turn on redirection method
.Option(WinHttpRequestOption_EnableHttpsToHttpRedirects) = Redirect
.Option(6) = True
' initialize the post action
If ActionType = "POST" Then
If ShouldBreakMessage Then
retStr = strUrl
Else
retStr = strUrl & "?" & strParameter ' for backward compatibility
End If
Else
retStr = strUrl
End If
.Open ActionType, retStr, False
' set request header for the connection
If ActionType = "POST" And ShouldBreakMessage Then
' set request header for the connection
'.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"
.SetRequestHeader "User-Agent", VBA_AGENT
.SetRequestHeader "Accept", "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
.SetRequestHeader "Accept-Language", "en-us" ',en;q=0.5"
.SetRequestHeader "Accept-Encoding", "gzip,deflate"
.SetRequestHeader "Accept-Charset", "ISO-8859-1,utf-8" ';q=0.7,*;q=0.7"
.SetRequestHeader "Keep-Alive", "300"
.SetRequestHeader "Connection", "Keep-Alive"
If RefererText <> "" Then .SetRequestHeader "Referer", RefererText
.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"

'Encode parameter
strParameter = URLEncoding(strParameter) ' post body of the message
.SetRequestHeader "Content-Length", Len(strParameter)
.SetRequestHeader "Cache-Control", "no-cache"

'If strCookie <> "" Then .SetRequestHeader "Cookie", strCookie
.Send strParameter ' post body of the message
Else
.Send
End If
.WaitForResponse ' wait for server to response

retStr = .ResponseText ' ok receive it now
GetUrlSourceNew = retStr ' assign retrieved data to function
End With
End Function

Function URLEncoding(vstrIn) As String
Dim strReturn As String, i As Long, ThisChr As String, innerCode As Long, Hight8 As Long, Low8 As Long
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vstrIn, i, 1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChr
Else
innerCode = Asc(ThisChr)
If innerCode < 0 Then
innerCode = innerCode + &H10000
End If
Hight8 = (innerCode And &HFF00) &HFF
Low8 = innerCode And &HFF
strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
End If
Next
URLEncoding = strReturn
End Function

Function GetUrlSource(strUrl As String, Optional strParameter As String = "", Optional Redirect As Boolean = True, Optional ActionType As String = "POST", Optional ShouldBreakMessage As Boolean = False, Optional RefererText As String = "") As String
Dim retStr As String ' Variable to hold response data
On Error Resume Next
retStr = GetUrlSourceNew(strUrl, strParameter, Redirect, ActionType, ShouldBreakMessage, RefererText)
GetUrlSource = retStr
End Function

Private Sub UserForm_Terminate()
Set HttpObject = Nothing 'Release the session
End Sub

www.giaiphapexcel.com/diendan/threads/tra-t%E1%BB%AB-bamboo-v%E1%BB%9Bi-word-v%C3%A0-excel.17304/

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 1 ▥ 0
Quảng cáo

Bạn nên đọc

One Response

  1. hands says:

    Phiên bản mới hỗ trợ cả Vdic

    Các bạn tải file đính kèm về và thay thế tập tin Normal.dot nhé
    Thông thường tập tin này nằm tại:
    C:Documents and Settings[Tên người dùng]Application DataMicrosoftTemplatesTất nhiên là nhớ sao lưu lại normal.dot cũ nếu trong trường hợp bạn cần sử dụng lại hoặc biến sửa tên tập tin đính kèm này thành một dạng Addin trong word.
    Bạn sẽ có thể tra từ điển ngay trong Word bằng cách nhấn Alt+P.
    Tuy nhiên, trước khi muốn tra, cần chọn từ điến đã nhé (bằng cách chọn Select Dictionary).
    Mời các bạn xem ảnh trong file đính kèm nhé

    Có phần mềm nào tạo file cài đặt setup để tự động copy file Normal vào đúng vị trí đường dẫn dưới đây không? Phương pháp thực hiện? Cám ơn!
    C:Documents and Settings[Tên người dùng]Application DataMicrosoftTemplates

    Để làm như bạn cần thì không khó, tuy nhiên tập tin Normal.dot là tập tin mẫu của Word và sẽ không nên nếu ghi đè lên nó.
    Tôi viết lại thành dạng Addin và bạn chỉ cần kích hoạt chế độ cho phép chạy Macro
    Tool/Macro/Secuirity/Medium
    Chương trình sẽ tự động chạy.
    Bạn tải về tập tin, giải nén và mở thông thường bằng Word này nhé!
    Đoạn thủ tục để làm việc đó như sau:
    Private Sub CopyCode()
    If Dir(Application.StartupPath & "Utility.dot") <> "" Then Exit Sub
    Dim I As Integer, obj As String
    For I = 1 To Application.Templates.Count
    If LCase(Application.Templates(I).Name) = "utility.dot" Then
    obj = Templates(I).Path & "" & Templates(I).Name
    Templates(I).OpenAsDocument
    ActiveDocument.SaveAs FileName:= _
    Application.StartupPath & "Utility.dot", _
    FileFormat:=wdFormatTemplate, AddToRecentFiles:=False
    Application.AddIns.Add(Application.StartupPath & "Utility.dot").Installed = True
    Application.AddIns("Utility.dot").Installed = True
    Application.Documents.Close
    Exit For
    End If
    Next
    End Sub

    Phiên bản mới tích hợp công cụ tra từ trên Excel và chuyển bảng mã

    '================================================= =========
    Tập tin đính kèm đã được cập nhật phiên bản mới nhất ngày 24/12/2009
    '================================================= =========
    Tính năng các bạn yêu cầu đã được bổ sung vào công cụ chuyển mã
    Các bạn có thể tải về tại đây
    https://www.giaiphapexcel.com/forum/attachment.php?attachmentid=39198&d=1261587877
    '================================================= =========

    Xin gửi các bạn bộ công cụ tích hợp tra cứu từ điển trong Excel kết hợp với chuyển đổi bảng mã, làm lịch âm và một số công cụ khác!
    Hy vọng công cụ sẽ giúp đỡ được các bạn:
    Để cài đặt, hãy làm như sau (đối với Windows XP):
    1. Tải tập tin đính kèm về
    2. Giải nén
    3. Đưa tập tin Functions.xls vào thư mục
    C:Documents and Settings[Tên người dùng]Application DataMicrosoftAddIns
    (thay [Tên người dùng] bằng tên người dùng trên máy của bạn)
    Hoặc cũng có thể chép vào một khu vực nào đó trên máy tính và cài đặt như đối với Addin thông thường (chọn Tools/Add-ins và trỏ đến tập tin Functions.xla tại thư mục vừa giải nén của bạn). Khi cài đặt xong, Addin sẽ tự động thêm một thanh thực đơn mới tên là Công cụ với đầy đủ các tính năng liên quan.
    Để sử dụng, trước tiên cần thiết lập các thông số ban đầu bằng cách chọn thực đơn Thiết lập chung (Hoặc nhấn Ctrl+Shift+B) trên thanh thực đơn Công cụ và chọn các tham số phù hợp bao gồm:
    + Với chuyển bảng mã tiếng Việt, chọn tự động đoán mã (tính năng này hoạt động tương đối ổn với các tập tin Excel nguồn, không phải dạng xuất ra từ các ứng dụng khác), chọn mã đích và nhấn Chấp nhận. Tuy nhiên, cần lưu ý với một (số) bảng mã nguồn không có phông chữ đặc thù như VIQR, với bảng mã này, cần bỏ chế độ tự động đoán mã và chọn mã đích như thông thường và nên thực hiện với việc chọn từng ô hoặc nhóm ô.
    + Với từ điển, chọn bộ từ điển và tên máy chủ cho phù hợp và nhấn Chấp nhận.
    * Khi chuyển mã chỉ cần chọn vùng cần chuyển và nhấn Ctrl+Shift+C hoặc nhấn Chuyển mã
    * Khi muốn sử dụng từ điển, chọn ô cần tra từ và nhấn Tra từ hoặc Ctrl+Alt+A.
    * Muốn tạo lịch, chọn một bảng tính trống, nhấn Lịch.
    Hy vọng công cụ nho nhỏ này có thể giúp được các bạn chút ít.

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm