Страницы: 1
RSS
Сохранение файла с именем содержимого ячейки в исходную папку
 
Добрый всем день.
Здесь на форуме нашел макрос, который сохраняет файл с именем содержимого ячейки О3 в указанную директорию при закрытии программы.
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="F:Табель " & CStr(Range("O3")) & ".xlsm"
Application.DisplayAlerts = True
End Sub

Помогите его исправить, чтобы сохранение шло в исходную папку
 
После того, как книга открыта - как понять, из какой директории она открыта? Нужно еще при открытии запоминать путь... А уж сохранить по пути, который есть, не проблема:
вмето  "F:Табель " записать путь & "\"
 
Да, но когда мы просто закрываем файл, система спрашивает сохранять изменения или нет и если да, то не спрашивает куда, а сохраняет в исходную. Значит знает. Вот и думал использовать это.
Еще вот это нашел. Заинтересовала строчка strPath = ishWB.Path ' определяем путь к папке из которой запущен файл . Может как-то можно прикрутить к первому макросу?
Я не силен в макросах. Помогите пожалуйста.
Просто нужно чтобы при закрытии файла он сохранялся под именем содержимого определенной ячейки в исходную директорию.

Код
Sub Backup_Workbook()  
   Dim ishWB As Workbook  
   Dim newWB As Workbook  
   Dim x As String, strPath As String, FileNameXls As String    'переменные пути и имени файла  
   Dim strFirma As String, strDate As String  
   Dim iNum As Integer  
 
   Set ishWB = ThisWorkbook    'книга из которой запущен макрос  
   Set newWB = Workbooks.Add    'новая книга  
 
   ishWB.Sheets("Экспорт").Copy Before:=newWB.Sheets(1)    'копируем лист отчета в новую книгу  
 
   iNum = Val(Application.Version)    'проверка версии Ехс  
   'указываем путь (папку) для сохранения файла  
   strPath = "F:\DownLoad\тест"  
   'strPath = "C:\Оперативный анализ\Экспорт"  
   'если нужно сохранить в ту же папку что и исходный файл с макросом  
   '  =========================
   strPath = ishWB.Path ' определяем путь к папке из которой запущен файл 
   '  =========================
   'обработка ошибки  
   On Error Resume Next  
   x = GetAttr(strPath) And 0  
   If Err = 0 Then    ' если путь существует - сохраняем копию книги  
       strDate = Format([c1], "mmmm yyyy") 'преобразуем дату в текст
       'сосчитываем имя фирмы из ячейки  
       strFirma = [d1].Text 'записали значение в переменную
       'удаляем кавычки - они запрещены в имени файла  
       strFirma = Trim(Replace(strFirma, """", ""))  
       strFirma = Replace(strFirma, Chr(171), "")  
       strFirma = Trim(Replace(strFirma, Chr(187), ""))  
 
       'формируем полный путь и имя файла для сохранения  
       FileNameXls = strPath & "\" & "Отчёт " & strFirma & " " & strDate & ".xlsb"  
       'сохраняем книгу  
       ActiveWorkbook.SaveAs Filename:=FileNameXls, FileFormat:= _  
                             xlExcel12, CreateBackup:=False  
   Else    'если путь не существует - выводим сообщение  
         
       MsgBox "Папка " & strPath & " недоступна или не существует!", vbCritical  
 
   End If  
     
End Sub
Изменено: Сергей Зотов - 28.11.2020 03:30:27
 
Попробуйте так:
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & CStr(Range("O3")) & ".xlsm"
    Application.DisplayAlerts = True
End Sub
Изменено: Александр Макаров - 29.11.2020 08:38:38
 
Не забывайте - не всё что запишите в О3 возможно использовать как имя файла!
 
Александр Макаров, Спасибо. То, что нужно.
Страницы: 1
Наверх