Xin code in file.Txt va file.Doc bằng VBA

Liên hệ QC

sony18102012

Thành viên mới
Tham gia
6/9/17
Bài viết
22
Được thích
4
Giới tính
Nam
Xin chào các Anh/Chị

Do mình mới tập tành vào VBA nhờ anh chi hỗ trợ minh đoạn code cho việc in file.txt và file.doc

Hiện tại mình có đoạn code in file.pdf

With CreateObject("Shell.Application")
.Namespace(0).ParseName(WsDaTa1.Range("M" & i)).InvokeVerb ("Print")
End With


Cám ơn
 
Lần chỉnh sửa cuối:
Mong anh chị giúp mình !
 
Nếu code in tập tin PDF thì chả lý gì lại không in TXT và DOC. Làm gì có phân biệt chủng tộc, phân biệt đối xử ở đây.

Nhìn đoạn code khiêm tốn thì đoán là trong cột M của sheet hoạt động mỗi ô có giá trị là đường dẫn đầy đủ tới tập tin PDF, TXT hoặc DOC. Nhưng chỉ là đoám mò thôi. Thay vì ỉ ôi "Mong anh chị giúp mình" thì tốt hơn là đính kèm tập tin và mô tả cụ thể hơn.

Thói quen không mô tả kỹ và chỉ đính kèm một đoạn nhỏ code hoặc ảnh là thói quen xấu. Nhưng thích thế thì chờ ai kiên nhẫn thôi.
 
Nếu code in tập tin PDF thì chả lý gì lại không in TXT và DOC. Làm gì có phân biệt chủng tộc, phân biệt đối xử ở đây.

Nhìn đoạn code khiêm tốn thì đoán là trong cột M của sheet hoạt động mỗi ô có giá trị là đường dẫn đầy đủ tới tập tin PDF, TXT hoặc DOC. Nhưng chỉ là đoám mò thôi. Thay vì ỉ ôi "Mong anh chị giúp mình" thì tốt hơn là đính kèm tập tin và mô tả cụ thể hơn.

Thói quen không mô tả kỹ và chỉ đính kèm một đoạn nhỏ code hoặc ảnh là thói quen xấu. Nhưng thích thế thì chờ ai kiên nhẫn thôi.
Cám ơn bạn, Mình cứ tưởng là nó phân biệt và đã in được.

Tiện thể cho mình hỏi thêm.
Mình có filename Y:\DEPT\INVOICING\PO\ach-12v35_5656846.pdf
Nhưng mình chỉ có dữ liệu là : 12v35 mình không thể in bằng đoạn code trên.
Mong bạn giúp đỡ !
 
Cám ơn bạn, Mình cứ tưởng là nó phân biệt và đã in được.

Tiện thể cho mình hỏi thêm.
Mình có filename Y:\DEPT\INVOICING\PO\ach-12v35_5656846.pdf
Nhưng mình chỉ có dữ liệu là : 12v35 mình không thể in bằng đoạn code trên.
Mong bạn giúp đỡ !
Có vài câu hỏi, mỗi câu 100 điểm.
1. Thế nếu tôi có nhiều tập tin PDF cùng chứa đoạn "12v35" thì bạn có biết tôi định in tập tin nào không?
Vd. tôi có 2 tập tin chứa 12v35. Bạn biết tôi mốn in tập tin nào?
Y:\DEPT\INVOICING\PO\ach-12v35_5656846.pdf
Y:\DEPT\INVOICING\PO\ach-12v35_5656847.pdf

2. Do bạn có thể còn muốn in cả TXT, DOC như trongchủ đề này nên có thêm câu hỏi: Vd. tôi có

Y:\DEPT\INVOICING\PO\ach-12v35_5656846.pdf
Y:\DEPT\INVOICING\PO\ach-12v35_5656846.txt
Y:\DEPT\INVOICING\PO\ach-12v35_5656846.doc

Và tôi chỉ có "12v35". Bạn có biết tôi muốn in tập tin nào không?

Thánh cũng bó tay chứ nói gì đến bạn, đến code.

Nếu bạn muốn in PDF và chỉ có "12v35" thì vd.
Mã:
Sub test()
Dim path As String, filename As String
    path = ThisWorkbook.Worksheets("Sheet1").Range("H1").Value  ' gia su duong dan toi thu muc (co "\" o cuoi) duoc nhap o H1
  
    filename = path & "*-" & "12v35" & "_*." & "pdf"         ' duong dan day du can kiem tra
    filename = Dir(filename)    ' chi ten tap tin neu ton tai
    If filename <> "" Then
        With CreateObject("Shell.Application")
            .Namespace(0).ParseName(path & filename).InvokeVerb ("Print")
        End With
    End If
