Nhờ lưu và đóng phai có định dạng .rtf bằng VBA.

Liên hệ QC

Hoàng Tuấn 868

Đăng ký hôm qua
Tham gia
9/11/19
Bài viết
5,057
Được thích
4,745
Chào các ban.
Mình có đoạn code mở được phai định dạng .rtf nhưng chưa biết viết phần lưu (Save) và đóng (Close) phai đó lại được. Nhờ các bạn giúp mình hoàn thiện nốt phần đó. Dưới đây là đoạn code và phai đính kèm.
Chân thành cảm ơn các bạn.
Mã:
Sub Mo_File_wordpad()
    Dim duongdan As String
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        .Show
    duongdan = .SelectedItems(1)
    If .SelectedItems.Count = 0 Then Exit Sub
    End With
    OpenWordpadFile duongdan, vbNormalFocus
End Sub

Public Function OpenWordpadFile( _
    ByVal PathName As String, _
    Optional WindowStyle As VBA.VbAppWinStyle = vbMinimizedFocus) As Double
    Dim WshShell As Object

    Set WshShell = CreateObject("WScript.Shell")
    OpenWordpadFile = WshShell.Run(WshShell.RegRead( _
    "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WORDPAD.EXE\") _
    & " """ _
    & PathName _
    & """", WindowStyle, False)
    Set WshShell = Nothing
End Function
 

File đính kèm

  • EVN_PO_020___Phiếu_điều_c_030424-1.rar
    14.5 KB · Đọc: 7
Hãy giữ gìn sự trong sáng của tiếng Anh:
- cốt,
- c lâu,
- seo
--=0 --=0 --=0
 
Upvote 0
Bạn dùng Microsoft Word để mở/ chỉnh sửa/ lưu/ đóng là được thôi mà.
Tập tin *.rtf đâu liên quan gì WordPad.
 
Upvote 0
Bạn dùng Microsoft Word để mở/ chỉnh sửa/ lưu/ đóng là được thôi mà.
Tập tin *.rtf đâu liên quan gì WordPad.
(1) Em dùng Microsoft Word mở thủ công thì như thế này anh ạ
1712806385498.png
(2) Sau đó lưu lại rồi mở ra nó vẫn thế. không sử lý tiếp được.

(3) Em dùng WordPad mở thủ công hoặc bằng code thì như thế này anh ạ
1712806549650.png

(4) Sau đó em làm thủ công lưu, đóng lại với định dạng .docx, rồi mở ra thì được như thế này:
1712806929600.png
- Tiếp đó em còn sử lý định dạng bảng biểu trong 4 trang này nữa.
- Phần sử lý định dạng bằng vba thì em làm được rồi, các phần trên em làm bằng vba được đến mục (3).
- Từ mục (3) đến mục (4) bằng vba thì em vướng đoạn này chưa làm được.
- Nếu có thời gian rảnh thì nhờ anh tư vấn hoặc giúp em đoạn code thực hiện công đoạn này.
- Xin cảm ơn anh ạ.
 
Upvote 0
Mình có đoạn code mở được phai định dạng .rtf nhưng chưa biết viết phần lưu (Save) và đóng (Close) phai đó lại được. Nhờ các bạn giúp mình hoàn thiện nốt phần đó. Dưới đây là đoạn code và phai đính kèm.
Nếu máy tính không có cài Word thì dùng Wordpad như bạn làm. Wordpad nó không code được nên tôi nghĩ chỉ có cách dùng SendKey cho cửa số file Wordpad đang mở để thao tác thôi.
Ví dụ:
JavaScript:
AppActivate filename & " - Wordpad"
    SendKeys "%FA", True
    SendKeys "%TT", True
    SendKeys "%N", True
    SendKeys "test.rtf", True
    SendKeys "%S", True
    SendKeys "Y", True

Bạn ngâm cứu thêm xem sao.
(Nhớ là MS đã khai tử Wordpad rồi mà vẫn dùng à.)
 
Upvote 0
(1) Em dùng Microsoft Word mở thủ công thì như thế này anh ạ

(2) Sau đó lưu lại rồi mở ra nó vẫn thế. không sử lý tiếp được.

(3) Em dùng WordPad mở thủ công hoặc bằng code thì như thế này anh ạ


(4) Sau đó em làm thủ công lưu, đóng lại với định dạng .docx, rồi mở ra thì được như thế này:

- Tiếp đó em còn sử lý định dạng bảng biểu trong 4 trang này nữa.
- Phần sử lý định dạng bằng vba thì em làm được rồi, các phần trên em làm bằng vba được đến mục (3).
- Từ mục (3) đến mục (4) bằng vba thì em vướng đoạn này chưa làm được.
- Nếu có thời gian rảnh thì nhờ anh tư vấn hoặc giúp em đoạn code thực hiện công đoạn này.
- Xin cảm ơn anh ạ.

Tức là bạn cần chuyển .rtf thành .docx phải không?
 
Upvote 0
Nếu máy tính không có cài Word thì dùng Wordpad như bạn làm. Wordpad nó không code được nên tôi nghĩ chỉ có cách dùng SendKey cho cửa số file Wordpad đang mở để thao tác thôi.
Ví dụ:
JavaScript:
AppActivate filename & " - Wordpad"
    SendKeys "%FA", True
    SendKeys "%TT", True
    SendKeys "%N", True
    SendKeys "test.rtf", True
    SendKeys "%S", True
    SendKeys "Y", True

Bạn ngâm cứu thêm xem sao.
(Nhớ là MS đã khai tử Wordpad rồi mà vẫn dùng à.)
Em cảm ơn anh, để em nghiên cứu áp dụng thử ạ.
Tức là bạn cần chuyển .rtf thành .docx phải không?
Dạ đúng ạ, miễn sao khi kết thúc thì ra kết quả là được 4 trang có định dạng như hình mục (4) của bài #4 anh ạ. Em cảm ơn anh.
 
Upvote 0
(Nhớ là MS đã khai tử Wordpad rồi mà vẫn dùng à.)
Phần mềm cơ quan em xuất ra rất nhiều loại phiếu vật tư, các phiếu khác mở bằng Microsoft Word bình thường không vấn đề gì. Riêng đúng một loại phiếu có mã PO_020 này mới bị trục trặc, em mò mẫm, hì hục mãi không được nên đăng lên đây nhờ các anh chị em trên này giúp đỡ ạ.
 
Upvote 0
Mình thử như thế này thấy kết quả được luôn, không cần chỉnh gì.

1712824051952.png

>> Mở tập tin *.rtf bằng MS Word.
>> Lưu lại ở dạng OpenDocument Text (*.odt)

1712824141962.png

>> Đóng cửa sổ MS Word.
>> Mở tập tin *.odt bằng MS Word (nếu có thông báo gì thì chọn Yes/ OK). Rồi lưu về dạng *.docx.
Kết thúc.
 
Upvote 0
Mình thử như thế này thấy kết quả được luôn, không cần chỉnh gì.

View attachment 300190

>> Mở tập tin *.rtf bằng MS Word.
>> Lưu lại ở dạng OpenDocument Text (*.odt)

View attachment 300191

>> Đóng cửa sổ MS Word.
>> Mở tập tin *.odt bằng MS Word (nếu có thông báo gì thì chọn Yes/ OK). Rồi lưu về dạng *.docx.
Kết thúc.
Em cảm ơn anh nhiều, dù thêm vài bước so với các phai khác (do khách quan đem lại), nhưng kết quả cuối cùng đã đạt được mong muốn rồi anh ạ. Một lần nữa xin cảm ơn anh.
Nếu máy tính không có cài Word thì dùng Wordpad như bạn làm. Wordpad nó không code được nên tôi nghĩ chỉ có cách dùng SendKey cho cửa số file Wordpad đang mở để thao tác thôi.
Ví dụ:
JavaScript:
AppActivate filename & " - Wordpad"
    SendKeys "%FA", True
    SendKeys "%TT", True
    SendKeys "%N", True
    SendKeys "test.rtf", True
    SendKeys "%S", True
    SendKeys "Y", True

Bạn ngâm cứu thêm xem sao.
(Nhớ là MS đã khai tử Wordpad rồi mà vẫn dùng à.)
Em cảm ơn anh ạ. Nhờ có sự hỗ trợ từ anh [B]befaint[/B], em đã đạt được kết quả mong muốn. Bây giờ em đang nghiên cứu tiếp chỗ gợi ý của anh để thêm lựa chọn. Chân thành cảm ơn anh.
 
Upvote 0
Web KT
Back
Top Bottom