Đưa tính năng dịch của Google vào Excel và Word!

Liên hệ QC

paulsteigel

Nhi bất hoặc!
Tham gia
25/8/08
Bài viết
306
Được thích
683
Giới tính
Nam
Nghề nghiệp
Governance & Public policy consultant
Từ nhu cầu của một vài bạn liên quan đến việc dịch tài liệu, tôi chuẩn bị một công cụ nhỏ và xin chia sẻ cho các bạn làm văn phòng, hy vọng nó sẽ giúp các bạn phải làm việc với Tiếng Anh đỡ vất vả khi copy/paste trên web với tính năng dịch của Google.
Công cụ này được viết cho Office 2007 trở lên. nếu các bạn có nhu cầu với Office 2003 thì có thể chuyển biên dịch lại 2 tập tin Normal.dotm và Tools.xla về Office 2003 nhé.
Cách cài đặt các bạn xem trên video dưới đây. Khi cần dịch, chọn vùng nhấn Ctrl+Shift+E (dịch Việt Anh) và Ctrl+Shiff+V (Anh việt)
Trên Word
MEDIA=youtube]aIX9exItbMs[/MEDIA]
Trên Excel
Cách cài đặt như sau:
1. Tải file đính kèm về, giải nén ra một thư mục ví dụ C:\Tools
2. Tắt hoàn toàn Word nhé
vào run (Winkey+R) gõ %userprofile%AppData\Roaming\Microsoft\Templates
để vào thư mục template của Word theo chỉ dẫn ở đây (sau đó thoát hoàn toàn word
https://www.experts-exchange.com/articles/29466/Finding-the-Office-Templates-Folder.html
Lưu lại bản Normal.dotm hiện tại của bạn bằng cách đổi tên thành Old_normal.dotm
3. Copy file Normal.dotm trong thư mục tools vừa tải về vào, ghi vào thư mục templates.
Khởi động word và bạn có thể bắt đầu dùng công cụ, lưu ý là phải để chế độ macro enable nhé!
4. Với excel thì bạn cài add in thông thường.
+ Khởi động excel, chọn file/options/addins
+ vào mục addins, chọn Go, Add, Browse và trỏ đến file Tools.xla.
Chúc các bạn vui vẻ
==============cập nhập mới==================
Hiện tại, công cụ này đã được cập nhập và có thể thiết lập để dịch Anh/Việt/Nhật.
Các nút chuyển sau khi thiết lập đã được đổi là
Ctrl+Shift+T = Dịch theo thiết lập của người dùng từ ngôn ngữ A->B
Ctrl+Shift+R = dịch ngược lại từ B sang A và
Ctrl+Shft+B = Bật hộp thoại thiết lập ngôn ngữ dịch
 

File đính kèm

  • Tools.zip
    89.3 KB · Đọc: 477
Lần chỉnh sửa cuối:
Từ nhu cầu của một vài bạn liên quan đến việc dịch tài liệu, tôi chuẩn bị một công cụ nhỏ và xin chia sẻ cho các bạn làm văn phòng, hy vọng nó sẽ giúp các bạn phải làm việc với Tiếng Anh đỡ vất vả khi copy/paste trên web với tính năng dịch của Google.
Công cụ này được viết cho Office 2007 trở lên. nếu các bạn có nhu cầu với Office 2003 thì có thể chuyển biên dịch lại 2 tập tin Normal.dotm và Tools.xla về Office 2003 nhé.
Cách cài đặt các bạn xem trên video dưới đây. Khi cần dịch, chọn vùng nhấn Ctrl+Shift+E (dịch Việt Anh) và Ctrl+Shiff+V (Anh việt)
Trên Word
MEDIA=youtube]aIX9exItbMs[/MEDIA]
Trên Excel

Cái này có lâu rồi mà, mình cũng có 1 file tải trên GPE
 
