Hỗ trợ in hàng loạt tập PDF

Liên hệ QC
Status
Không mở trả lời sau này.

dinhduy

Thành viên hoạt động
Tham gia
24/11/07
Bài viết
153
Được thích
68
Em chào mọi người ah!
Hiện nay, các Công ty đều dùng Hóa đơn Điện tử. Công việc đến kỳ kê khai tháng (quý) in hàng loạt hóa đơn (File PDF) trong Thư Mục đó ra. Công việc lặp đi, lặp lại và số lượng hóa đơn khá nhiều. Nhờ mọi người hỗ trợ viết giúp với ah.
Em rất cần sự giúp đỡ của mọi người. Cám ơn rất nhiều!
 
Viết cái gì?
1. dùng windows explorer mở folder
2. bên góc search (gõ trên, bên phải), gõ *.pdf
3. chọn hết các files.
4. click chuột phải
5. chọn print
Mỗi tháng làm một lần có gì đâu là khó mà phải viết code.

Đừng nói với tôi là muốn "tự động" cho nó xịn nghe. Cái này muốn xịn thì dùng PowerShell chứ code VBA chỉ là đồ chơi con nít.
 
Upvote 0
Viết cái gì?
1. dùng windows explorer mở folder
2. bên góc search (gõ trên, bên phải), gõ *.pdf
3. chọn hết các files.
4. click chuột phải
5. chọn print
Mỗi tháng làm một lần có gì đâu là khó mà phải viết code.

Đừng nói với tôi là muốn "tự động" cho nó xịn nghe. Cái này muốn xịn thì dùng PowerShell chứ code VBA chỉ là đồ chơi con nít.
Theo em biết thì window giới hạn 15 flie pdf in cùng một lúc, vượt quá con số đó thì dòng print sẽ biến mất không in được
 
Upvote 0
Theo em biết thì window giới hạn 15 flie pdf in cùng một lúc, vượt quá con số đó thì dòng print sẽ biến mất không in được
Vậy mỗi lần in 15 files. Cứ cho là cỡ 200 files đi, thì cũng ấn chuột mấy cái thôi à. Chưa tới 1 phút.

Mà tầm cỡ 200 hóa đơn thì không phải dạng vừa rồi. Tiền để đâu cho hết, vậy mà lại phải lo lắng in mấy tờ giấy thì hơi vô lý.
 
Upvote 0
Em chào mọi người ah!
Hiện nay, các Công ty đều dùng Hóa đơn Điện tử. Công việc đến kỳ kê khai tháng (quý) in hàng loạt hóa đơn (File PDF) trong Thư Mục đó ra. Công việc lặp đi, lặp lại và số lượng hóa đơn khá nhiều. Nhờ mọi người hỗ trợ viết giúp với ah.
Em rất cần sự giúp đỡ của mọi người. Cám ơn rất nhiều!
Bỏ chung file pdf vào 1 folder rồi thử code dưới đây (không tính folder con):
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

Sub PrintFiles()
Dim oFile As Object, I As Long, oPath As String
With Application.FileDialog(msoFileDialogFolderPicker)
    If Not .Show Then Exit Sub
    oPath = .SelectedItems(1)
    With CreateObject("Scripting.FileSystemObject")
        For Each oFile In .GetFolder(oPath).Files
            If .GetExtensionName(oFile.Name) = "pdf" Then
                ShellExecute Application.hwnd, "print", oFile.Path, 0&, 0&, 0&
                I = I + 1
            End If
        Next
    End With
End With
MsgBox "Da in " & I & " file Pdf"
End Sub
 
Upvote 0
Vậy mỗi lần in 15 files. Cứ cho là cỡ 200 files đi, thì cũng ấn chuột mấy cái thôi à. Chưa tới 1 phút.

Mà tầm cỡ 200 hóa đơn thì không phải dạng vừa rồi. Tiền để đâu cho hết, vậy mà lại phải lo lắng in mấy tờ giấy thì hơi vô lý.
Chính vì tiền để đâu cho hết mới cần phải làm một hơi in ra cả đống cho nó xứng. Làm từng chập có khi bị chê là a-ma-tơ và mất việc.

May là công ty lớn nhưng chả có mẹ nào biết PowerShell. Chứ nếu có thì dân lười học PowerShell trước sau gì cũng mất việc.
 
Upvote 0
Upvote 0
Bỏ chung file pdf vào 1 folder rồi thử code dưới đây (không tính folder con):
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

Sub PrintFiles()
Dim oFile As Object, I As Long, oPath As String
With Application.FileDialog(msoFileDialogFolderPicker)
    If Not .Show Then Exit Sub
    oPath = .SelectedItems(1)
    With CreateObject("Scripting.FileSystemObject")
        For Each oFile In .GetFolder(oPath).Files
            If .GetExtensionName(oFile.Name) = "pdf" Then
                ShellExecute Application.hwnd, "print", oFile.Path, 0&, 0&, 0&
                I = I + 1
            End If
        Next
    End With
End With
MsgBox "Da in " & I & " file Pdf"
End Sub
Em cám ơn anh rất nhiều ah !
 
Upvote 0
... sao giờ cháu mới nghe cái powershell là sao nhỉ,
Tại vì bạn không chịu cập nhật kiến thức Windows.
PowerShell đi theo Windows (phiên bản Professional trở lên).

Ngày xưa Windows dùng cmd để chạy lệnh trong shell. Nhưng như vậy thì thua sút bọn Linux quá, người ta có Bash Shell (hay gì gì đó Shell tuỳ theo phiên bản Unix). Các lệnh Unix chạy hoành tráng, và script cũng êm như nhung.

PowerShell đại khái cũng êm như tơ lụa. Chỉ là các vị ở đây thấy nhờ được VBA dễ quá nên lười học cách sử dụng và script thôi. Điển hình là việc in ấn pdf hoàn toàn chả liên quan gì đến Excel mà cũng lôi vào đây, đã vậy còn mở đầu "Hiện nay, các Công ty đều dùng...".
 
Upvote 0
Cám ơn mọi người đã quan tâm ah. Kiến thức mỗi người đều có giới hạn. Nếu như người ta sai thì mình nhắc nhở, có thể bạn giỏi ở lĩnh vực nhưng chưa chắc biết hết mọi thứ kể cả lĩnh vực bạn giỏi.
Nhờ ban quản trị vui lòng đóng topic giúp, cám ơn !
 
Upvote 0
Cám ơn mọi người đã quan tâm ah. Kiến thức mỗi người đều có giới hạn. Nếu như người ta sai thì mình nhắc nhở, có thể bạn giỏi ở lĩnh vực nhưng chưa chắc biết hết mọi thứ kể cả lĩnh vực bạn giỏi.
Nhờ ban quản trị vui lòng đóng topic giúp, cám ơn !
Câu này có nhiều trên diễn đàn này, hahaha .....a

.
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom