Кажется, что это должно быть просто, но я действительно застрял на нем.Экземпляр Excel VBA с именем workbook в формуле vlookup в цикле DoWhile
Это код для получения значений из нескольких книг в каталоге и их компиляции в одной книге. Я использую vlookup, потому что значение не всегда находится в одной и той же ячейке, но всегда имеет тот же заголовок строки. Код открывает каждую книгу в каталоге и называет ее wb.
Я хочу ссылаться на wb в формуле Vlookup, но у меня проблемы с этим. Когда я пытаюсь выполнить код ниже, он дает мне ошибку «loop without do» (но когда я запускаю тот же код без формулы, просто копируя и вставляя диапазоны, это нормально). Я также попытался назвать диапазон в wb и ссылаться на это.
'Target File Extension
myExtension = "*.xls"
'Target Path with Ending Extention
myFile = Dir(myPath & myExtension)
'Loop through each Excel file in folder
Do While myFile <> ""
'Set variable equal to opened workbook
Set wb = Workbooks.Open(fileName:=myPath & myFile)
'Put ID from filename into sheet
If right(wb.Name, 5) = "h.xls" Then
wb.Worksheets(1).Range("B16").Select
ActiveCell.Value = Left(wb.Name, 9)
'Get value from wb using Vlookup
MasterBook.Activate
ActiveCell.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(""Sugar (g)"",wb!R18C1:R28C6,2,FALSE)"
'Close Workbook
wb.Close SaveChanges:=True
'Get next file name
myFile = Dir
Loop
'Message Box when done
MsgBox "Task Complete!"
Спасибо, это сработало отлично! Увидеть имена книг и рабочих листов, изложенные таким образом, имеет большое значение. –
Насколько я понял, одиночные кавычки (или * тики *) всегда должны окружать имя листа. Если они не требуются (например, имя рабочего листа не включает одно или несколько пробелов), то они не навредят. Если они требуются из-за пробелов в имени рабочего листа и их нет, формула будет нарушена. – Jeeped
@jeeped Это хорошая идея. –