ファイルパス (ワークブックが保存された場所)、ターゲットパス (pdf が保存される場所)、およびタブ名の文字列 (パイプ (|) で区切られた) を受け取る小さな関数を Excel で作成しようとしています。
関数のユーザーは、タブ名の文字列を入力する必要はありません (オプションです)。そうでない場合は、表示されているすべてのタブを選択して印刷したいと考えています。これは、ユーザーが別々のワークシートに 50 個のチャートを持っていて、"Chart1|Chart2|...." のような文字列を書きたくない場合に当てはまります。
コード:
For Each WSO.Name In WBO.Worksheets
strSheets = strSheets & WSO.Name & "|"
Next WSO
strSheets = Left(strSheets, Len(strSheets) - 1)
arraySheets() = Split(strSheets, "|")
WBO.Sheets(arraySheets()).Select
WBO.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
strFilePath, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
For Each ループには 2 つの問題があります。「Chart1」などのシートは取得されず、「Sheet1」などのシートのみが取得されます。また、非表示のシートを取得するため、それらをすべて選択しようとすると範囲外のエラーが発生します。
チャート シートが通常のシートとは異なる方法で参照されているのか、それとも非表示のシートも選択される理由がわかりませんでした。