Welcome to the forum!
If you have a PDF printer line ADOBE PDF, then PrintOut method will work. The Publish method will work as well. You could use a dialog to get the drive:/path\filename.ext and send that to the Publish. Using an array of sheetnames prints by sheet index and not array index order for what its worth.
Here is a publish example with a dialog.
Sub Test_PublishToPDF()
Dim s As String, ss As String
s = Range("F5").Value2 & Range("F4").Value2 & ".pdf"
'ss= PublishToPDF(s, ActiveSheet) 'Use set print range
Dim r As Range
Set r = Columns("A:A").Find("TOTAL LIABILITIES & EQUITY")
If r Is Nothing Then Exit Sub
ss = PublishToPDF(s, Range("A1:B" & r.Row)) 'Use a dynamic range
'ss = PublishToPDF(s, Range("A1:B" & r.Row), True) 'Use a dynamic range, prompt for filename
Shell "cmd /c " & ss, vbNormalFocus
End Sub
Function PublishToPDF(fName As String, o As Object, _
Optional tfGetFilename As Boolean = False) As String
Dim rc As Variant
rc = fName
If tfGetFilename Then
rc = Application.GetSaveAsFilename(fName, "PDF (*.pdf), *.pdf", 1, "Publish to PDF")
If rc = "" Then Exit Function
End If
o.ExportAsFixedFormat Type:=xlTypePDF, fileName:=rc _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
PublishToPDF = rc
End Function