#excel #vba #xlsb
Вопрос:
У меня есть макрос, который создает резервную копию. Я хочу, чтобы макрос был доступен для всей моей книги, поэтому я поместил его в свой личный файл.xlsb. Но резервная копия сохраняется по пути .xlsb, а не по пути книги, над которой я на самом деле работаю… Может быть, все дело в Приложении.Эта рабочая тетрадь.код пути
Sub Backup() 'makes backup Dim MyDate MyDate = Date Dim myTime myTime = Time Dim TestStr As String TestStr = Format(myTime, "hh.mm.ss") Dim Test1Str As String Test1Str = Format(MyDate, "DD-MM-YYYY") Dim strFolderName As String Dim strFolderExists As String Dim path As String 'the problem must be in the code below path = Application.ThisWorkbook.path strFolderName = path amp; "Backup" strFolderExists = Dir(strFolderName, vbDirectory) Debug.Print path Application.DisplayAlerts = False If strFolderExists = "" Then MkDir strFolderName path = strFolderName amp; Test1Str amp; "_" amp; TestStr amp; "_" amp; ActiveWorkbook.Name Else path = strFolderName amp; Test1Str amp; "_" amp; TestStr amp; "_" amp; ActiveWorkbook.Name End If ActiveWorkbook.SaveCopyAs Filename:=path Application.DisplayAlerts = True End Sub
Комментарии:
1. Да, вы правы. Вы сохраняете
ActiveWorkbook
, но используетеThisWorkbook.Path
. Вы должны использоватьActiveWorkbook.Path
2. Примечание: эта строка
path = strFolderName amp; Test1Str amp; "_" amp; TestStr amp; "_" amp; ActiveWorkbook.Name
отображается в обеих ветвях заявления If. Вместо этого эту строку можно было бы переместить за пределы оператора If, иElse
ветвь можно было бы удалить.3. Спасибо @Toddleson, вот и все! Работает отлично!