Tạo CommandButton mở file văn bản của MS Word

Liên hệ QC

khoa_pr

Thành viên hoạt động
Tham gia
16/6/09
Bài viết
141
Được thích
13
Tôi có một file Tinhdiem.xls, trên đó tôi tạo một CommandButton tên Hướng dẫn sử dụng, file Huong dan su dung.doc là file của MS.Word. Tất cả nằm trong thư mục Sodiemgv. Mong mọi người giúp đỡ cách viết code trong 2 trường hợp sau:
1/ Nếu để thư mục Sodiemgv trong ổ đĩa C:\Sodiemgv, thì khi nhấn nút Hướng dẫn sử dụng thì mở file Huong dan su dung.doc .
2/ Làm thế nào để viết code VBA cho CommandButton tên Hướng dẫn sử dụng, khi chép thư mục Sodiemgv ở bất kỳ ổ đĩa nào (không mặc định ở ổ đĩa C:\), kể cả trên USB, khi nhấn CommandButton Hướng dẫn sử dụng, thì mở file Huong dan su dung.doc , nếu không có file Huong dan su dung.doc thì hiện thông báo "không tìm hấy file Huong dan su dung.doc "
Xin cám ơn.
 
File excel Tinhdiem.xls có nằm chung trong thư mục Sodiemgv hay không vậy bạn?
 
Upvote 0
Tinhdiem.xls cùng với file Huong dan su dung.doc nằm chung trong thư mục Sodiemgv.
PHP:
Sub HuongDan_Click()
    Dim WordTen, WordTL As String
    Dim ofjWord As Word.Document
    WordTL = ThisWorkbook.Path & "\HuongDan.doc"
    WordTen = TimFile(WordTL)
    Set ofjWord = GetObject(WordTL)
    ofjWord.Application.Windows(WordTen).Visible = True
    Set ofjWord = Nothing
End Sub

PHP:
Function TimFile(Ten As String)
    Ten = Trim(Ten)
    n = Len(Ten)
    For i = n To 1 Step -1
        DauCach = Mid(Ten, i, 1)
        If DauCach = "\" Then Exit For
    Next
    TimFile = Right(Ten, n - i)
End Function

Bạn chép code HuongDan_Click vào sự kiện click của commandbuton trong file Excel của bạn và chép code TimFile vào một modul trong file excel của bạn
 
Lần chỉnh sửa cuối:
Upvote 0
Tốt nhất là bạn dùng chức năng Hyperlink. Click chuột phải, sau đó chọn đường dẫn đến file word cần tìm. nếu sau nay vì 1 lý do nào đó file word đó mất thì nó tự động không cập nhật, khỏi phải dùng code cho rườm rà.
 
Upvote 0
Chức năng Hyperlink thì quá dễ rồi bạn ạ! ở đây chúng ta cần nghiên cứu và học hỏi về lập trình. Do đó khi bí thì phải hỏi để mọi người giúp đỡ chứ.
 
Upvote 0
Tinhdiem.xls cùng với file Huong dan su dung.doc nằm chung trong thư mục Sodiemgv.
Thử code này xem:
[highlight=vb]
Sub MoFile()
MyFile = Shell("C:\Program Files\Microsoft Office\Office11\WinWord.exe " & _
ThisWorkbook.Path & "\HuongDan.doc", vbNormalFocus)
End Sub
[/highlight]
 
Upvote 0
Lỗi của code

PHP:
Sub HuongDan_Click()
    Dim WordTen, WordTL As String
    Dim ofjWord As Word.Document
    WordTL = ThisWorkbook.Path & "\HuongDan.doc"
    WordTen = TimFile(WordTL)
    Set ofjWord = GetObject(WordTL)
    ofjWord.Application.Windows(WordTen).Visible = True
    Set ofjWord = Nothing
. . . . . .
End Function
Bạn chép code HuongDan_Click vào sự kiện click của commandbuton trong file Excel của bạn và chép code TimFile vào một modul trong file excel của bạn

Chào bạn MinhNguyệt!
sau khi chép đoạn code của bạn và chạy thử, thì bị báo lỗi: Compier error: User-defined type not defined. Mình nghĩ nó báo lỗi từ đoạn code này: Dim ofjWord As Word.Document
Bạn hãy xem thử nhé.
 
Lần chỉnh sửa cuối:
Upvote 0
À mình quên, còn cái vụ nếu không tìm thấy file Word đó thì hiện ra một thông báo nữa! Bạn xem code này nha:

