Lưu VBA Word như *.xla của Excel

Liên hệ QC

phamduylong

-
Thành viên đã mất
Tham gia
30/12/06
Bài viết
918
Được thích
2,368
Nghề nghiệp
Giáo viên
Chào các bạn,
Mình mới tập viết VBA Word, bài đầu tiên là chuyển mã tự động các bảng mã về 1 mã duy nhất.
Viết phần code đã tạm xong nhưng mình sử dụng thì được, người khác dùng thì còn trở ngại là phải chạy từ màn hình soạn thảo code. Mình đang bị bí cách làm cho tập tin VBA Word khi chạy giống như *.xla của Excel, cụ thể là:
- Khi chạy nó trong suốt (người dùng không thấy nó trên màn hình)
- Tự tạo menu khi mở file, xóa menu khi đóng file để người dùng chỉ cần chọn lệnh trên menu.
 
Bác Long ơi!
Trong Word, nói thật nên dùng Unikey!
Cái này em viết hồi 2001 - đến khi có Unikey em bỏ luôn, gần đây viết lại cho Excel! Nhưng nếu bác cần thì vô đây mà lấy!
http://www.sfdp.net/libs/gen/wrd/Unicode.zip
Chúc bác thành công!
 
Bác Long ơi!
Trong Word, nói thật nên dùng Unikey!
Cái này em viết hồi 2001 - đến khi có Unikey em bỏ luôn, gần đây viết lại cho Excel! Nhưng nếu bác cần thì vô đây mà lấy!
http://www.sfdp.net/libs/gen/wrd/Unicode.zip
Chúc bác thành công!
Mình mới tập làm quen với VBA Word, đụng đâu bí đó. Unikey thì khỏi bàn rồi, viết để có mục tiêu cụ thể học VBA Word. Nhưng quen với Excel, qua Word thấy khó quá !
 
- VBA trong Word có đối tượng Normal, bác lưu thủ tục trong đó là toàn bộ file sử dụng được hết.
- Unikey gõ chữ tiếng Việt trong object của excel2007 không được? Chẳng hiểu tại sao?
 
Không biết bác nói Đối tượng ở đây có phải là các điều khiển hay không (Control).
Nếu bác gõ bảng mã VNI hoặc TCVN trong các điều khiển thì chắc là được, còn môi trường soạn thảo mã VBA (IDE) thì khác.
Quả thật gõ Unicode để thay đổi thuộc tính trong một số điều khiển của Office thì không được (các chữ Unicode thường chuyển sang dấu ?).
Nhưng nếu bác dùng VBA để thiết lập thuộc tính thì lại được.
Chẳng hạn: xxxx.caption="L" & chrw(7883) & "ch" thì lại được.
Cái này là do cái lưới thuộc tính, hoặc chế độ soạn thảo nội dung thuộc tính của điều khiển chưa hỗ trợ soạn thảo Unicode trực tiếp.
Bác cứ sử dụng VBA trực tiếp thì iem nghĩ là vẫn được ạ, đôi khi em vẫn phải làm như thế!
Không biết phần trả lời của iem có đúng ý bác không ạ!
 
Không biết bác nói Đối tượng ở đây có phải là các điều khiển hay không (Control).
Nếu bác gõ bảng mã VNI hoặc TCVN trong các điều khiển thì chắc là được, còn môi trường soạn thảo mã VBA (IDE) thì khác.
Quả thật gõ Unicode để thay đổi thuộc tính trong một số điều khiển của Office thì không được (các chữ Unicode thường chuyển sang dấu ?).
Nhưng nếu bác dùng VBA để thiết lập thuộc tính thì lại được.
Chẳng hạn: xxxx.caption="L" & chrw(7883) & "ch" thì lại được.
Cái này là do cái lưới thuộc tính, hoặc chế độ soạn thảo nội dung thuộc tính của điều khiển chưa hỗ trợ soạn thảo Unicode trực tiếp.
Bác cứ sử dụng VBA trực tiếp thì iem nghĩ là vẫn được ạ, đôi khi em vẫn phải làm như thế!
Không biết phần trả lời của iem có đúng ý bác không ạ!

Đối tượng là Shapes, gõ kiểu Unicode ở ô bình thường anh ạ. Nhưng gõ trong Shapes (như Text Box) thì không được, chữ toàn bị xóa thôi (không dấu thì vô tư).
Nếu dùng biện pháp "củ chuối" là gõ nội dung trong ô, sau đó copy vào Text Box thì được.
 
Chào các bạn,
Mình mới tập viết VBA Word, bài đầu tiên là chuyển mã tự động các bảng mã về 1 mã duy nhất.
Viết phần code đã tạm xong nhưng mình sử dụng thì được, người khác dùng thì còn trở ngại là phải chạy từ màn hình soạn thảo code. Mình đang bị bí cách làm cho tập tin VBA Word khi chạy giống như *.xla của Excel, cụ thể là:
- Khi chạy nó trong suốt (người dùng không thấy nó trên màn hình)
- Tự tạo menu khi mở file, xóa menu khi đóng file để người dùng chỉ cần chọn lệnh trên menu.
Tôi cũng có làm 1 số thứ trên Word, xin được góp vui
- Viết cho Word cũng tương tự như Excel, đầu tiên cứ code bình thường rồi nhét nó vào cái Normal và Save lại. Khi muốn chuyển giao thì copy cái File Normal.dot đi là được, cách này không hay vì biết đâu trên máy người dùng cũng có những chương trình lưu trên đó thì bất tiện, ta nên Export các Module và các Form thành các File .bas và .frm sau đó Import vào Normal của khách là được.
Ngoài cách làm này tôi chưa biết cách nào để cài đặt nhanh hơn như kiểu Browse file như trong Excel khi ta thêm file .xla
- Về tạo, xóa menu tự động:
PHP:
Public Sub AutoExec()
    On Error Resume Next
    Dim MenuObject As CommandBarPopup
    Dim MnC%
    CustomizationContext = NormalTemplate
    CommandBars("Menu Bar").Controls("&Menu Mới").Delete
    MnC = CommandBars("Menu Bar").Controls.Count + 1
    'Tạo Menu Mới'
    Set MenuObject = CommandBars("Menu Bar").Controls.Add(Type:=msoControlPopup, Before:=MnC, Temporary:=True)
    MenuObject.Caption = "&Menu Mới"
    'Tạo menu con '
    With MenuObject.Controls.Add(Type:=msoControlButton)
        .OnAction = "Lenh1"
        .FaceId = 10
        .Caption = "&Nhiệm vụ 1"
        .ShortcutText = "Ctrl + Shift + 1"
    End With
    KeyBindings.Add KeyCode:=BuildKeyCode(wdKey1, wdKeyControl, wdKeyShift), _
    KeyCategory:=wdKeyCategoryMacro, Command:="Lenh1"
    With MenuObject.Controls.Add(Type:=msoControlButton)
        .OnAction = "Lenh2"
        .FaceId = 20
        .Caption = "Nhiệm &vụ 2"
        .ShortcutText = "Ctrl + Shift + 2"
    End With
    KeyBindings.Add KeyCode:=BuildKeyCode(wdKey2, wdKeyControl, wdKeyShift), _
    KeyCategory:=wdKeyCategoryMacro, Command:="Lenh2"
End Sub
 
Không biết bác nói Đối tượng ở đây có phải là các điều khiển hay không (Control).
Nếu bác gõ bảng mã VNI hoặc TCVN trong các điều khiển thì chắc là được, còn môi trường soạn thảo mã VBA (IDE) thì khác.
Quả thật gõ Unicode để thay đổi thuộc tính trong một số điều khiển của Office thì không được (các chữ Unicode thường chuyển sang dấu ?).
Nhưng nếu bác dùng VBA để thiết lập thuộc tính thì lại được.
Chẳng hạn: xxxx.caption="L" & chrw(7883) & "ch" thì lại được.
Cái này là do cái lưới thuộc tính, hoặc chế độ soạn thảo nội dung thuộc tính của điều khiển chưa hỗ trợ soạn thảo Unicode trực tiếp.
Bác cứ sử dụng VBA trực tiếp thì iem nghĩ là vẫn được ạ, đôi khi em vẫn phải làm như thế!
Tôi thì hay làm như sau:
Trong lúc thiết kế, và coding phần caption và msgbox ta dùng Unicode tổ hợp thì có thể nhập bình thường được, đây thường là những thông tin cố định nên không sợ ảnh hưởng đến tài liệu.
Còn lúc runtime thì dùng tổ hợp hay dụng sẵn đều được, tùy theo tài liệu của mình dùng bảng mã gì thì dùng bảng mã đó cho thống nhất.
 
Web KT
Back
Top Bottom