我正在尝试编写一个小的函数,该函数在excel中使用文件路径(保存工作簿的位置),目标路径(将pdf保存到的位置)和选项卡名称的字符串(用竖线(|)分隔)。
函数的用户不必输入选项卡名称的字符串(这是可选的),如果不需要,我想选择所有可见的选项卡并进行打印。如果用户在单独的工作表中有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”的表。另外,它将抓取隐藏的工作表,以便当我尝试选择所有隐藏工作表时,出现错误。
我不知道图表表与常规表的引用方式是否不同,或者为什么还选择隐藏表。
最佳答案
在循环中使用WBO.Sheets
而不是WBO.Worksheets
。
验证是否使用WSO.Visible = xlSheetVisible
筛选出隐藏的工作表。