Excel печатает рабочие листы в PDF из закрытого файла - PullRequest
0 голосов
/ 23 января 2019

У меня есть основной файл Excel, который содержит информацию для проекта. В той же папке, где находится мой основной файл, содержащий рисунки, всегда будет другой файл Excel с именем «Экспорт задания» - каждый рисунок на отдельном листе. Рисунки начинаются со листа 2 и заканчиваются на листе n-1 (в настоящее время код также будет печатать лист 1 и лист n).

Я нашел и изменил код VBA, который будет печатать эти чертежи с каждого листа в отдельные файлы PDF с именем в ячейке C5 на каждом листе. Но это означает, что мне нужно открыть файл Excel с чертежами и скопировать код в эту книгу, чтобы распечатать PDF-файлы. Я хотел бы добавить этот код в мой основной Excel, чтобы он открывал «Экспорт работы» в фоновом режиме и печатал чертежи в отдельных файлах PDF.

Следующим шагом будет сохранение этих PDF-файлов в папках в соответствии с именем клиента в ячейке B7 и номером детали в B11 и далее (в этом случае сохраненный PDF-файл также будет назван после номера детали).

Возможно ли это с VBA?

Edit:

Я застрял с изменением места сохранения распечатанных PDF-файлов. Я попытался просто жестко запрограммировать в папке «C: \ suvaline», но это не сохранит их там. Как я писал ранее, папка для сохранения должна быть: C: \ suvaline \ "Имя клиента" \ "Номер детали", но она даже не будет работать с жестко закодированной, поэтому я даже не пытался получить имя клиента из Excel. Я что-то упускаю?

Sub ExportToPDFFromClosed()

Dim ws As Worksheet
Dim wbA As Workbook
Dim strPath
Dim strFile
Dim wb2 As Workbook

i = 11
j = 2

sPath = "C:\suvaline"
Application.ScreenUpdating = False
Set wbA = ActiveWorkbook
strPath = wbA.path
strPath = strPath & "\"
Set wbA = Workbooks.Open(strPath & "Job export pic3")
Set wb2 = ThisWorkbook

For Each ws In Worksheets
ws.Select
nm = wb2.Sheets("Prep+BOM").Cells(i, j).Value _

strFile = nm & ".pdf"
strPathFile = "C:\suvaline" & strFile


ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
filename:=strPathFile & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False

 i = i + 1

Next ws
    wbA.Close


End Sub

1 Ответ

0 голосов
/ 25 января 2019

Это последний код, который работает для меня.Определенно не самый элегантный:

Sub ExportToPDFFromClosed()

Dim ws As Worksheet
Dim wbA As Workbook
Dim strPath
Dim strFile
Dim wb2 As Workbook
Dim strPath2
Dim saveDest

i = 11
j = 2


Application.ScreenUpdating = False
Set wbA = ActiveWorkbook
strPath = wbA.path
strPath = strPath & "\"
Set wbA = Workbooks.Open(strPath & "Job export pic3")
Set wb2 = ThisWorkbook
strPath2 = wb2.Sheets("Prep+BOM").Range("B7")
saveDest = "C:\suvaline\" & strPath2 & "\"

For Each ws In Worksheets
ws.Select
nm = wb2.Sheets("Prep+BOM").Cells(i, j).Value _

strFile = nm & ".pdf"
strPathFile = saveDest & nm & "\" & strFile


ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
filename:=strPathFile & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False

 i = i + 1

Next ws
    wbA.Close


End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...