[highlight=vb]
Sub MoFile()
Dim MyFile As String: MyFile = ThisWorkbook.Path & "\HuongDan.doc"
If Dir(MyFile) <> "" Then
MyFile = Shell("C:\Program Files\Microsoft Office\Office11\WinWord.exe " & MyFile, vbNormalFocus)
Else: MsgBox "Khong Tim Thay File Huong dan"
End If
End Sub
[/highlight]Khuyến mãi: :yeah: Các câu lệnh, thủ tục thông dụng liên quan đến File, Workbook, Worksheet
 
Lần chỉnh sửa cuối:
Upvote 0
Chào bạn MinhNguyệt!
sau khi chép đoạn code của bạn và chạy thử, thì bị báo lỗi: Compier error: User-defined type not defined. Mình nghĩ nó báo lỗi từ đoạn code này: Dim ofjWord As Word.Document
Bạn hãy xem thử nhé.

Sory vì quên không dặn bạn. Trong cửa sổ của VBE, bạn vào Tools/References Chọn Microsof Word 11 Object Libary
Thân
 
Upvote 0
Sory vì quên không dặn bạn. Trong cửa sổ của VBE, bạn vào Tools/References Chọn Microsof Word 11 Object Libary
Thân
Mở 1 ứng dụng Office thôi thì theo mình nghĩ không cần phải khai báo biến nhiều đến thế! Chỉ cần dùng hàm Shell là đủ rồi! Phú hôn!?
 
Upvote 0
Bạn cadifi ơi!
Mình đã chép code của bạn và chạy thử nhưng Word báo không tìm thấy đường dẫn. Mình xin nói rõ lại ý đồ của minh: File Tinhdiem.xlsHuong dan.doc cùng nằm trong thư mục Sodiemgv. mình muốn dù thư mục Sodiemgv để ơ ổ đĩa nào bất kỳ (C:\Sodiemgv ;D:\Sodiemgv hoặc cả trên ổ đĩa USB) thì khi nhấn commandButton Hướng dẫn sử dụng thì sẽ mở file Huong dan.doc .
Rất mong mọi người giúp đỡ.
 
Upvote 0
Bạn cadifi ơi!
Mình đã chép code của bạn và chạy thử nhưng Word báo không tìm thấy đường dẫn. Mình xin nói rõ lại ý đồ của minh: File Tinhdiem.xlsHuong dan.doc cùng nằm trong thư mục Sodiemgv. mình muốn dù thư mục Sodiemgv để ơ ổ đĩa nào bất kỳ (C:\Sodiemgv ;D:\Sodiemgv hoặc cả trên ổ đĩa USB) thì khi nhấn commandButton Hướng dẫn sử dụng thì sẽ mở file Huong dan.doc .
Rất mong mọi người giúp đỡ.
Bạn xem xét lại tên file xem có đúng hay chưa. Trong code mình nêu bên dưới
Sub MoFile()
Dim MyFile As String: MyFile = ThisWorkbook.Path & "\HuongDan.doc"
If Dir(MyFile) <> "" Then
MyFile = Shell("C:\Program Files\Microsoft Office\Office11\WinWord.exe " & MyFile, vbNormalFocus)
Else: MsgBox "Khong Tim Thay File Huong dan"
End If
End Sub
Chữ màu xanh dương in đậm chính là tên file. Để ý thấy bạn để tên file là "Huong Dan.doc" chứ không phải là "Huongdan.doc".
bạn xem kỹ lại một lần nữa đi.
 
Upvote 0
Thêm vài đoạn code để bạn tham khảo
Mã:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub huongdan()
    On Error Resume Next
    ShellExecute 0, "Open", ThisWorkbook.Path & "\HuongDan.doc", "", "", 1
End Sub
Hoặc
Mã:
Sub huongdan()
    On Error Resume Next
    ActiveWorkbook.FollowHyperlink (ThisWorkbook.Path & "\HuongDan.doc"), NewWindow:=True
End Sub
 
Upvote 0
Bạn xem xét lại tên file xem có đúng hay chưa. Trong code mình nêu bên dưới
Chữ màu xanh dương in đậm chính là tên file. Để ý thấy bạn để tên file là "Huong Dan.doc" chứ không phải là "Huongdan.doc".
bạn xem kỹ lại một lần nữa đi.

File hướng dẫn của mình là Huong dan.doc, chữ d thường, Huong cách 1 khoảng trắng và dan. Bạn để HuongDan kề nhau và chữ D là chữ IN. Minh đã chỉnh cho tên của file Hướng dẫn trùng với tên file Huong dan.doc của mình nhưng cũng không được, chỉnh lai tên file HuongDan.doc trùng với tên file trong code của bạn cũng như thế.
 
Upvote 0
Web KT

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

Back
Top Bottom