In file pdf theo danh sách trong excel (1 người xem)

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

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

VuVanHao

Thành viên thường trực
Tham gia
20/6/18
Bài viết
246
Được thích
118
Em nhờ mọi người giúp đỡ ạ
Em có 2 folder, 1 folder PKN chứa các file pdf, 1 folder còn lại có chứa file excel. Trong file exel có 2 sheet, sheet Data là danh sách mã số theo vị thuốc của em, mã số đó trùng với tên file pdf trong folder PKN. Nhiệm vụ của em là khi yêu cầu in 1 số vị thuốc trong tổng số đó.
Như ví dụ, em cần in 3 vị trong sheet HELP, em vlookup được mã số của vị đó, mã cũng là tên của file pdf ý ạ
Nhờ mọi người chỉ giúp để em in được hàng loạt theo danh sách trong sheet HELP ạ
Vì thực tế là in tầm 150 mã trên tổng số 500 mã ạ
Em cảm ơn!
 

File đính kèm

Em nhờ mọi người giúp đỡ ạ
Em có 2 folder, 1 folder PKN chứa các file pdf, 1 folder còn lại có chứa file excel. Trong file exel có 2 sheet, sheet Data là danh sách mã số theo vị thuốc của em, mã số đó trùng với tên file pdf trong folder PKN. Nhiệm vụ của em là khi yêu cầu in 1 số vị thuốc trong tổng số đó.
Như ví dụ, em cần in 3 vị trong sheet HELP, em vlookup được mã số của vị đó, mã cũng là tên của file pdf ý ạ
Nhờ mọi người chỉ giúp để em in được hàng loạt theo danh sách trong sheet HELP ạ
Vì thực tế là in tầm 150 mã trên tổng số 500 mã ạ
Em cảm ơn!
Bạn mô tả chi tiết hơn về vấn đề cần thực hiện, nêu ví dụ mẫu thực tế.
 
Bạn mô tả chi tiết hơn về vấn đề cần thực hiện, nêu ví dụ mẫu thực tế.
Dạ,
Bước 1: Em có danh sách các vị thuốc cần in, danh sách là các vị ở sheet Help trong file Help_GPE trong folder Data.
Bước 2: Từ danh sách đó, em tìm ra mã của nó dựa vào sheet Data trong file excel đó ạ, mã của nó cũng chính là tên file pdf ở folder PKN mà em muốn in ạ
Bình thường em tìm mã xong rồi vào folder PKN in từng mã 1. Tên file pdf em đánh số để dễ tìm ạ
 
Dạ,
Bước 1: Em có danh sách các vị thuốc cần in, danh sách là các vị ở sheet Help trong file Help_GPE trong folder Data.
Bước 2: Từ danh sách đó, em tìm ra mã của nó dựa vào sheet Data trong file excel đó ạ, mã của nó cũng chính là tên file pdf ở folder PKN mà em muốn in ạ
Bình thường em tìm mã xong rồi vào folder PKN in từng mã 1. Tên file pdf em đánh số để dễ tìm ạ
Vậy mục đích cuối cùng của bạn là gì? muốn in tất cả các file pdf có tên trùng với các mã trong sheet HELP đúng không?
 
Em dùng win 64bit không biết có ảnh hưởng không mà nó báo chữ đỏ dòng này ạ
Public 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
 
Em dùng win 64bit không biết có ảnh hưởng không mà nó báo chữ đỏ dòng này ạ
Public 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
Bạn thử thay dòng đó bằng đoạn code này thử xem sao.
Mã:
#If VBA7 Then
Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As
String, ByVal nShowCmd As Long) As LongPtr
#Else
Public 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
#End If
 
