Использование VBA для PDF только заполненные области печати на листе - PullRequest
0 голосов
/ 13 марта 2020

Я очень плохо знаком с 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
'=============================


Спасибо!

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