End Sub

Lưu ý:
- code trên chỉ là ví dụ, tự chỉnh sửa cho phù hợp với nhu cầu của mình. Nếu không biết chỉnh sửa thì phải đínhkèm tập tin và mô tả kỹ.
- đường dẫn tới thư mục chứa các tập tin phải nhập vào H1 của sheet Sheet1. Thay "Sheet1" bằng tên sheet của mình (tên ngoài trang tính chứ không phải tên trong VBE). Hoặc sửa thành path = WsDaTa1.Range("H1").Value. Tức phải có vd.
H1 = Y:\DEPT\INVOICING\PO\ (có ký tự \ ở cuối)
- nếu có nhiều PDF cùng chứa đoạn "12v35" thì tập tin khớp đầu tiên sẽ được in.
- Do code dùng hàm DIR nên đường dẫn tới tập tin không được phép có ký tự unicode, vd. ký tự Việt.

Vấn đề in toàn bộ các tập tin trong một thư mục nào đó thì lại là vấn đề HOÀN TOÀN khác. Tìm tất cả rồi in lần lượt thôi. Code tìm tất cả các tập tin trong thư mục thì có đầy trên GPE, miễn hỏi.
 
Lần chỉnh sửa cuối:
Có vài câu hỏi, mỗi câu 100 điểm.
1. Thế nếu tôi có nhiều tập tin PDF cùng chứa đoạn "12v35" thì bạn có biết tôi định in tập tin nào không?
Vd. tôi có 2 tập tin chứa 12v35. Bạn biết tôi mốn in tập tin nào?
Y:\DEPT\INVOICING\PO\ach-12v35_5656846.pdf
Y:\DEPT\INVOICING\PO\ach-12v35_5656847.pdf

2. Do bạn có thể còn muốn in cả TXT, DOC như trongchủ đề này nên có thêm câu hỏi: Vd. tôi có

Y:\DEPT\INVOICING\PO\ach-12v35_5656846.pdf
Y:\DEPT\INVOICING\PO\ach-12v35_5656846.txt
Y:\DEPT\INVOICING\PO\ach-12v35_5656846.doc

Và tôi chỉ có "12v35". Bạn có biết tôi muốn in tập tin nào không?

Thánh cũng bó tay chứ nói gì đến bạn, đến code.

Nếu bạn muốn in PDF và chỉ có "12v35" thì vd.
Mã:
Sub test()
Dim path As String, filename As String
    path = ThisWorkbook.Worksheets("Sheet1").Range("H1").Value  ' gia su duong dan toi thu muc (co "\" o cuoi) duoc nhap o H1
 
    filename = path & "*-" & "12v35" & "_*." & "pdf"         ' duong dan day du can kiem tra
    filename = Dir(filename)    ' chi ten tap tin neu ton tai
    If filename <> "" Then
        With CreateObject("Shell.Application")
            .Namespace(0).ParseName(path & filename).InvokeVerb ("Print")
        End With
    End If
End Sub

Lưu ý:
- code trên chỉ là ví dụ, tự chỉnh sửa cho phù hợp với nhu cầu của mình. Nếu không biết chỉnh sửa thì phải đínhkèm tập tin và mô tả kỹ.
- đường dẫn tới thư mục chứa các tập tin phải nhập vào H1 của sheet Sheet1. Thay "Sheet1" bằng tên sheet của mình (tên ngoài trang tính chứ không phải tên trong VBE). Hoặc sửa thành path = WsDaTa1.Range("H1").Value. Tức phải có vd.
H1 = Y:\DEPT\INVOICING\PO\ (có ký tự \ ở cuối)
- nếu có nhiều PDF cùng chứa đoạn "12v35" thì tập tin khớp đầu tiên sẽ được in.
- Do code dùng hàm DIR nên đường dẫn tới tập tin không được phép có ký tự unicode, vd. ký tự Việt.

Vấn đề in toàn bộ các tập tin trong một thư mục nào đó thì lại là vấn đề HOÀN TOÀN khác. Tìm tất cả rồi in lần lượt thôi. Code tìm tất cả các tập tin trong thư mục thì có đầy trên GPE, miễn hỏi.
Thật sự rất chi tiết. Chúc bạn năm mới hạnh phúc và thành công trong công việc. Cám ơn bạn rất nhiều!
 
Web KT
Back
Top Bottom