Bạn thử thay dòng đó bằng đoạn code này thử xem sao.
Mã:
#If VBA7 Then
Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As
String, ByVal nShowCmd As Long) As LongPtr
#Else
Public 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
#End If
Nó vẫn báo lỗi anh ạ :(((
 

File đính kèm

  • 12.png
    12.png
    48.7 KB · Đọc: 27
Nó vẫn báo lỗi anh ạ :(((
Bạn sửa lại thế này nè.
Mã:
#If VBA7 Then
    Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
#Else
    Public 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
#End If
 
Bạn sửa lại thế này nè.
Mã:
#If VBA7 Then
    Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
#Else
    Public 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
#End If
Nó lại bị lỗi thế này anh ạ :(((
 

File đính kèm

  • 13.png
    13.png
    39.3 KB · Đọc: 28
Nó lại bị lỗi thế này anh ạ :(((
Sửa lại lần cuối nhé.
Mã:
Option Explicit
#If VBA7 Then
    Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
#Else
    Public 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
#End If
Public Function PrintThisDoc(formname As Long, FileName As String)
On Error Resume Next
Dim X
X = ShellExecute(formname, "Print", FileName, 0&, 0&, 3)
End Function
 
Sub testPrint()
Dim printThis, Arr()
Dim strDir As String
Dim i As Integer
strDir = ThisWorkbook.Path & "\PKN\"
Arr = Sheet2.Range("C2:C" & Sheet2.Range("C65000").End(xlUp).Row).Value
For i = 1 To UBound(Arr)
    printThis = PrintThisDoc(0, strDir & Arr(i, 1) & ".PDF")
Next i
End Sub
 
Sửa lại lần cuối nhé.
Mã:
Option Explicit
#If VBA7 Then
    Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
#Else
    Public 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
#End If
Public Function PrintThisDoc(formname As Long, FileName As String)
On Error Resume Next
Dim X
X = ShellExecute(formname, "Print", FileName, 0&, 0&, 3)
End Function

Sub testPrint()
Dim printThis, Arr()
Dim strDir As String
Dim i As Integer
strDir = ThisWorkbook.Path & "\PKN\"
Arr = Sheet2.Range("C2:C" & Sheet2.Range("C65000").End(xlUp).Row).Value
For i = 1 To UBound(Arr)
    printThis = PrintThisDoc(0, strDir & Arr(i, 1) & ".PDF")
Next i
End Sub
Chuẩn rồi anh ạ
Em cảm ơn ạ
Anh cho em hỏi là cái sub ý nó tìm folder PKN thế nào ạ, em sợ để chỗ khác nó không tìm thấy =))
 
Chuẩn rồi anh ạ
Em cảm ơn ạ
Anh cho em hỏi là cái sub ý nó tìm folder PKN thế nào ạ, em sợ để chỗ khác nó không tìm thấy =))
Sửa testPrint lại chút.
Mã:
Sub testPrint()
Dim printThis, Arr()
Dim strDir As String
Dim i As Integer, chk As Boolean
chk = Application.FileDialog(msoFileDialogFolderPicker).Show
If Not chk Then Exit Sub
strDir = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"
Arr = Sheet2.Range("C2:C" & Sheet2.Range("C65000").End(xlUp).Row).Value
For i = 1 To UBound(Arr)
    printThis = PrintThisDoc(0, strDir & Arr(i, 1) & ".PDF")
Next i
End Sub
 
Sửa testPrint lại chút.
Mã:
Sub testPrint()
Dim printThis, Arr()
Dim strDir As String
Dim i As Integer, chk As Boolean
chk = Application.FileDialog(msoFileDialogFolderPicker).Show
If Not chk Then Exit Sub
strDir = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"
Arr = Sheet2.Range("C2:C" & Sheet2.Range("C65000").End(xlUp).Row).Value
For i = 1 To UBound(Arr)
    printThis = PrintThisDoc(0, strDir & Arr(i, 1) & ".PDF")
Next i
End Sub
Chuẩn chỉ rồi anh ạ
Em cảm ơn!
 
Em là đến bước này mà sao truy cập đến Foder chứa thì nó không hiện ạ 1589873543624.png
 

File đính kèm

  • 1.png
    1.png
    104.6 KB · Đọc: 21
Mình chọn forder PKN rồi [OK], Nó vẫn ko có động tĩnh gì ông ạ, Code mình như này đúng ko ông, thấy có dòng đỏ, Mình thay theo của anh
giaiphap chỉ.
Mình đã test trên office 32 và 64 bit đều ngon cả. Cái đường dẫn đến folder bạn không nên để tiếng việt có dấu nhé
 
Là trong file PDF phải có 2 trang đúng ko ạ
Mình bấm vào nút Print rồi chọn Forder cần chứa ==> OK Sau đó nó ko có động tĩnh gì luôn.
Bạn xem lại:
1. Đường dẫn folder chứa file pdf: Không viết tiếng việt
2. Tên file PDF: Không viết tiếng việt
Thực tế file này mình dùng rất ổn: Trên Win7 & 10, office 10,13,16 cả 32 và 64bit đều ngon cả
 
Em đã làm như hướng dẫn như clip ạ, máy in vẫn không có động tĩnh gì.
- đường dẫn + tên ko có tiếng việt ạ (em lấy file gốc PKN in thử)
 
có cách nào để in theo thứ tự từ trên xuống dưới ko mọi người
 
@senbon Mình dùng nó vẫn bị vậy, có thể do thời gian nhận lệnh của máy in, dó đó mình dùng cách củ chuối là tăng thời gian chờ cho mỗi lệnh in. Code chỉnh như sau:
Mã:
Sub testPrint()
Dim printThis
Dim strDir, Rng As String
Dim m, n, k As Byte
Dim i As Integer, chk As Boolean
With Sheet2
    m = .Range("J1").Value
    n = .Range("J2").Value
End With
chk = Application.FileDialog(msoFileDialogFolderPicker).Show
If Not chk Then Exit Sub
strDir = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"
For i = m To n
    Sheet2.Range("A2") = i
    Rng = Sheet2.Range("B2").Value
    printThis = PrintThisDoc(0, strDir & Rng & ".PDF")
    Application.Wait (Now + TimeValue("00:00:07"))
Next i
End Sub
 
@senbon Mình dùng nó vẫn bị vậy, có thể do thời gian nhận lệnh của máy in, dó đó mình dùng cách củ chuối là tăng thời gian chờ cho mỗi lệnh in. Code chỉnh như sau:
Mã:
Sub testPrint()
Dim printThis
Dim strDir, Rng As String
Dim m, n, k As Byte
Dim i As Integer, chk As Boolean
With Sheet2
    m = .Range("J1").Value
    n = .Range("J2").Value
End With
chk = Application.FileDialog(msoFileDialogFolderPicker).Show
If Not chk Then Exit Sub
strDir = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"
For i = m To n
    Sheet2.Range("A2") = i
    Rng = Sheet2.Range("B2").Value
    printThis = PrintThisDoc(0, strDir & Rng & ".PDF")
    Application.Wait (Now + TimeValue("00:00:07"))
Next i
End Sub
B cho mình xin file excel đang chạy đoạn code của b với, thanks
 
Sửa testPrint lại chút.
Mã:
Sub testPrint()
Dim printThis, Arr()
Dim strDir As String
Dim i As Integer, chk As Boolean
chk = Application.FileDialog(msoFileDialogFolderPicker).Show
If Not chk Then Exit Sub
strDir = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"
Arr = Sheet2.Range("C2:C" & Sheet2.Range("C65000").End(xlUp).Row).Value
For i = 1 To UBound(Arr)
    printThis = PrintThisDoc(0, strDir & Arr(i, 1) & ".PDF")
Next i
End Sub
Anh ơi, nếu Trong folder PNK e chia nhỏ ra từng ngày như này. Đuôi pdf đc định dạng như trong hình ạ. thì nên sửa code lại như thế nào ạ
 

File đính kèm

  • test.png
    test.png
    14.9 KB · Đọc: 15
Mình đã đặt trong thư mục k dấu, nhưng sao bấm in nó khong có động tĩnh gì nhỉ :(
 

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

Back
Top Bottom