У меня есть основной файл 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