Страницы: 1
RSS
Макрос на сохранение листов из книги в отдельные книги
 
Всем добрый день. На сайте нашел макрос который работает по принципу, выделил нужные листы, запустил макрос он сохранит их по пути исходного файла в файл с названием первого выделенного листа. Я его собрал из трех кусков с разных мест сайта. Не программист.
И вот затык, уже день сижу
не могу решить как написать эту строчку ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & ".xlsx", как только не пробовал не вижу чего то видимо в чём ошибка?


Заранее спасибо.

Сам макрос.
Код
Sub SplitSheets_cop_disconnect()
    Dim s As Worksheet
    Dim wb As Workbook
    Set wb = ActiveWorkbook
    
    Dim CurW As Window
    Dim TempW As Window
    Set CurW = ActiveWindow
    Set TempW = ActiveWorkbook.NewWindow
    CurW.SelectedSheets.Copy
    TempW.Close
    Set wb = ActiveWorkbook
    WorkbookLinks = wb.LinkSources(Type:=xlLinkTypeExcelLinks)
        If IsArray(WorkbookLinks) Then
            For i = LBound(WorkbookLinks) To UBound(WorkbookLinks)
                wb.BreakLink Name:=WorkbookLinks(i), Type:=xlLinkTypeExcelLinks
            Next i
        End If
        
ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & ".xlsx"

Ошибка
run-time error '91'
Object variable or with block variable not set
Изменено: Василий - 04.09.2018 17:20:50
 
Поищите по форуму , макросов по вашей задаче очень много.
"Все гениальное просто, а все простое гениально!!!"
 
я не ленивый, правда перепробовал всё что здесь есть, просто видимо не догоняю какой то момент в последней строке, где то надо поправить, а что не пойму. Макродер выдает фигню
вот отсюда всё брал https://www.planetaexcel.ru/techniques/3/160/
Изменено: Василий - 04.09.2018 19:08:00
 
В надстройке PLEX от Николая Павлова отлично работает.
Excel непознаваем как атом.
 
буду очень признателен если подскажите, где ошибка в коде, я сохраняю как то не так.

Решил только таким вот способом. Я так понимаю что командой wb.Path. Программа не могла понять куда ей сохранять так как это было вновь созданный файл который еще ни имеет ни какого пути.
Если не прав поправьте
Код
Sub SplitSheets777()
''Выделяем листы, запускаем макрос, сохраняет выделенные листы, с разрывом ссылок на старый файл в путь указанный в последней строке.
    Dim s As Worksheet
    Dim wb As Workbook
    Set wb = ActiveWorkbook
    
    Dim CurW As Window
    Dim TempW As Window
    Set CurW = ActiveWindow
    Set TempW = ActiveWorkbook.NewWindow
    CurW.SelectedSheets.Copy
    TempW.Close
    Set wb = ActiveWorkbook
    WorkbookLinks = wb.LinkSources(Type:=xlLinkTypeExcelLinks)
        If IsArray(WorkbookLinks) Then
            For i = LBound(WorkbookLinks) To UBound(WorkbookLinks)
                wb.BreakLink Name:=WorkbookLinks(i), Type:=xlLinkTypeExcelLinks
            Next i
        End If
    ActiveWorkbook.SaveAs "c:\Users\me\Documents\папка для файла" & ActiveSheet.Name & ".xlsx"  
End Sub
Изменено: Василий - 04.09.2018 19:08:13
 
В #1 переменная s не определена. Добавьте строку перед строкой 8:
Код
Set s=ActiveSheet
Владимир
 
спасибо. Выдает ошибку, ваш пост подтвердил догадку, файл временный и .Path ему просто не нравится потому что он как бы нигде
 
Успехов! Отредактируйте, пожалуйста, сообщение #7 и уберите из него цитату (модераторы это не любят ;) )
Владимир
 
Модератор почистил.
Василий, в следующий раз чтайте, что написано на кнопке, еоторую хотите нажать.
Страницы: 1
Наверх