Получить имя рабочей книги и имя рабочей таблицы из диапазона в Excel-VBA - PullRequest
0 голосов
/ 25 июня 2018

Теперь у меня есть немного кода, который предлагает пользователю выбрать диапазон (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 deliveryries.xlsx] Truck Orders»! $ F $ 11: $ F $ 18 , Но если я приглушу Установить как диапазон - есть ли способ получить эту информацию? Если бы это была строка, вы могли бы разделить строку! а затем], чтобы получить ws и wb отдельно? Как теперь с диапазоном?

РЕДАКТИРОВАТЬ2: Основываясь на ответах ниже, я пробовал это со следующим результатом / проблемой:

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'? Это говорит о том, что объект переменный или С-блоквариабел не был обозначен

1 Ответ

0 голосов
/ 25 июня 2018

Чтобы обратиться к рабочему листу со строковой переменной, это синтаксис:

set wks = Worksheets("NameOfWorksheet") Рабочие листы MSDN

Для ссылки на книгу со строковой переменной:

set wkb = Workbooks("NameOfWorkbook") Рабочая тетрадь 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...