Excel 如何获取活动NamedSheetView类的name属性?

Excel 如何获取活动NamedSheetView类的name属性?,excel,vba,office365,class-properties,Excel,Vba,Office365,Class Properties,Excel现在可以存储个人筛选视图,以帮助在同时使用的文档中进行协作。 我只能找到外接程序的Microsoft文档,但该功能在Microsoft 365 MSO(16.0.13127.20266)32位的Excel版MS Excel中可用 我试图存储当前应用的NamedSheetView名称属性(用于以后的还原选项),但 此代码失败: Dim sh1 As Worksheet Dim xViewName As String Set sh1 = ThisWorkbook.Sheets(Sheet

Excel现在可以存储个人筛选视图,以帮助在同时使用的文档中进行协作。 我只能找到外接程序的Microsoft文档,但该功能在Microsoft 365 MSO(16.0.13127.20266)32位的Excel版MS Excel中可用

我试图存储当前应用的NamedSheetView名称属性(用于以后的还原选项),但 此代码失败:

Dim sh1 As Worksheet
Dim xViewName As String
Set sh1 = ThisWorkbook.Sheets(Sheet6.Name)
xViewName = sh1.NamedSheetView.Name
但是,此代码可以工作(使用以前创建的“测试”视图):

如果此NamedSheetView是一个集合,我应该能够获取item属性,但这些代码也会失败:

strName = sh1.NamedSheetViews.GetItem(1).Name
strName = sh1.NamedSheetViews.Item(1).Name

是否有人成功获取过工作表的当前名称SheetView?

以下是我探测未知对象属性的方法:

我从对对象的引用开始。如果我不知道对象是什么,我会使用
TypeName()
返回它的类名(数据类型)。然后声明该数据类型的变量。清洗、冲洗并在我钻取结构时重复。声明变量后,选择该变量并按F1键打开该数据类型的Microsoft帮助文档

模块代码 即时窗口测试 解决方案: (感谢TinMan的大力帮助)

应用程序:

sh1.NamedSheetViews.GetItem(ActiveSheetView).Activate

谢谢你,TinMan,这帮了大忙。现在我可以遍历集合了。我仍然面临一个大问题:如何识别活动名称SheetView(工作表上当前活动的名称),如果有。不幸的是,NamedSheetView和集合一样,只有父、计数、名称和应用程序属性。不幸的是,我也找不到当前在图纸属性中应用的名称SheetView的任何痕迹。如何识别当前选择的名称SheetView?我只能找到Javascript API代码:GetActive()找到了!将图纸视图设置为名称图纸视图将图纸sh1设置为工作表集sh1=此工作簿。图纸(Sheet6.Name)设置为图纸视图=sh1.NamedSheetView。GetActive@LegrA干得好!
Sub WhatIsThat()
    Const TestName As String = "TestName"
    Dim View As NamedSheetViewCollection
    Set View = Sheet6.NamedSheetViews
    
    On Error Resume Next
    View.GetItem(TestName).Delete
    On Error GoTo 0
    
    View.Add TestName
    Dim SheetView As NamedSheetView
    Dim n As Long
    For n = 0 To View.Count - 1
        Debug.Print View.GetItemAt(n).Name
        Set SheetView = View.GetItemAt(n)
        Debug.Print SheetView.Name
    Next
    Stop
End Sub
?TypeName(Sheet6.NamedSheetViews)
?View.GetItemAt(0).Name
?TypeName( View.GetItemAt(0))
Dim SheetView As NamedSheetView 
Dim sh1 As Worksheet
Dim ActiveSheetView as string 
Set sh1 = ThisWorkbook.Sheets(Sheet6.Name) 
Set SheetView = sh1.NamedSheetViews.GetActive
ActiveSheetView = SheetView.Name
sh1.NamedSheetViews.GetItem(ActiveSheetView).Activate