Cái này có lâu rồi mà, mình cũng có 1 file tải trên GPE
Cảm ơn bạn - mình tìm không ra nên quyết định chia sẻ một tool nhỏ thôi! Nếu có rồi thì nó là môt sự bổ sung thôi!
Trong công cụ này mình có đưa ra một tiếp cận mới trong lập trình kết nối web tận dụng được tính năng đa luồng của ứng dụng để không gây treo máy kết hợp với Winhttp, XmlHttp mà không dùng đến Internetbrowser khá nặng.
Toàn bộ ứng dụng được viết trong một Class và class này có khả năng bắt sự kiện khi nhận được trả lời từ máy chủ google. nên khi chọn nhiều cell/ range nhiều paragraphs, công cụ sẽ tạo nhiều phiên làm việc đồng thời với nhiều Cell và đoạn văn và trả về kết quả liên tục khi có phản hồi.
Nó khắc phục được vài nhược điểm của một số công cụ đã có khác.
Tất nhiên từ office 2013 giở lên thì chúng ta không cần làm việc này nữa! Office đã có hẳn công cụ này nhúng trong các ứng dụng rồi!
Chúc các coder vui vẻ!
 
Lần chỉnh sửa cuối:
Đọc từ trên xuống dưới thấy mỗi khúc này vui vẻ!!!

Sau khi anh Mai cồ 'đẻ' Office 2019 thì hôm nay 'đẻ' thêm Office 2006..!

1542178994040.png
 
Cảm ơn anh ^^. Hy vọng anh có thể thêm tính năng "undo" nữa thì sẽ tốt hơn.
Bạn hoàn toàn có thể undo sau khi dịch xong mà, nếu văn bản dài, bạn sẽ không thấy nó undo chỗ nào vì các paragraph được dịch liên tục và không theo thứ tự nào cả, tùy theo tốc độ trả lời của Google.
Theo dõi dễ nhất là chọn một câu hoàn chỉnh trong một đoạn văn và dịch, xong bấm Ctrl+Z sẽ thấy tác dụng.
Trong Excel thì mình sẽ ngâm cứu và sớm update
Có gì bạn cứ hỏi nhé
 
Bạn hoàn toàn có thể undo sau khi dịch xong mà, nếu văn bản dài, bạn sẽ không thấy nó undo chỗ nào vì các paragraph được dịch liên tục và không theo thứ tự nào cả, tùy theo tốc độ trả lời của Google.
Theo dõi dễ nhất là chọn một câu hoàn chỉnh trong một đoạn văn và dịch, xong bấm Ctrl+Z sẽ thấy tác dụng.
Trong Excel thì mình sẽ ngâm cứu và sớm update
Có gì bạn cứ hỏi nhé
chấm bài để hóng update của bác ạ, hihi :)
 
Mình tranh thủ chèn tính năng Undo vào Addin trong excel (lười nên copy code tại trang www.jkp-ads.com)
Các bạn quan tâm test giúp và góp ý thêm giùm!
Em vừa test, kết quả thế này:
1. Nếu sau khi dịch xong, undo sẽ trả về giá trị trước đó, nhưng chỉ undo được 1 lần.
2. Vấn đề gặp phải: Nếu mình có sửa file hay làm gì trước đó, sau đó dùng tổ hợp phím để dịch, undo sẽ chỉ hoạt động 1 lần trả về giá trị trước khi dịch, còn đối với những thay đổi trước đó nữa sẽ không thể undo tiếp được.
 
Em vừa test, kết quả thế này:
1. Nếu sau khi dịch xong, undo sẽ trả về giá trị trước đó, nhưng chỉ undo được 1 lần.
2. Vấn đề gặp phải: Nếu mình có sửa file hay làm gì trước đó, sau đó dùng tổ hợp phím để dịch, undo sẽ chỉ hoạt động 1 lần trả về giá trị trước khi dịch, còn đối với những thay đổi trước đó nữa sẽ không thể undo tiếp được.
Cái này e là khó, vì ngay khi chạy tính năng dịch, undo của Excel đã bị xóa hoàn toàn! Mình nghĩ, khó tìm ra một cách tiếp cận phù hợp vì bản thân Excel nó đã được thiết lập ra như vậy!
Với yêu cầu này, mình sợ là không làm được! Mong các bạn thông cảm
 
Cái này e là khó, vì ngay khi chạy tính năng dịch, undo của Excel đã bị xóa hoàn toàn! Mình nghĩ, khó tìm ra một cách tiếp cận phù hợp vì bản thân Excel nó đã được thiết lập ra như vậy!
Với yêu cầu này, mình sợ là không làm được! Mong các bạn thông cảm
Em nghĩ nếu được anh có thể tạo code mở 1 file excel tạm thời và đưa kết quả dịch vào đó thay vì dịch trực tiếp trên file, như thế có thể vẫn giữ được các tính năng trên file gốc như bình thường. Em không hiểu nhiều về code nên chỉ nghĩ ý tưởng vậy thôi.:D
 
Em nghĩ nếu được anh có thể tạo code mở 1 file excel tạm thời và đưa kết quả dịch vào đó thay vì dịch trực tiếp trên file, như thế có thể vẫn giữ được các tính năng trên file gốc như bình thường. Em không hiểu nhiều về code nên chỉ nghĩ ý tưởng vậy thôi.:D
Thực ra, mình đánh giá cao ý tưởng của bạn, tuy nhiên do phải thao tác với VBA nên cứ chạy mã VBA thì Danh sách undo hiện thời đã bị mất nên tạo ra bản mới cũng không khác gì cả. Ngoài ra, công cụ này được thiết lập để tạo ra sự tiện lợi tại chỗ (giống như chuyển mã sang unicode...vv) ngay trên Excel nên nếu chuyển sang một file mới thì giá trị của nó sẽ mất đi.
Xét về thao tác người dùng, việc lưu lại những thay đổi trước khi chạy một ứng dụng nào đó là điều nên làm. Còn việc tích lũy các thay đổi để kiểm duyệt một thể sau đó thường là thói quen không phù hợp, dễ mất mát dữ liệu.
Anh nghĩ, ở giai đoạn hiện tại, khó mà tìm được giải pháp tuyệt đối cho nhiều nhu cầu khác nhau. Nên, tạm thời để như vậy dài dài vậy!
Hy vọng em thông cảm!
 
Công cụ hỗ trợ google dịch trên Excel đã được nâng cấp với 3 ngôn ngữ Anh, Nhật, Việt, các bạn xem và tải file tại bài đầu https://www.giaiphapexcel.com/diend...a-google-vào-excel-và-word.139010/post-891650
Với các bạn phải thường xuyên làm việc với những ngôn ngữ này trên Excel, đây có thể là một công cụ có ích nho nhỏ. Chúc các bạn vui vẻ, mạnh khỏe, làm việc hiệu quả và thành công nhân dịp năm mới sắp tới

===========Một vài điều bàn thêm về lập trình==============
Trong công cụ có sử dụng đối tượng xmlHttp để thực hiện việc gửi truy vấn đến máy chủ của google. Để tránh việc treo máy và đợi lâu khi thực hiện tôi đã viết thành một Class và vận dụng đối tượng XmlHttp theo cách đồng thời gửi yêu cầu dịch và chờ có kết quả thì sẽ cập nhập nội dung của Cell liên quan. Cái khó ở đây là việc thiết lập một class để nó có thể theo sát việc gửi thông tin và chờ, bắt được sự kiện khi có trả lời từ máy chủ Google của đối tượng XmlHttp.
Sau khi sục sạo, đọc tài liệu thì tôi đã tìm được giải pháp là thiết lập một thủ tục để Class này thực hiện một cách mặc định khi đối tượng XMLHTTP thay đổi trạng thái với thủ tục Sub ReadyStateChangeHandler() (Export Class này ra ngoài, dùng texteditor thêm dòng Attribute ReadyStateChangeHandler.VB_UserMemId = 0 vào ngay sau thủ tục này rồi import lại vào Môi trường viết code VBA).
Cách làm này giúp chúng ta có thể gửi hàng trăm truy vấn xong rồi đợi và kết quả sẽ cập nhập liên tục vào các ô trong vùng được chọn mà không bắt người dùng phải chờ đợi. Cách này cũng tận dụng lợi thế phân luồng của máy tính nên tốc độ được cải thiện tương đối.
Xin chia sẻ cùng các bạn
 
