điều khiển word từ excel

  • Thread starter Thread starter lotomo
  • Ngày gửi Ngày gửi
Liên hệ QC

lotomo

Thành viên mới
Tham gia
2/8/07
Bài viết
10
Được thích
0
Tôi có tìm hiểu một số đề tài liên quan đến việc điều khiển word từ excel trên diễn đàn này. Tuy nhiên tôi vẫn chưa thấy có bài nào nêu lên đầy đủ các vấn đề mà tôi cần.
Ví dụ tôi cần mở một file word từ exel (file có sẵn), rồi chạy 1 macro của file word này thì phải làm thế nào? (nếu dùng hàm shell thì chỉ có thể mở ms.word thôi, hoặc dùng hàm CreateObject thì chỉ có thể tạo một file word mới)
Mong các bạn chỉ giúp.
 
Theo tôi nghi bạn thử dùng hàm run xem sao?

Application.Run "'My Document.doc'!ThisModule.ThisProcedure"

không biết nó chạy được bên word không ?

Nếu không được thì chuyển qua word rồi chạy marco luôn.

Hoặc để marco tự động chạy khi mở word.
 
Upvote 0
Tôi có tìm hiểu một số đề tài liên quan đến việc điều khiển word từ excel trên diễn đàn này. Tuy nhiên tôi vẫn chưa thấy có bài nào nêu lên đầy đủ các vấn đề mà tôi cần.
Ví dụ tôi cần mở một file word từ exel (file có sẵn), rồi chạy 1 macro của file word này thì phải làm thế nào? (nếu dùng hàm shell thì chỉ có thể mở ms.word thôi, hoặc dùng hàm CreateObject thì chỉ có thể tạo một file word mới)
Mong các bạn chỉ giúp.

Mấu chốt vấn đề là từ excel mở một file Word thôi đúng không bạn?. Vì khi mở file Word được rồi, thì muốn chạy Macro gì thì gán cho nó vào sự kiện File Word đó Open (giống như trong excel, xử lý sự kiện Worksheet_Open vậy). Vì khi đó cái Application nào thì thuộc quyền điều khiển của Application đó. Hàm nội tại trong Word có xử lý việc này mà.

Tóm lại quan trọng là mở được file Word từ excel. Mà vấn đề này mình nghĩ bạn làm được rồi! Vậy ý bạn như thế nào, điều khiển Word cụ thể như thế nào? bạn nói rõ thêm được không?
 
Upvote 0
cám ơn bạn ca_dafi, bạn đã hiểu đúng ý tôi, nhưng thực ra tôi lại chưa biết cách nào mở một file word đã có sẵn từ exel, mong bạn chỉ giúp
 
Upvote 0
cám ơn bạn ca_dafi, bạn đã hiểu đúng ý tôi, nhưng thực ra tôi lại chưa biết cách nào mở một file word đã có sẵn từ exel, mong bạn chỉ giúp
1/ Bạn dùng hàm Shell là đúng rồi
2/ Đây là câu lệnh trong Excel để mở file Word có tên là "Lotomo.doc" trong thư mục GPE của ổ đĩa D (Dùng Ofice 2003, nếu dùng Off khác thì tay số 11 cho phù hợp)
3/ Bạn có thể vận dụng câu lệnh này cho các trường hợp khác và trong các chương trình có sử dụng mã lệnh VB
PHP:
Sub MoFW()
        Dim a
        a = Shell("C:\Program Files\Microsoft Office\Office11\Winword.exe D:\GPE\Lotomo.doc", vbNormalFocus)
End Sub

Lưu ý : Giữa chữ exe và D có khoảng trắng
 
Lần chỉnh sửa cuối:
Upvote 0
à, thì ra tôi quên k ghi đường dẫn mở file winword.exe trước.
Cám ơn bạn rất nhiều
 
Upvote 0
1/ Bạn dùng hàm Shell là đúng rồi
2/ Đây là câu lệnh trong Excel để mở file Word có tên là "Lotomo.doc" trong thư mục GPE của ổ đĩa D (Dùng Ofice 2003, nếu dùng Off khác thì tay số 11 cho phù hợp)
3/ Bạn có thể vận dụng câu lệnh này cho các trường hợp khác và trong các chương trình có sử dụng mã lệnh VB
PHP:
Sub MoFW()
        Dim a
        a = Shell("C:\Program Files\Microsoft Office\Office11\Winword.exe D:\GPE\Lotomo.doc", vbNormalFocus)
End Sub

Lưu ý : Giữa chữ exe và D có khoảng trắng

