VBA Excel:返回一个范围的父工作簿

5

如何返回包含给定范围的工作簿名称?

Range.Parent 可以获取父表格,但是如何获取父工作簿呢?是否有类似于 Range.ParentWorkbook 的方法可以实现呢?


5
拿到这张表格后,只需在上面输入父母信息即可?你希望一步完成吗? - findwindow
1
@findwindow 创建答案并获得积分 - brietsparks
我有足够的积分,很高兴能够帮忙^_^谢谢!不过编辑一下:我觉得我并没有应得这些积分。我的回答并没有起到太大的启发作用XD如果有一行代码可以做到所有的事情,那就好了... - findwindow
希望我之前没有冒犯你。只是觉得我不应该得到积分 XD。 - findwindow
2个回答

6

稍晚加入派对的朋友们,注意这也可以在一行中完成(已经在Excel 2010中测试):

myRange.Worksheet.Parent.name

Macro Man的GetWorkbookName()函数将会是这样的:

Private Function GetWorkbookName(myRange As Excel.Range) As String
    GetWorkbookName = myRange.Worksheet.Parent.name
End Function

例子使用方法的相同:

Sub Foo()
    Dim parentWorkbookName As String

    parentWorkbookName = GetWorkbookName(Range("A1"))
    MsgBox parentWorkbookName
End Sub

3
或者只需使用 MyRange.Parent.Name 即可获取工作表名称, MyRange.Parent.Parent.Name 获取工作簿名称,MyRange.Parent.Parent.Parent.Name 获取 Excel 应用程序名称。 - Darren Bartrup-Cook

0

以findwindow的评论为例(帖子是社区维基 - 不要为此负责)

您可以创建一个UDF,例如接受Range作为参数:

Private Function GetWorkbookName(myCell As Excel.Range) As String
    Dim a As Excel.Worksheet
    Set a = myCell.Parent
    GetWorkbookName = a.Parent.Name
End Function

例子用法:

Sub Foo()
    Dim parentWorkbookName As String

    parentWorkbookName = GetWorkbookName(Range("A1"))
    MsgBox parentWorkbookName
End Sub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接