Tra từ bamboo với Word và Excel (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

paulsteigel

Nhi bất hoặc!
Tham gia
25/8/08
Bài viết
306
Được thích
684
Giới tính
Nam
Nghề nghiệp
Governance & Public policy consultant
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
PHP:
http://tratu.baamboo.com/dispatchaddon.php?dict=[Tên từ điển]&title=[Từ cần tra]&ver=0.9.1
4. 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:
PHP:
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ắt
Chi 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)

PHP:
 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 = "http://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
 

File đính kèm

Lần chỉnh sửa cuối:
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:
PHP:
C:\Documents and Settings\[Tên người dùng]\Application Data\Microsoft\Templates
Tấ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é
bamboo.gif
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
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
 
Upvote 0
Xin lỗi vì lâu không trả lời nội dung này!

Để 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:
PHP:
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
 

File đính kèm

Upvote 0
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
http://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 Data\Microsoft\AddIns
(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.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình đã làm theo hướng dẫn của bạn (đối với word) mà không được. Hiện mình đang dùng win7 và word2007. Bạn vui lòng hướng dẫn mình với nhé. YM của mình là duc_nguyen1211.
Cảm ơn bạn nhiều!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom