[Help]Tối ưu lại Code thay thế từ Excel sang Word

Liên hệ QC

quyenpv

Thu nhặt kiến thức
Tham gia
5/1/13
Bài viết
709
Được thích
90
Giới tính
Nam
Nghề nghiệp
Decode cuộc đời!
Do nhu cầu mục đích tạo hồ sơ pháp lý sau khi tính toán từ Excel, mình lên mạng có Search được Topic và sửa lại nhưng code chắp vá quá mong anh chị tối ưu lại code giúp em với ạ
Trong file excel sẽ có cột A dùng làm từ khóa, cột B là giá trị dùng để thay thế sang Word.
Cám ơn anh chị!
 

File đính kèm

  • GPE_Help Replace.xlsb
    29.4 KB · Đọc: 40
  • 01.TTr to chuyen gia.doc
    50 KB · Đọc: 48
Các anh chị giúp em trường hợp hàm thay thế trong trường hợp chuỗi thay thế > 255 ký tự với ạ
 
Upvote 0
Cũng có nhu cầu giống bạn, chuỗi >255 là tịt luôn
 
Upvote 0
Code rác quá, nhìn là oải, không muốn sữa, optimize cho bạn.
File Excel tôi down về bị lỗi, bạn up lại nhé. Trước khi up chịu khó clean code, remove các sub/function không dùng, trong các sub/function remove các dim không dùng, code chịu khó tab, canh lề, enter new line cho dễ nhìn, dễ đọc
 
Lần chỉnh sửa cuối:
Upvote 0
Code rác quá, nhìn là oải, không muốn sữa, optimize cho bạn.
File Excel tôi down về bị lỗi, bạn up lại nhé. Trước khi up chịu khó clean code, remove các sub/function không dùng, trong các sub/function remove các dim không dùng, code chịu khó tab, canh lề, enter new line cho dễ nhìn, dễ đọc

Em gửi lại anh
 

File đính kèm

  • GPE_Help Replace.xlsb
    28.2 KB · Đọc: 19
  • 01.TTr to chuyen gia.doc
    50 KB · Đọc: 36
Upvote 0
Bạn test lại thử xem có đúng ý bạn không ? Mấy cái vụ Word wiec này tôi không rành lắm.
 

File đính kèm

  • GPE_Help Replace.xlsb
    26.6 KB · Đọc: 20
Upvote 0
Dạ cám ơn anh, code anh chạy vẫn chưa đúng ạ.
Ví dụ: Dòng B27 chiều dài chuỗi thay thế là 270 kỹ tự nhưg khi code chạy cắt còn 249 kỹ tự
Anh sửa lại giúp em với ạ
Bài đã được tự động gộp:

Mã:
chunk = Mid(strReplace, ((I - 1) * 250) + 1, 250)
Đoạn code này lấy có 250 ký tự anh
 
Lần chỉnh sửa cuối:
Upvote 0
Thôi bỏ code đó đi, lằng nhằng, theo code ban đầu của bạn nên phức tạp vậy. Xin lỗi cậu lúc chiều về vội nên tôi không test kỹ.
Cậu thử lại code này xem sao
 

File đính kèm

  • GPE_Help Replace.xlsb
    28.2 KB · Đọc: 85
Upvote 0
Cám ơn anh rất nhiều. Đánh dấu lưu lại bài ạ
 
Upvote 0
Các anh chị giúp em trường hợp hàm thay thế trong trường hợp chuỗi thay thế > 255 ký tự với ạ
Thường thì mình sẽ làm như thế này
Vi dụ Thay thế 260 ký tự , đầu tiên thay thế 240 ký tự + 1 chuỗi X (X<15 ký tự) xong tiếp tục thay thế 20 ký tự còn lại vào chuỗi X đó. chuỗi càng dài thì cứ lặp lại hành động này.
 
Upvote 0
Bạn vào References của VBA project, add lại reference tới Microsoft Word xxx.xx trên máy bạn.
 
Upvote 0
F2, Object Browse , tìm và sửa đi bạn ơi. Dễ mà.
 
Upvote 0
Bạn up file Msword.olb trên máy bạn lên, tôi xem và sữa cho
Máy bạn office 2016 nên thư mục có thể là x:\Program Files xxx\Office 15
Chắc là có thay đổi trong properties, constants giữa các đời Office, Word....
 

File đính kèm

  • Untitled.png
    Untitled.png
    21.1 KB · Đọc: 40
  • Untitled.png
    Untitled.png
    110.3 KB · Đọc: 34
Upvote 0
Cũng không cần thêm References đâu. Tức nếu có Misrosoft Word XXX Object Library thì bỏ nó đi.

Sau dòng
Mã:
Private Sub FindAndReplace(ByVal strFind As String, ByVal strReplace As String)
thì thêm
Mã:
Const wdGoToSection = 0
Const wdGoToFirst = 1
Const wdReplaceAll = 2
Const wdFindContinue = 1

Đấy là khai báo cục bộ (Local). Nếu muốn dùng cả trong những Sub, Function khác (trong tương lai) thì khai báo toàn cục (Global) - ở đầu Module, trước tất cả các Sub, Function.

Nếu tương lai còn dùng các hằng số khác của Word thì khai báo thêm.

Khai báo là việc nên làm vì nhiều khi hằng số được dùng ở nhiều nơi trong code, ngoài ra code cũng sẽ dễ đọc rất nhiều. Con số 0 chả nói, chả gợi ý cái gì cả nhưng cái tên wdGoToSection thì nói nhiều điều.
 
Upvote 0
Web KT
Back
Top Bottom