Lần chỉnh sửa cuối:
Trong công cụ có sử dụng đối tượng xmlHttp để thực hiện việc gửi truy vấn đến máy chủ của google. Để tránh việc treo máy và đợi lâu khi thực hiện tôi đã viết thành một Class và vận dụng đối tượng XmlHttp theo cách đồng thời gửi yêu cầu dịch và chờ có kết quả thì sẽ cập nhập nội dung của Cell liên quan. Cái khó ở đây là việc thiết lập một class để nó có thể theo sát việc gửi thông tin và chờ, bắt được sự kiện khi có trả lời từ máy chủ Google của đối tượng XmlHttp.
Sau khi sục sạo, đọc tài liệu thì tôi đã tìm được giải pháp là thiết lập một thủ tục để Class này thực hiện một cách mặc định khi đối tượng XMLHTTP thay đổi trạng thái với thủ tục Sub ReadyStateChangeHandler()
Tiếc là bạn không đọc được bài của tôi gần 1 năm trước.
Bài #37
https://www.giaiphapexcel.com/diend...ds-file-từ-web-về-máy-tính.105631/post-844181

Trích
Chính vì thế tôi phục vụ sự kiện ReadyStateChange
Tức trong lớp clsXMLHTTPHandler có dòng
Mã:

XmlHttpRequest.OnReadyStateChange = Me

Như thế thì khi sảy ra sự kiện OnReadyStateChange thì code callback sẽ được gọi. Để thiết lập EventCallback (trong class clsXMLHTTPHandler) là callback và sẽ được gọi thì phải có chút thủ thuật *. Chính vì thế mà tôi đính kèm tập tin clsXMLHTTPHandler.cls chứ không dâng cho bạn code ở dạng văn bản.
Trong EventCallback thì code kiểm tra ReadyState và Status của đối tượng. Nếu Status là 200 thì gọi sub SaveFile (được truyền khi gọi phương thức Send của đối tượng request) - dùng Application.Run. code của SaveFile sẽ ghi tập tin.

* Bạn không thể viết
Mã:

XmlHttpRequest.OnReadyStateChange = Me.EventCallback

với hàm ý là code EventCallback sẽ phục vụ sự kiện OnReadyStateChange, để khi sự kiện OnReadyStateChange sảy ra thì code EventCallback sẽ được thực hiện. Vậy thì bằng cách nào "thông báo" là EventCallback chính là để phục vụ sự kiện OnReadyStateChange? Bằng cách cho EventCallback là thuộc tính mặc định của class clsXMLHTTPHandler. Nhưng cho bằng cách nào?
Bằng cách: sau khi có code của class clsXMLHTTPHandler thì chọn nó và từ menu File chọn Remove class clsXMLHTTPHandler -> chọn Yes để lưu lại clsXMLHTTPHandler.cls ở thư mục nào đó -> mở tập tin clsXMLHTTPHandler.cls vd. bằng notepad -> sau dòng Sub EventCallback() thì thêm 1 dòng
Mã:

Attribute EventCallback.VB_UserMemId = 0

Bạn mở tập tin CLS của tôi thì sẽ thấy dòng thêm này.

-> lưu lại và đóng notepad -> menu File chọn Import -> chọn tập tin vừa sửa.

Như vậy thì EventCallback sẽ là mặc định và khi sảy ra sự kiện OnReadyStateChange thì mặc định của đối tượng được "đưa vào" OnReadyStateChange sẽ được gọi. Do ta có
Mã:

XmlHttpRequest.OnReadyStateChange = Me

nên khi sảy ra OnReadyStateChange thì mặc định của Me, tức clsXMLHTTPHandler, sé được gọi. Mà mặc định của clsXMLHTTPHandler chính là EventCallback. Thế thôi.
 
Tiếc là bạn không đọc được bài của tôi gần 1 năm trước.
Bài #37
https://www.giaiphapexcel.com/diend...ds-file-từ-web-về-máy-tính.105631/post-844181

