Я пытаюсь написать макрос, который переместит лист (order_line_list
) из его книги в положение после последнего листа другой книги (Accrual Planning by Month 2020
).
Планирование начислений по месяцам Имя файла рабочей книги не является постоянным, поэтому я настроил его как переменную в коде. Последний лист этой книги также будет меняться каждый месяц при добавлении нового листа.
Я могу заставить макрос работать, если я использую полное имя файла и указываю положение листа (после листа 2). Однако, если я пытаюсь сделать это с переменными имени файла и числа листов, я получаю следующую ошибку:
Run-time error 1004: Move Method of Worksheet Class Failed
Я попытался использовать метод Copy, но я просто получил тот же метод Failed ошибка.
Я провел несколько часов, исследуя и пытаясь выяснить это, но не смог. Я новичок в VBA, так что, вероятно, есть гораздо более простой способ сделать то, что я пытаюсь сделать. Ниже мой код. У меня есть файлы, но я не могу понять, как их прикрепить. Ваша помощь будет принята с благодарностью.
Function wbname(MatchName As String) As String
Dim wb As Workbook
For Each wb In Workbooks
If wb.Name Like MatchName Then
wbname = wb.Name
Exit Function
End If
Next wb
wbname = ""
End Function
Sub Macro302()
' Move Sheet to Accrual Planning by Month file
Accrual = wbname("Accrual*")
Windows("order_line_list.csv").Activate
Sheets("order_line_list").Move After:=Workbooks(Accrual).Sheets.Count
'Sheets("order_line_list").Copy After:=Workbooks(Accrual).Sheets.Count
'Windows("order_line_list.csv").Close SaveChanges:=False
End Sub