In hợp đồng trong word nhưng sử dụng vba để lấy dữ liệu trong listbox excel (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

baohan2006

Thành viên mới
Tham gia
19/10/11
Bài viết
27
Được thích
1
mình định làm một file excel bao gồm 1 listbox và các textbox, mình muốn khi mình click vào hàng nào đó của listbox và bấm nút in hợp đồng thì sẻ mở file word có sẵn và lấy dữ liệu từ hàng listbox được chọn đó để in.
minh mới có ý tưởng vậy thôi, nhưng chưa nghĩ ra cách gì để làm được cả. nếu sử dụng trộn thư trong word thì quá đơn giản, ở đây mình muốn là chọn tên nào thì lấy thông tin ấy và in mà thôi
mong mọi người giúp đỡ giúp.
thanks.
 
Bạn nên gởi 2 cái file mẫu lên đi. Viết code mà phải tưởng tượng thi các anh chị trên diễn đàn không thích vì phải phải sửa lại hoài.
 
Upvote 0
em gửi các anh chị file mẫu em mới làm, em muốn khi chọn vào listbox để chọn danh sách nào đó thì khi bấm vào nút in hợp đồng, sẻ mở file sẵn và lấy dự liệu trong listbox đó và in ra
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạn xem file này mình copy từ diễn đàn, bạn chế biến lại rồi dùng nha
 

File đính kèm

Upvote 0
Mình thấy bài này đã vài bữa, nhưng bận quá không sao được. Nay tranh thủ tham gia với bạn 1 chút. Mình tham gia nên dùng Textbox để đặt dữ liệu. Minh làm tạm vùng đầu Hợp đồng, bạn hoàn thiện nốt nha.
Lưu ý: Dạng file này phải tải về ổ máy mới chạy được.
 

File đính kèm

Upvote 0
Bài giải thật hay và thật hữu ích. Mình đã tìm đề tài này lâu rồi nay mới gặp. Xin cảm ơn bạn Sealand
 
Upvote 0
thanks bạn nhiều. mình mới đi học về nên dạo trước không có thời gian lên diễn đàn.
mình đã đọc file bạn gửi, nhưng cho mình hỏi thêm, phần bên word làm thế nào để tạo thêm các text liên kết như phần đầu bạn làm, mình mò cả buổi mà không được, mong bạn giúp mình
 
Upvote 0
Các bạn có thể hướng dẫn mình sử dụng được không?
 
Upvote 0
Mail merge thì bất tiện cái thông báo liên kết và mỗi lần thì phải vào thẻ mail merge để chọn bản in như vậy rất mất thời gian. Và một hạn chế nữa là mỗi khi qua máy khác là phải tạo đường dẫn lại từ đầu.
Cái thông báo liên kết thì mình đã giải quyết đc rùi, kể cả muốn in khách hàng nào thì cũng giải quyết được ko cần vào thẻ Mail merge để chọn nhưng còn mỗi khi qua máy tính khác là phải tạo lại đường dẫn là chưa làm đc!
 
Upvote 0
Mình thấy bài này đã vài bữa, nhưng bận quá không sao được. Nay tranh thủ tham gia với bạn 1 chút. Mình tham gia nên dùng Textbox để đặt dữ liệu. Minh làm tạm vùng đầu Hợp đồng, bạn hoàn thiện nốt nha.
Lưu ý: Dạng file này phải tải về ổ máy mới chạy được.
Anh sealand có thể hướng dẫn chi tiết hơn được không? Để em có thể sử dụng và thay đổi thêm bớt các text Box ứng dụng trong công việc của em. Xin cảm ơn anh nhiều!
 
Upvote 0
Bạn vào file word chạy macro chứa trong đó bạn sẽ hiểu ngay thui.
Bạn thông cảm, mình hơi gà, xem rồi nhưng vẫn chưa hiểu, giài thích và hướng dẫn chi tiết giùm mình đi. Cả bên excel nữa, ví dụ mình muốn thêm vài cột thông tin như SDT, Email.... thì làm như thế nào?
Xin cảm ơn nhiều!
 
Upvote 0
Ai biết làm ơn chỉ giúp chi tiết một chút, xin cảm ơn nhiều!
 
Upvote 0
sao không thấy ai hướng dẫn tiếp nhỉ.
 
Upvote 0
Muốn làm được bài này trước tiên phải tạo 1 file word với 1 tên bất kỳ.
Tiếp theo là tạo ra những textbox cần đủ cho công viêc
Sau đó chạy marco này để định vị cho các textbox
PHP:
Sub taotb()
Dim Dc As Document, i
Dim Sh As Shape
Set Dc = ThisDocument
For Each Sh In Dc.Shapes
    i = i + 1
    Sh.TextFrame.TextRange.Text = Sh.Name
    Sh.Name = "Tb" & i
Next
MsgBox "Done"
End Sub

Sau đó sắp xếp những TB này vào nơi phù hợp trên văn bản
Tiếp theo là tạo 1 userform1
Sau đó tạo code này để nạp dữ liêu khi khởi động userform1

PHP:
Private Sub UserForm_Initialize()
Dim ds As Worksheet
Set ds = Sheets("DS")
Me.ListBox1.RowSource = ds.Range(ds.[A2], ds.[A65536].End(3)).Resize(, 9).Address
End Sub

Tiếp theo là tao 1 listbox1 cho userform1 để nạp dữ liệu vào khi khởi động
Sau đó ta tạo 2 nút command trên userform1 này, 1 nút để in và 1 nút để thoát
Trong nút thoát ta nhập code như sau:
PHP:
Private Sub CommandButton1_Click()
Unload Me
End Sub

Trong nút in ta tạo những dòng code sau đây,giả sử file word tên là hopdonglaodong nha.

PHP:
Private Sub CommandButton2_Click()
Dim Dc As Object, Hd As Object, i
On Error Resume Next
Set Dc = CreateObject("Word.Application")
Dc.Visible = True
Dc.Documents("\Hopdonglaodong.doc").Close
Set Hd = Dc.Documents.Open(ThisWorkbook.Path & "\Hopdonglaodong.doc")
For i = 1 To 9
    Hd.Shapes("Tb" & i).TextFrame.TextRange.Text = Me.ListBox1.Column(i - 1)
Next
Set Dc = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Như các bạn đã thấy, từ đầu năm đến giờ mình có việc riêng rất bận nên ít tham gia với anh em được. Mỗi khi đọc câu hỏi có liên quan bài viết của mình lại càng sốt ruột. Mong anh em hếtb sức thông cảm cho.

Nay thấy vấn đề này có nhiều bạn quan tâm, nhưng khó sử lý. Vậy mình viết file này giúp các bạn:
-Tuỳ ý muốn thêm nội dung gì về công ty bằng cách thêm 1 dòng tại sheet Cty, code sẽ thêm cho các bạn 1 Textbox trên hợp đồng với tên theo cột A và khi in sẽ lấy theo ô tương ứng trên cột B. Nhóm này đặt tại lề trái.
-Tuỳ ý muốn thêm 1 Textbox nào đó về thông tin người LD hay nội dung HD bạn thêm 1 cột trên sheet DS và code sẽ tạo 1 Textbox có tên theo tiêu đề trên dòng 1 đặt tại nhóm trên lề phải. Khi in sẽ điền dòng tương ứng trên cột.

Các bạn dùng chuột , bàn phím để định dạng và di chuyển về đúng vị trí của nó rồi lưu lại. Nếu muốn di chuyển thật nhỏ, chính xác bạn chọn Textbox , giữ Ctrl và dung phím mũi tên để di chuyển.

Các bạn thử xem sao
 

File đính kèm

Upvote 0
Quá tuyệt vời. Đây là giải pháp khắc phục vụ vật lộn in ấn của em với Excel.
Mặc em dù đã giải quyết được ngay trên excel nhưng thực sự giải pháp này quá hay và đơn giản.
 
Upvote 0
Hôm nay xem lại thấy câu trả lời rất hay.Thank
 
Upvote 0
Web KT

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

Back
Top Bottom