繁体   English   中英

从Excel-VBA中的范围获取工作簿名称和工作表名称

[英]Get Workbook Name and Worksheet Name from a Range in Excel-VBA

我现在有一些代码,提示用户选择一个范围(1个区域,1列,几行)。 这是提示用户执行此操作的代码:

MsgBox "Select a continuous range of cells where numeric values should be appended."

Set Rng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8) 'Type Values, 8 - Range object

但是,如何从上述选择中获得工作簿名称和工作表名称?

我需要这个:

  1. 目的地wb的工作簿名称 -我已经实现,但使用cmd: ThisWorkbook (在提示用户执行任何操作之前)
  2. 目的地ws的工作表名称 -最好也从上述代码中读取该名称 ,并在其中提示用户“ Set Rng / --- /”

  3. 源wb的工作簿名称 -读取目标ws后,我想通过打开拨号提示用户以选择源工作簿,在此我将提示用户选择其他范围(源范围)-输入该范围3&4。

  4. 源ws的工作表名称 - 参见3

还希望我想拥有绝对的ws名称“ Sheet1”等,而不是它的名称(例如Kalle Anka)。

非常感谢!

编辑:我知道在输入对话框显示中是否选择了另一个ws或wb,而不是从启动宏的位置开始选择的,即“ [Cognos Orders and deliveryies.xlsx]卡车订单”!$ F $ 11:$ F $ 18。 但是,如果我将“设置为范围”设置为暗淡-有什么方法可以检索该信息? 如果它是一个字符串,则可以用! 然后]分别获得ws和wb? 现在如何使用Range?

EDIT2:根据以下答案,我尝试了以下结果/问题:

Sub AppendCognosData()

Dim Rng As Range

Dim AppendWb As Workbook
Dim AppendWs As Worksheet
Dim AppendWb2 As Workbook

'Create a reference to Wb where to append data
Set AppendWb = ThisWorkbook

MsgBox "Select a continuous range of cells (in a column) where numeric values should be appended."

Set Rng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8) 'Type Values, 8 - Range object

AppendWs = Rng.Parent.Name
AppendWb2 = Rng.Parent.Paranet.Name

在最后两行,我得到错误。

  • 运行错误nr'91'? 它说没有指定objectvariable或With-blocvariabel

要使用字符串变量引用工作表 ,请使用以下语法:

set wks = Worksheets("NameOfWorksheet") 工作表MSDN

要使用字符串变量引用工作簿 ,请执行以下操作:

set wkb = Workbooks("NameOfWorkbook") Workbook MSDN

现在,问题是如何从选择中获取字符串"NameOfWorksheet""NameOfWorkbook" 这是一些最小的示例:

Public Sub TestMe()

    Dim wks As Worksheet
    Dim wkb As Workbook
    Dim rng As Range
    Set rng = Selection

    Debug.Print rng.Parent.Name            'Name of the worksheet
    Debug.Print rng.Parent.Parent.Name     'Name of the workbook
    Debug.Print rng.Parent.CodeName        'Code Name of the worksheet

    Set wks = Worksheets(rng.Parent.Name)
    Debug.Print wks.Name

    Set wkb = Workbooks(rng.Parent.Parent.Name)
    Debug.Print wkb.Name

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM