Я пытаюсь написать небольшую функцию, которая принимает путь к файлу (там, где была сохранена книга), путь к цели (где будет сохранен 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: он не захватывает никакие листы, такие как «Chart1», он только захватывает листы, такие как «Sheet1». Кроме того, он будет захватывать скрытые листы, поэтому, когда я пытаюсь выбрать их все, я получаю ошибку выхода за границы.
Я не знал, относится ли лист диаграммы к другому, чем к обычному листу, или почему также выбираются скрытые листы.