VBA参考工作表与图表表
我正在尝试编写一个小函数,它接受excel中的文件路径(保存工作簿的位置)、targetpath(pdf将保存到的位置)和一串选项卡名称(以管道(|)分隔) 该函数的用户不必输入标签名称字符串(这是可选的),如果不需要,我希望选择所有可见的标签并打印它们。如果用户在单独的工作表中有50个图表,并且不想编写类似“Chart1 | Chart2 |…”的字符串,则会出现这种情况 代码: For-Each循环有两个问题:它不抓取任何诸如“Chart1”之类的表,它只抓取诸如“Sheet1”之类的表。此外,它还会抓取隐藏的工作表,这样当我尝试选择所有工作表时,就会出现越界错误VBA参考工作表与图表表,vba,charts,worksheet,refer,Vba,Charts,Worksheet,Refer,我正在尝试编写一个小函数,它接受excel中的文件路径(保存工作簿的位置)、targetpath(pdf将保存到的位置)和一串选项卡名称(以管道(|)分隔) 该函数的用户不必输入标签名称字符串(这是可选的),如果不需要,我希望选择所有可见的标签并打印它们。如果用户在单独的工作表中有50个图表,并且不想编写类似“Chart1 | Chart2 |…”的字符串,则会出现这种情况 代码: For-Each循环有两个问题:它不抓取任何诸如“Chart1”之类的表,它只抓取诸如“Sheet1”之类的表。此
我不知道图表工作表的引用方式是否与常规工作表不同,也不知道为什么会选择隐藏工作表。在循环中使用
WBO.sheets
而不是WBO.Worksheets
验证WSO.Visible=xlSheetVisible
以过滤隐藏的工作表
For-Each循环有两个问题:它不抓取任何诸如“Chart1”之类的表,它只抓取诸如“Sheet1”之类的表
图表和工作表是两个不同的集合。试试这个:
Sub Demo()
Dim oWs As Worksheet
Dim oCs As Chart
For Each oWs In ActiveWorkbook.Worksheets
Debug.Print oWs.Name
Next
For Each oCs In ActiveWorkbook.Charts
Debug.Print oCs.Name
Next
End Sub
当然,
ActiveWorkbook.Sheets
包括ActiveWorkbook.Worksheets
和ActiveWorkbook.Charts
。
Sub Demo()
Dim oWs As Worksheet
Dim oCs As Chart
For Each oWs In ActiveWorkbook.Worksheets
Debug.Print oWs.Name
Next
For Each oCs In ActiveWorkbook.Charts
Debug.Print oCs.Name
Next
End Sub