Как получить имя листа с помощью GetOpenFilename в VLOOKUP

Я использую этот код ниже, чтобы использовать VLOOKUP в другом файле, который вы выбираете с помощью GetOpenFilename . Я хочу, чтобы shtName было именем листа в выбранном вами файле, но всякий раз, когда я его просматриваю, это всегда имя листа, в котором я работаю, и вставляю VLOOKUP.

У меня есть shtName в shtName и он ничего не показывает, когда я shtName его. X показывает имя файла и путь, но shtName сразу после ничего не показывает. Но мой VLOOKUP все равно работает, и он помещает лист в формулу.

Почему это? Я хочу, чтобы иметь возможность сделать это самостоятельно, и поэтому я знаю, что получаю имя листа из файла, который вы выбираете.

 Dim iRet As Integer Dim strPrompt As String Dim strTitle As String ' Promt strPrompt = "Please select the last Kronos Full File before the dates of this HCM Report." & vbCrLf & _ "This will be used to find the Old Position, Org Unit, and Old Cost Center." & vbCrLf & _ "For example, if the date of this report is 7-28-17 thru 8-25-17, the closest Kronos Full File you would want to use is 7-27-17." ' Dialog's Title strTitle = "Last Kronos Full File for Old Positions" 'Display MessageBox iRet = MsgBox(strPrompt, vbOK, strTitle) Dim LR As Long Dim X As String Dim lNewBracketLocation As Long X = Application.GetOpenFilename( _ FileFilter:="Excel Files (*.xls*),*.xls*", _ Title:="Choose the Kronos Full File.", MultiSelect:=False) MsgBox "You selected " & X 'Find the last instance in the string of the path separator "\" lNewBracketLocation = InStrRev(X, Application.PathSeparator) 'Edit the string to suit the VLOOKUP formula - insert "[" X = Left$(X, lNewBracketLocation) & "[" & Right$(X, Len(X) - lNewBracketLocation) shtName = ActiveWorkbook.Worksheets(1).name LR = Range("E" & Rows.Count).End(xlUp).Row Range("T2").Formula = "=VLOOKUP($E2,'" & X & "]shtName'!$B$1:$AP$99999,15,0)" Stop Range("T2").AutoFill Destination:=Range("T2:T" & Range("E" & Rows.Count).End(xlUp).Row) Stop Range("T2:T" & Range("E" & Rows.Count).End(xlUp).Row).Select Stop Range("U2").Formula = "=VLOOKUP($E2,'" & X & "]shtName'!$B$1:$AP$99999,41,0)" Range("U2").AutoFill Destination:=Range("U2:U" & Range("E" & Rows.Count).End(xlUp).Row) Range("U2:U" & Range("E" & Rows.Count).End(xlUp).Row).Select Range("V2").Formula = "=VLOOKUP($E2,'" & X & "]shtName'!$B$1:$AP$99999,18,0)" Range("V2").AutoFill Destination:=Range("V2:V" & Range("E" & Rows.Count).End(xlUp).Row) Range("V2:V" & Range("E" & Rows.Count).End(xlUp).Row).Select Cells.Select Cells.EntireColumn.AutoFit 

Что-то вроде следующего должно дать вам имя листа из файла

 Dim wbk As Workbook Set wbk = Workbooks.Open(Filename:="YOUR_FILE_PATH", ReadOnly:=True) Dim shtName As String shtName = wbk.Worksheets(1).Name wbk.Close 

Примечание. Мы можем открыть книгу в режиме только для чтения, если мы не планируем ничего менять.


Кроме того, я рекомендую (для хорошего кода следовать передовой практике):

  • Всегда указывайте рабочий лист.
    Например, для каждого Range("") например, Worksheets("YourSheetName").Range("")
    Или используйте With заявлениями:

     With Worksheets("YourSheetName") .Range("A1").Value = 5 'recognize the starting full stop referring to the with statement End With 
  • То же самое для всех Rows , Columns , Cells и т. Д.

  • Избегайте использования .Activate , .Activate и Selection. вообще.
    (в Интернете есть много учебников, как их избежать).
  • Используйте Option Explicit и объявляйте все свои переменные перед использованием.
    (избегает многих проблем, особенно опечаток).
Interesting Posts

Добавить гиперссылку на лист расширенного распространения в электронном письме VBA

Чтение файла excel с несколькими листами

Excel: экспорт в PDF не обновляется

Не удалось сохранить файл VB6 excel

Формула excel находит данные от первого символа в ячейке

Запрос мощности – мы нашли дополнительные символы в конце ввода JSON

Запретить поиск в Windows / Outlook с помощью листа Excel

Как подсчитать количество экземпляров текста в excel?

Макрос для автоматического заполнения до последних соседних ячеек

Почему открытие файла MS Excel изменяет хэш-файл SHA документа?

Использование VBA для создания формулы, которая изменяется на основе отмеченных галочек

Установите AutoFilter в Excel с помощью VBA

Как перенести значения диапазона в верхнюю часть после фильтрации с помощью макроса vba

Выделите Row-Column выбранной ячейки

Лист Google / Excel. Используйте формулу в качестве строки ячейки для исходной формулы?

Давайте будем гением компьютера.