Próbuję napisać małą funkcję, która pobiera ścieżkę do pliku (gdzie zapisano skoroszyt), ścieżkę docelową (do której zostanie zapisany plik pdf) i ciąg nazw tabulatorów (rozdzielane potokami (|)) w programie excel.VBA Zapoznaj się z arkuszem roboczym a arkuszem wykresu
Użytkownik tej funkcji nie musi wpisywać ciągu nazw tabulatorów (jest to opcjonalne), a jeśli nie, chcę zaznaczyć wszystkie widoczne zakładki i je wydrukować. To byłoby w przypadku, gdy użytkownik ma 50 wykresów w osobnych arkuszach i nie chce pisać ciąg jak „Chart1 | Chart2 | ....”
Kod:
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
Są dwa problemy z pętlą For Each: nie przechwytuje żadnych arkuszy, takich jak "Chart1", pobiera tylko arkusze takie jak "Sheet1". Ponadto pobierze ukryte arkusze, więc gdy spróbuję wybrać je wszystkie, otrzymam błąd poza granicami.
Nie wiedziałem, czy arkusz wykresu odnosi się inaczej niż zwykły arkusz lub dlaczego wybrane są również ukryte arkusze.
Oczywiście 'ActiveWorkbook.Sheets' obejmuje zarówno' ActiveWorkbook.Worksheets' i 'ActiveWorkbook.Charts'. –