Страницы: 1
RSS
Создание копии файла с изменением расширения VBA, Создание копии файла с изменением расширения xlsm на xlsx
 
Всем доброго времени.
Имеется файл в котором ведется журнал работ. Файл должен храниться доступно на сетевом диске, но т.к. временами случаются сбои сети, веду файл на локальном диске с последующим копированием на сетевой. Обновлять файл приходится часто, поэтому решил облегчить себе жизнь - делать это макросом. Но народ на работе пугливый, макросов боится, поэтому в доступе желательно хранить файл как обычную таблицу xlsx.
Посмотрел образцы в приемах и на https://www.excel-vba.ru/ . На их основе наваял.
Всё получилось, работает, но некоторые моменты не нравятся.
Если использовать ActiveWorkbook.SaveAs то после выполнения кода активной становится книга-копия для всех, и если файл не закрыть, то последующие изменения вносятся в неё, а не в исходный файл, и могут элементарно не сохраниться при перезаписаны исходным файлом, т.е. надо следить за тем, какой файл правишь.
Код
Sub Backup()
    iPath$ = "z:\eee\hhhh\jjjj\"
    iFileName$ = ActiveWorkbook.Name

    ActiveWorkbook.Save

    iFileName$ = Left(iFileName$, Len(iFileName$) - 4) & "xlsx"
    ActiveWorkbook.SaveAs Filename:= _
        iPath$ & iFileName$, FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False
    
End Sub

При использовании ActiveWorkbook.SaveCopyAs, вроде бы все происходит как надо, но при попытке открыть файл-копию выдается сообщение об ошибке, что расширение не соответствует типу файла, и не открывается.
Код
Sub Backup_Active_Workbook()
    Dim x As String
    strPath = "z:\eee\hhhh\jjjj"     'папка для сохранения резервной копии
    On Error Resume Next
    x = GetAttr(strPath) And 0
    If Err = 0 Then ' если путь существует - сохраняем копию книги, добавляя дату-время
        FileNameXls = strPath & "\" & "AAAA" & ".xlsx"
        ActiveWorkbook.SaveCopyAs Filename:=FileNameXls
    Else 'если путь не существует - выводим сообщение
        MsgBox "Папка " & strPath & " недоступна или не существует!", vbCritical
    End If
End Sub
Что можно сделать со всем этим? Хотелось бы чтоб работало так: вносятся правки в исходный файл, запускается код создающий копию в формате xlsx; вносятся новые правки и, дальше по накатанной.
 
Копия - на то она и копия, что и расширение будет аналогичное. Вариант: Сохранить Как, закрыть, а потом снова открыть "старую" книгу.
 
Юрий М, я уже об этом думал, но не знаю, можно ли как-нибудь вернуть в коде фокус на файл исходник? Или перевызвать его?
Изменено: cuprum - 09.09.2018 20:36:05
Страницы: 1
Наверх