Как я могу распечатать файл списка в формате PDF с указанием их имен в столбце Excel?

#excel #printing #export-to-excel #software-design

#excel #печать #экспорт в Excel #программное обеспечение-дизайн

Вопрос:

введите описание изображения здесь

Я хочу распечатать файл списка pdf, имя которого указано в 1 столбце Excel.

Я не хочу удерживать кнопку Ctrl и находить ее имя по одному в столбце Excel и выбирать этот файл. Потому что может быть много файлов. Поиск одного за другим занимает много времени.

Например, с изображением выше.

Какое программное обеспечение может помочь мне сделать это? Или я должен что-то сделать, чтобы решить эту проблему ???.

Спасибо, что прочитали мой пост!!!

Комментарии:

1. Я нашел это . Если это работает, вы можете определить свой диапазон, содержащий адреса, использовать цикл For-Next для выбора каждой ячейки указанного диапазона, а затем запустить правильно отредактированную подпрограмму.

2. Я попытался использовать их код, просто введя определенное имя файла, не используя For-Next для получения нескольких имен файлов. Но он сообщил об ошибке, подобной этой. Можете ли вы помочь мне увидеть эту ошибку?

3. Это мой код: если Err.Number> 0, то MsgBox Err.Number amp; «: » amp; Err.Description PrintPDF = False Else PrintPDF = True End Если при ошибке GoTo 0 End Функция Sub PrintSpecificPDF() ‘открывает указанный PDF-файл и печатает его на принтере по умолчанию ‘обратите внимание, что он используетпрограмма PDF по умолчанию и оставляет ее открытой Dim strPth как String, strFile как String strPth = «D:PDF » strFile = «B01611.pdf» Если не PrintPDF(0, strPth и strFile), то MsgBox «Ошибка печати» Завершается, если End Sub

Ответ №1:

Это должно сработать:

 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
 
Public Function PrintPDF(xlHwnd As Long, FileName As String) As Boolean
    Dim X As Long
    
    On Error Resume Next
    X = ShellExecute(xlHwnd, "Print", FileName, 0amp;, 0amp;, 3)
    
    If Err.Number > 0 Then
        MsgBox Err.Number amp; ": " amp; Err.Description
        PrintPDF = False
    Else
        PrintPDF = True
    End If
    On Error GoTo 0
End Function
 
Sub PrintSpecificPDF()
    'opens the specified pdf and prints it using the default printer
    'note that it uses the default PDF program and leaves it open
    
    Dim strPth As String, strFile As String
    Dim rngList As Range, rngTarget As Range
    
    
    Set rngList = Range(Range("B2"), Range("B1").End(xlDown))
    strPth = "D:PDF"
    
    For Each rngTarget In rngList
        
        strFile = rngTarget.Value amp; ".pdf"
         
        If Not PrintPDF(0, strPth amp; strFile) Then
            MsgBox "Printing failed"
        End If
        
    Next
    
End Sub
  

Я взял этот код и немного изменил его в соответствии с вашим случаем.