Chủ đề này tuy đã lâu nhưng mình thấy cũng hay! Mình cũng đã thử làm như bạn hướng dẫn nhưng file Word mình cần mở vẫn ko lên nó chỉ khởi động MSWord rồi đứng im luôn! Sau khi mình dò nhiều lần thì phát hiện rằng chỉ mở được file khi đường dẫn (kể cả tên Folder) và tên file phải ko có khoảng trắng!
Hiện nay mình cũng đang đau đầu vì vụ này! có ai biết cách nào khắc phục ko! (đừng nói mình phải xoá các khoảng trắng đi nha! bất tiện lắm)
 
Upvote 0
Chủ đề này tuy đã lâu nhưng mình thấy cũng hay! Mình cũng đã thử làm như bạn hướng dẫn nhưng file Word mình cần mở vẫn ko lên nó chỉ khởi động MSWord rồi đứng im luôn! Sau khi mình dò nhiều lần thì phát hiện rằng chỉ mở được file khi đường dẫn (kể cả tên Folder) và tên file phải ko có khoảng trắng!
Hiện nay mình cũng đang đau đầu vì vụ này! có ai biết cách nào khắc phục ko! (đừng nói mình phải xoá các khoảng trắng đi nha! bất tiện lắm)
Để mở 1 file Word có sẵn từ file Excel bạn có thể sử dụng hàm Hyperlink(), cách sử dụng hàm này thì tham khảo trên diễn đàn nhé!
 
Upvote 0
Để mở 1 file Word có sẵn từ file Excel bạn có thể sử dụng hàm Hyperlink(), cách sử dụng hàm này thì tham khảo trên diễn đàn nhé!

Cách của bạn mình nghĩ là chỉ sử dụng khi người dùng tác động vào một đối tượng đã được gán Hyperlink thì nó mới thực hiện thôi đúng ko bạn! ở đây là mình muốn nó tự động mở file word khi có một sự kiện xảy ra và có khi không phải là 1 file nữa mà là mở lần lượt nhiều file!
+-+-+-+ Không biết là mình có đòi hỏi quá đáng ko! hihihi! Các cao thủ nào có lòng vào cho thêm ý với! :-=
 
Upvote 0
Mình có cách này làm cũng được

Sub Baocao()
' Mo chuong trinh MS.Word
Set wrdApp = GetObject(, "Word.Application")
Set wrdApp = CreateObject("Word.Application")
Set wrdDoc = wrdApp.Documents.Open("C:\Program Files\Microsoft Office\OFFICE11")
End sub

Mình cũng đang nghiên cứu về vấn đề này. Mình đang mắc ở 1 chỗ là mình đã có 1 văn bản mẫu sẵn với nội dung phần 1 không cần thay đổi, phần 2 thay đổi với việc chèn các giá trị là các biến trong vba vào giữa các câu. Mình chưa biết phải làm tiếp như thế nào? Các cao thủ xin chỉ giúp mình với. Cám ơn nhé.
 
Upvote 0
Đây là ví dụ mở Word và mở file doc:

Sub CreateNewWordDoc()
' to test this code, paste it into an Excel module
' add a reference to the Word-library
' create a new folder named C:\Foldername or edit the filnames in the code
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Dim i As Integer
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Add ' create a new document
' or
'Set wrdDoc = wrdApp.Documents.Open("C:\Foldername\Filename.doc")
' open an existing document
' example word operations
With wrdDoc
For i = 1 To 100
.Content.InsertAfter "Here is a example test line #" & i
.Content.InsertParagraphAfter
Next i
If Dir("C:\Foldername\MyNewWordDoc.doc") <> "" Then
Kill "C:\Foldername\MyNewWordDoc.doc"
End If
.SaveAs ("C:\Foldername\MyNewWordDoc.doc")
.Close ' close the document
End With
wrdApp.Quit ' close the Word application
Set wrdDoc = Nothing
Set wrdApp = Nothing
End Sub

Chi tiết xem ở đây:

http://www.exceltip.com/show_tip/Ap...m_Excel_using_VBA_in_Microsoft_Excel/465.html
 
Upvote 0
Cám ơn PhanTuHuong rất nhiều, tôi đã mở được file word rồi nhưng mà cái mình cần là đang muốn chèn các giá trị mình tính bằng các hàm số tự động bên trên được lưu vào các biến số vào giữa các câu. Mình đang nghiên cứu sử dụng câu lệnh này nhưng chưa biết phải chèn vào giữa các câu như thế nào. Nếu có thể bạn chỉ thêm cho mình với, cám ơn rất nhiều.

With wrdDoc
.Content.InsertBefore (Giá trị chèn vào word)
.Content.InsertParagraphBefore
End With
 
Upvote 0
Web KT

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

Back
Top Bottom