>A列にファイルパス、B列にそのBookのシート名を入れると
>B列で指定したシートだけがPDFに変換される。
>PDFの保存先は元のフォルダ中に新らしく
>「PDF変換」というフォルダを作成してそこに保存される。
を書いてみました。
出力するPDFのファイル名をどのようにするのか未詳なので
前回の仕様を踏襲しました。
簡単なテストしかしていませんので
使う場合は、十分にテストしてください。
Option Explicit
Dim SeqNum As Long
Sub Sample()
Const SRow = 2 'ブック名一覧の開始行番号
Dim i As Long
i = SRow
With ThisWorkbook.Sheets(1)
Do
If .Cells(i, 1).Value = "" Then Exit Do
ExportPDF2 .Cells(i, 1).Value, .Cells(i, 2).Value
i = i + 1
Loop
End With
End Sub
'//---------- PDFに書き出すサブルーチン
Sub ExportPDF2(BookPath As String, ShName As String)
Dim tgBook As Workbook
Dim i As Long
Dim PutName As String
Set tgBook = Workbooks.Open(FileName:=BookPath)
SeqNum = SeqNum + 1
'出力先フォルダーのチェック、なかったら作成する
If IsExistDirA(GetPath(BookPath) & "\PDF変換") = False Then
MkDir GetPath(BookPath) & "\PDF変換"
End If
'出力ファイル名組み立て
PutName = GetPath(BookPath) & "\PDF変換\" & _
tgBook.Name & "_" & ShName & Format(SeqNum, "000000")
tgBook.Sheets(ShName).ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
PutName, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
tgBook.Close
End Sub
'//============== フォルダーの実在チェック
Function IsExistDirA(a_sFolder As String) As Boolean
Dim result
result = Dir(a_sFolder, vbDirectory)
If result = "" Then
IsExistDirA = False
Else
IsExistDirA = True
End If
End Function
'//============== フルパスからフォルダーを取得
Function GetPath(FullPath As String)
Dim PathName As String, FileName As String, pos As Long
pos = InStrRev(FullPath, "\")
GetPath = Left(FullPath, pos)
End Function
'//============== フルパスからファイル名を取得
Function GetName(FullPath As String)
Dim PathName As String, FileName As String, pos As Long
pos = InStrRev(FullPath, "\")
GetName = Mid(FullPath, pos + 1)
End Function
お礼
夜遅くまでありがとうございます。 全くお礼と感謝の雨嵐! 朝一で試行してみたのですが、他の要因でシート&セル指定のマクロ自体が動かなくなってしまったのでこれから一からやり直しです。 フォルダ一内エクセルの一括変換コードは問題なく動くのですが。。。 昨夕、この二つのマクロを仕込んだエクセルBookのシートに使い方を作成してあります。 これから本格的にPDF化していきます。 マクロが動けば恐らくC列の空白問題も解決だと思いますが、万一でもAAA1で解決できておりますので一旦締め切らせていただきます。 今後とも宜しくお願い致します。