Таким образом, проблема в том, что Workbooks(wbs)
не распознается как объект Workbook. Это связано с тем, что аргумент в скобках должен быть индексом, то есть целым числом, а не путем к файлу.
Одно из решений состоит в том, чтобы просмотреть коллекцию рабочих книг и сравнить желаемый путь с путями открытых рабочих книг. Затем установите объект Workbook равным соответствующей книге.
В приведенном ниже коде я сделал это для каждой книги. Поскольку у вас, вероятно, нет тонны открытых книг, несколько циклов в вычислительном отношении незначительны.
Sub namexfr() Dim wbs As Workbook, wbd As Workbook, wb As Workbook wbspath = "C:\Users\MousaviM\Desktop\Book1.xlsm" wbdpath = "C:\Users\MousaviM\Desktop\Book2.xlsm" For Each wb In Workbooks If wb.FullName = wbspath Then Set wbs = wb Exit For End If Next wb For Each wb In Workbooks If wb.FullName = wbdpath Then Set wbd = wb Exit For End If Next wb For Each nam In wbs.Names wbd.Names.Add Name:=nam.Name, RefersToR1C1:=nam.RefersToR1C1 Next End Sub