Страницы: 1
RSS
Закрытие конкретной книги
 
Всем привет! Вопрос, как закрыть конкретную, открытую книгу. Делаю так. Не получается
Код
Dim sDir, sFile, sName As Variant
    sDir = ThisWorkbook.Path & Application.PathSeparator & "Save"
    sFile = sDir & Application.PathSeparator & Range("O4").Value
    sName = Range("O4").Value & ".csv"
    Columns("A:D").Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    ActiveWorkbook.SaveAs Filename:=sFile & ".csv"
    Windows(sName).Activate
    ThisWorkbook.Close False  '"Эта строка закрывает не sName, а файл с которого запускаем
    Windows("Index.xlsm").Activate
    Range("A1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("N4").Select
    ActiveCell.FormulaR1C1 = "Сохранено"
    Range("N5").Select
End Sub
 
Код
Dim sDir, sFile, sName As Variant
dim wb as workbook
    sDir = ThisWorkbook.Path & Application.PathSeparator & "Save"
    sFile = sDir & Application.PathSeparator & Range("O4").Value
    sName = Range("O4").Value & ".csv"
    Columns("A:D").Select
    Selection.Copy

    set wb=Workbooks.Add
    wb.ActiveSheet.Paste
    wb.SaveAs Filename:=sFile & ".csv"
    wb.Close False  '"Эта строка закрывает не sName, а файл с которого запускаем

    Range("A1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("N4").Select
    ActiveCell.FormulaR1C1 = "Сохранено"
    Range("N5").Select
End Sub
 
ThisWorkbook это книга в которой находится сама процедура. Какую именно книгу нужно закрыть? Если это на данный момент активная книга, то
ActiveWorkbook.Close. А лучше присвойте переменной нужную книгу и потом закрывайте ее:
Код
Dim book as Workbook
Set book = Workbook.Add
book.SaveAs блаблабла
book.close False ' Truy 
"Все гениальное просто, а все простое гениально!!!"
 
так
Код
 Dim iPath as String
iPath = Join(Array(ThisWorkbook.Path, "Save", [o4].Value & ".csv"), Application.PathSeparator)

можно записать это
Код
    sDir = ThisWorkbook.Path & Application.PathSeparator & "Save"
    sFile = sDir & Application.PathSeparator & Range("O4").Value
а переменную объявить с типом String вместо двух Ваших с типом Variant
соответственно тут  
Код
wb.SaveAs Filename:=sFile & ".csv"

будет
Код
wb.SaveAs Filename:=iPath
"Все гениальное просто, а все простое гениально!!!"
 
Ребята огромное спасибо. Разные решения. Буду внедрять.
 
Ребята подскажите почему новый файл ругается на открытие. Не тот формат говорит. Где косяк с разрешением?
Код
wb.SaveAs Filename:=sFile & ".csv" 
 
SaveAs - это не открытие, это сохраниение файла "как"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Все верно. И после этого сохранения я открываю файл и ругается. Может я не правильно сохраняю?
Изменено: VB777 - 12.09.2018 15:04:47 (дополнение)
 
Код
wb.SaveAs sFile, xlcsv
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх