Экспорт содержимого списка в PDF - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть пользовательская форма, которая содержит список.Моя рабочая тетрадь имеет 2 рабочих листа, и мой список выводит данные с обоих листов в зависимости от того, что я ищу.

Как экспортировать содержимое моего списка в pdf независимо от листа?

Я нашел этот универсальный макрос, который можно назначить кнопке команды в пользовательской форме, но он будет экспортировать только содержимое изактивный лист, а не содержимое в списке.

Sub PDFActiveSheet()
Dim ws As Worksheet
Dim strPath As String
Dim myFile As Variant
Dim strFile As String
On Error GoTo errHandler

Set ws = ActiveSheet

'enter name and select folder for file
' start in current workbook folder
strFile = Format(Now(), "yyyymmdd\_hhmm") _
            & ".pdf"
strFile = ThisWorkbook.Path & "\" & strFile

myFile = Application.GetSaveAsFilename _
    (InitialFileName:=strFile, _
        FileFilter:="PDF Files (*.pdf), *.pdf", _
        Title:="Select Folder and FileName to save")

If myFile <> "False" Then

    ws.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=myFile, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False

    With ws.PageSetup
        .CenterHeader = "Report"
        .Orientation = xlLandscape
        .Zoom = True
        .FitToPagesTail = False
        .FitToPagesWide = 1
    End With

    MsgBox "PDF file has been created."
End If

exitHandler:
    Exit Sub
errHandler:
    MsgBox "Could not create PDF file"
    Resume exitHandler
End Sub

1 Ответ

0 голосов
/ 28 декабря 2018

Спасибо, мне удалось найти другое более простое решение.Просто экспортируйте содержимое списка в Excel

Private Sub SaveListBoxContent_Click()

    Dim i As Integer
    Dim xlApp As Excel.Application
    Dim xlSh As Excel.Worksheet

    Set xlApp = New Excel.Application
    xlApp.Visible = True
    xlApp.Workbooks.Add

    Set xlSh = xlApp.Workbooks(1).Worksheets(1)
     For i = 1 To Me.ListBox1.ListCount
        xlSh.Cells(i, 1).Value = Me.ListBox1.List(i - 1, 0)
        xlSh.Cells(i, 2).Value = Me.ListBox1.List(i - 1, 1)
        xlSh.Cells(i, 3).Value = Me.ListBox1.List(i - 1, 2)
        xlSh.Cells(i, 4).Value = Me.ListBox1.List(i - 1, 3)
        xlSh.Cells(i, 5).Value = Me.ListBox1.List(i - 1, 4)
        xlSh.Cells(i, 6).Value = Me.ListBox1.List(i - 1, 5)

    Next

End Sub
...