Страницы: 1
RSS
Макрос для копирования всего листа из одной книги в созданную макросом книгу (error 9)
 
И снова все здравствуйте!

Последний разочек по этому макросу помогите, пожалуйста.
Макрос, который создает папку и называет ее, там создает книгу и называет ее (если такой книги еще нет) еще должен копировать с первой книги активный лист в созданную.
Код
Sub Main()
    Const strRootFolder As String = "M:\Production\Masters\2017\Normalization"
    Dim strFolder As String
    
    strFolder = "M:\Production\Masters\2017\Normalization\" & Range("folder_name").Value
    
    If Dir(strFolder, vbDirectory) = "" Then
        MkDir strFolder
    End If
    
    Dim strFileName As String
   Dim strFileTitle As String
 
 
   strFileTitle = "M:\Production\Masters\2017\Normalization\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("folder_name").Value & "\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("Книга") & ".xlsm"
 
   strFileName = "M:\Production\Masters\2017\Normalization\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("folder_name").Value & "\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("Книга") & ".xlsm"
 
   If Dir(strFileName) <> "" Then
      MsgBox "OK"
    Else
   Dim New_Wb As Workbook
    Set New_Wb = Workbooks.Add
    New_Wb.Activate
    New_Wb.SaveAs "M:\Production\Masters\2017\Normalization\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("folder_name").Value & "\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("Книга") & ".xlsm", 52
    
    End If
   
   Windows("Расчет.xlsm").Activate 
   Dim sh As Worksheet: Set sh = ActiveSheet    
  Call Sheet_Name
    Application.ScreenUpdating = False  

    With Workbooks.Open("M:\Production\Masters\2017\Normalization\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("folder_name").Value & "\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("Книга") & ".xlsm")   
        sh.Copy , .Worksheets(.Worksheets.Count) 
        .Close True   
    End With
   
   Windows("Расчет.xlsm").Activate
End Sub


Но на строке  
Код
With Workbooks.Open("M:\Production\Masters\2017\Normalization\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("folder_name").Value & "\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("Книга") & ".xlsm")

Ошибка 9: subscript out of range
Почитала в интеренете, ошибка говорит о том, что нет такого пути. Но как его не может быть? Я ведь полностью указала весь путь к книге...

Буду признательна за помощь!
 
Пробовали изменить  имя файла "Расчет"? может проблема в русских буквах?
Изменено: Илья Демид - 23.06.2017 14:07:37
 
Илья Демид, спасибо, что откликнулись.
Я не могу переименовать этот файл... Разве название книги может повлиять на свойства кода...
 
Цитата
Honey написал:
Но как его не может быть?
элементарно.
Ведь файлы не обязаны подстраиваться под то, что у Вас там в книге и в именах записано :)
Выведите в окно Immediate путь, который получается при сборе данных из имен:
Код
"M:\Production\Masters\2017\Normalization\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("folder_name").Value & "\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("Книга") & ".xlsm"

и сравните с тем, который реально есть на ПК. Любой лишний пробел или русская буква вместо английской уже будет считаться несоответствующим и как следствие - не будет такого пути на ПК.
Изменено: The_Prist - 23.06.2017 14:24:37
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, Спасибо и извините за долгий ответ...
В окно Immediate я вставляю вопросительный знак и далее путь, т.е.:
Код
?"M:\Production\Masters\2017\Normalization\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("folder_name").Value & "\" & Workbooks("Расчет.xlsm").Worksheets("1").Range("Книга") & ".xlsm"

Нажимаю далее enter, так?
У меня все то же сообщение об ошибке... Не могу проверить путь(((
Я правильно все делаю, подскажите, пожалуйста?

Все! Поняла. Я очередность макросов неправильно соблюдала. Сначала переименовывала лист, а потом пыталась ссылаться на него. Отсюда и ошибка. Он уже такого листа не видел. Спасибо большое!!! :)
Изменено: Honey - 27.06.2017 08:36:13
 
Думаю нужно делать иначе, короче и правильнее так - копируете лист (создаётся новая книга) - активную (вот эту новую) книгу сохраняете в нужное место. Всё.
Страницы: 1
Наверх