Я очень плохо знаком с VBA и пытаюсь создать макрос, который будет экспортировать в PDF только те области печати, которые были заполнены значениями из другого листа в книге.
У меня есть лист с 8 формами А4, отмеченными 8 отдельными областями печати. В зависимости от проекта, над которым мы работаем, количество заполненных форм, которые необходимо заполнить в формате PDF, варьируется. Мне нужен простой макрос, который может определять, какие формы являются пустыми, и не включать их в PDF.
Мне было интересно, возможно ли с помощью VBA определить, является ли ячейка пусто или имеет какое-либо значение, и если оно содержит значение, включить его в PDF? В первой форме ячейка R5 является примером ячейки, которая, если она имеет какое-либо значение, должна быть в PDF.
В настоящее время я использую этот код для PDF и переименования. Он собран из трех разных уроков, и я уверен, что он выглядит очень громоздким.
Sub GenerateSDS()
Sheets("SDS").Select
Dim wsA As Worksheet
Dim wbA As Workbook
Dim strName As String
Dim strPath As String
Dim strFile As String
Dim strPathFile As String
Dim myFile As Variant
Dim lOver As Long
On Error GoTo errHandler
Set wbA = ActiveWorkbook
Set wsA = ActiveSheet
strPath = wbA.Path
If strPath = "" Then
strPath = Application.DefaultFilePath
End If
strPath = strPath & "\"
strName = wsA.Range("A92").Value _
& " _ " & "SDS" & " _ " & "BLANK"
strFile = strName & ".pdf"
strPathFile = strPath & strFile
If bFileExists(strPathFile) Then
lOver = MsgBox("Overwrite existing file?", _
vbQuestion + vbYesNo, "File Exists")
If lOver <> vbYes Then
myFile = Application.GetSaveAsFilename _
(InitialFileName:=strPathFile, _
FileFilter:="PDF Files (*.pdf), *.pdf", _
Title:="Select Folder and FileName to save")
If myFile <> "False" Then
strPathFile = myFile
Else
GoTo exitHandler
End If
End If
End If
wsA.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=strPathFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Sheets("Enter Data Here").Select
MsgBox "PDF file has been created: " _
& vbCrLf _
& strPathFile
exitHandler:
Exit Sub
errHandler:
MsgBox "Could not create PDF file"
Resume exitHandler
End Sub
'=============================
Function bFileExists(rsFullPath As String) As Boolean
bFileExists = CBool(Len(Dir$(rsFullPath)) > 0)
End Function
'=============================
Спасибо!