Das Problem ist also, dass Workbooks(wbs)
es nicht als Arbeitsbuchobjekt erkannt wird. Dies liegt daran, dass erwartet wird, dass das Argument in Klammern ein Index ist, dh eine Ganzzahl, kein Dateipfad.
Eine Lösung besteht darin, die Workbooks-Auflistung zu durchlaufen und den gewünschten Pfad mit den Pfaden geöffneter Arbeitsmappen zu vergleichen. Legen Sie dann ein Arbeitsmappenobjekt der entsprechenden Arbeitsmappe gleich.
Im folgenden Code habe ich dies für jede Arbeitsmappe gemacht. Da Sie wahrscheinlich nicht viele Arbeitsmappen geöffnet haben, sind die mehreren Schleifen rechnerisch unbedeutend.
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