У меня возникли проблемы с выяснением проблемы с моим кодом. Я запускаю папку, создавая лист на основе имени файла, копируя одну ячейку (A1) и передавая ее на новом листе. Тем не менее, я продолжаю получать следующее сообщение об ошибке:Копирование/Вставка между книгами (Подзаголовок за пределами допустимого диапазона)
Subscript out of range (Run-time error '9')
У меня есть следующий код:
Sub InsertDepartments()
Dim MyObj As Object, MySource As Object, file As Variant
file = Dir(ThisWorkbook.Path & "\Departments\")
While (file <> "")
Set WS = Sheets.Add(After:=Sheets("Start"))
WS.Name = Left(file, InStr(file, ".") - 1)
Workbooks(ThisWorkbook.Path & "\Departments\" & file).Sheets("XXX").Range("A1").Copy
Sheets(WS.Name).Range("A1").PasteSpecial Paste:=xlPasteValues
file = Dir
Wend
End Sub
Может кто-нибудь увидеть, что не так в коде? Заранее спасибо.
Не уверен, что линия эта ошибка возникает на но попробуйте это: 'File = Dir (ThisWorkbook.Path & "\ Факультеты \ * XLSX.")' Параметр '*' персонаж будет возвращать все файлы с именем ' .xlsx' в папке, например. Фактически, я думаю, что ответ заключается в том, что сначала вам нужно открыть книгу, прежде чем вы сможете скопировать любые значения диапазона. Поэтому перед методом копирования вставьте метод «Workbooks.Open». (Оставляя первую часть в случае, если она помогает). –
Эта ошибка появится в любом из ваших 'Sheets()' или 'Workbooks()', если элемент, который вы пытаетесь использовать, отсутствует в коллекции. Проверьте значение 'ThisWorkbook.Path & \ \ Departments \" & file', чтобы убедиться, что это имя уже открытой книги. Убедитесь, что у рабочей книги есть лист с именем «XXX» и проверьте, что ваша ActiveWorkbook имеет лист с именем «WS.Name» – Mikegrann