Параметр Сохранить как в пути к активной книге - PullRequest
0 голосов
/ 28 апреля 2020

Доброе утро,

Я бы хотел, чтобы каталог «Сохранить как» находился в том же пути, откуда берется моя первоначальная книга. Моя ситуация выглядит следующим образом: enter image description here

У меня есть файл по умолчанию в каталоге CF10. После опции SaveAs мой новый файл сохраняется в Документах. Я не хочу этого Я хочу, чтобы мое окно SaveAs всплыло по тому же пути, откуда мой исходный файл.

В моем коде я установил path =, но я думаю, что это слишком поздно, так как File начинает обрабатывать вновь сохраненную книгу как Active или This. Мне нужно какое-то решение, которое установит путь непосредственно перед сохранением новой книги.

Возможно ли это?

 Sub SaveAs()
 Dim name As String, name2 As String, custom_name As String, filename As String

 Dim fs As Worksheet

 Dim fPth As Object
 Set fPth = Application.FileDialog(msoFileDialogSaveAs)
 Set fw = Sheets("Frontsheet")
 'name = fw.Range("AA9")
  name = fw.Range("D18")
 name2 = fw.Range("D38")
 custom_name = "DPP_" & name & "_v." & name2 & ".0"
  path = ActiveWorkbook.path & "\" & custom_name

 'Statement for As-built version

 If fw.Range("D38").Value = "As-built" Then
 custom_name = "DPP_" & name & "_AS-BUILT"
 End If

 Application.DisplayAlerts = False
 ActiveWorkbook.SaveAs filename:=custom_name, FileFormat:=52

filename = custom_name

 With fPth
.InitialFileName = filename
.Title = "Save your File"
.FilterIndex = 2
.InitialView = msoFileDialogViewList
If .Show <> 0 Then
ThisWorkbook.SaveAs filename:=.SelectedItems(1), FileFormat:=xlOpenXMLWorkbookMacroEnabled
 End If
 End With

 End Sub
 [1]: https://i.stack.imgur.com/EP3u0.png

1 Ответ

0 голосов
/ 28 апреля 2020

Решение может выглядеть так:

 Sub SaveAs()
 Dim name As String, name2 As String, custom_name As String, filename As String

 Dim fs As Worksheet

'Dim fPth As Object
'Set fPth = Application.FileDialog(msoFileDialogSaveAs)
 Set fw = Sheets("Frontsheet")
'name = fw.Range("AA9")
 name = fw.Range("D18")
 name2 = fw.Range("D38")
 custom_name = "DPP_" & name & "_v." & name2 & ".0"


 'Statement for As-built version

 If fw.Range("D38").Value = "As-built" Then
 custom_name = "DPP_" & name & "_AS-BUILT"
 End If

 path = ActiveWorkbook.path & "\" & custom_name & ".xlsm"

   'Application.DisplayAlerts = False
   ActiveWorkbook.SaveAs filename:=path, FileFormat:=52

filename = custom_name

  'With fPth
    '.InitialFileName = filename
    '.Title = "Save your File"
    '.FilterIndex = 2
    '.InitialView = msoFileDialogViewList
  'If .Show <> 0 Then
  ' ThisWorkbook.SaveAs filename:=.SelectedItems(1), 
  FileFormat:=xlOpenXMLWorkbookMacroEnabled
  'End If
  'End With

 End Sub

Где в строке ActiveWorkbook.SaveAs мы можем поставить filename=path, тогда все будет хорошо. Мы должны помнить расширение файла.

Более того, я отключил диалоговые строки всплывающих файлов. Теперь файл можно сохранить напрямую, а не с помощью параметра «Сохранить как».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...