Trích
Cảm ơn bác,
Công nhận là tiếc rằng em không được đọc bài của bác như gửi kèm. Tuy nhiên, dù sao thì Internet cũng đã đưa em đến cái mà bác đề cập trong bài viết bác đính kèm khi em nảy sinh câu hỏi, làm thế nào để class có thể kiểm soát sự kiện của XmlHttp như một ActiveX như kiểu Raise Event.
Phần này em tìm kiếm được ở trang http://dailydoseofexcel.com/archives/2006/10/09/async-xmlhttp-calls/ khi viết một ứng dụng nhỏ cho phép tải và quản trị file bằng vba + XmlHttp mà không cần dùng IE trên google drive.
Trên thực tế việc tìm kiếm các bài viết bằng tiếng Việt liên quan đến việc này ra kết quả hạn chế nên em hay tìm luôn bằng tiếng Anh. Mạng Internet mở ra những cánh cửa kiến thức để đôi khi mọi người lại gặp nhau ở nơi thật gần gũi.
Mong sao những giải pháp mở sẽ ngày càng được chia sẻ nhiều hơn!
Xin cảm ơn bác và chúc bác năm mới mạnh khỏe, hạnh phúc và tiếp tục có nhiều cống hiến cho cộng đồng!
 
Lần chỉnh sửa cuối:
Cảm ơn bác,
Công nhận là tiếc rằng em không được đọc bài của bác như gửi kèm. Tuy nhiên, dù sao thì Internet cũng đã đưa em đến cái mà bác đề cập trong bài viết bác đính kèm khi em nảy sinh câu hỏi, làm thế nào để class có thể kiểm soát sự kiện của XmlHttp như một ActiveX như kiểu Raise Event.
Phần này em tìm kiếm được ở trang http://dailydoseofexcel.com/archives/2006/10/09/async-xmlhttp-calls/ khi viết một ứng dụng nhỏ cho phép tải và quản trị file bằng vba + XmlHttp mà không cần dùng IE trên google drive.
Trên thực tế việc tìm kiếm các bài viết bằng tiếng Việt liên quan đến việc này ra kết quả hạn chế nên em hay tìm luôn bằng tiếng Anh. Mạng Internet mở ra những cánh cửa kiến thức để đôi khi mọi người lại gặp nhau ở nơi thật gần gũi.
Mong sao những giải pháp mở sẽ ngày càng được chia sẻ nhiều hơn!
Xin cảm ơn bác và chúc bác năm mới mạnh khỏe, hạnh phúc và tiếp tục có nhiều cống hiến cho cộng đồng!
Nếu bạn có ứng dụng khác thì có vẻ hay hơn, có ý tưởng nào không, vì dịch như thế này cũng hay, nhưng có google translate thì cũng khá tốt rồi
 
Nếu bạn có ứng dụng khác thì có vẻ hay hơn, có ý tưởng nào không, vì dịch như thế này cũng hay, nhưng có google translate thì cũng khá tốt rồi
Cảm ơn bạn đã nhắc! Đáng tiếc là tôi không có ứng dụng nào khác thú vị cả, đây chỉ là một chia sẻ nhỏ với mong muốn nó có thể giúp ích được ai đó cần! Nếu không cần thiết và làm tốn tài nguyên, thì mong BQT xóa hộ tôi thread này. Đọc góp ý của bạn xong, mình cũng muốn xóa thread đi lắm nhưng không được giao quyền nên đành để vậy!
Năm mới sắp đến, chúc bạn và các thành viên diễn đàn mạnh khỏe và có nhiều đóng góp cho diễn đàn và cuộc sống!
 
Cảm ơn bạn đã nhắc! Đáng tiếc là tôi không có ứng dụng nào khác thú vị cả, đây chỉ là một chia sẻ nhỏ với mong muốn nó có thể giúp ích được ai đó cần! Nếu không cần thiết và làm tốn tài nguyên, thì mong BQT xóa hộ tôi thread này. Đọc góp ý của bạn xong, mình cũng muốn xóa thread đi lắm nhưng không được giao quyền nên đành để vậy!
Năm mới sắp đến, chúc bạn và các thành viên diễn đàn mạnh khỏe và có nhiều đóng góp cho diễn đàn và cuộc sống!
Không nhắc gì bạn cả, mà là muốn xem có ý tưởng khác không
Còn cứ để đi bạn cũng 1 cách để hiểu thêm ứng dụng web vào VBA -Excel
 
Bạn ơi, bạn update thêm bản 64bit được không? em mở máy 64 bit thử thì báo chưa hỗ trợ!
z1287058605842_c67415e23dfa0a5571ebcb7e43cf3cff.png
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom