Получение правильного имени сохранения по умолчанию и сохранение каталога с пробелами в VBA - PullRequest
0 голосов
/ 29 октября 2018

У меня много шаблонов Excel с разными именами. Один из них называется griep-weerstand v4.xlsb . Но мой вопрос касается всех шаблонов.

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

каталог сохранения по умолчанию: M: \ Commercie \ Marktdata \ IRi \ Segment ontwikkeling

имя файла по умолчанию (в этом примере): griep-weerstand v4.xlsb

Вот что я попробовал в последний раз:

Sub save_workbook_name()
Dim workbook_Name As Variant
Dim location As String
Dim workbookname As String
Dim workbookdirectory As String
Dim correctfilename As Variant

workbookname = ActiveWorkbook.Name
workbookdirectory = "M:\Commercie\Marktdata\IRi\Segment ontwikkeling\"

correctfilename = """M:\Commercie\Marktdata\IRi\Segment ontwikkeling\" & workbookname & """"
workbook_Name = Application.GetSaveAsFilename(fileFilter:="Excel binary sheet (*.xlsb), *.xlsb", initialfilename:=correctfilename)

If workbook_Name <> False Then

    ActiveWorkbook.SaveAs Filename:=workbook_Name, FileFormat:=50

End If
End Sub

Я думал, что чтение имени книги в виде строки и добавление правильного количества кавычек в объединенный initialfilename поможет.

Когда я добавляю окно сообщения, отображающее объединенный результат, я получаю правильный путь и имя:

enter image description here

Но я продолжаю иметь диалоговое окно сохранения как в правильном каталоге, но без имени файла, когда использую это в строке getsaveasfilename.

Как мне получить комбинацию каталога и имени файла для работы с getsaveasfilename? Или мне просто использовать его в скрипте activeworkbook.saveas?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Это кажется немного сложным - вы не пробовали более простое:

workbook_Name = Application.GetSaveAsFilename(fileFilter:="Excel binary sheet (*.xlsb), 
*.xlsb", initialfilename:=workbookdirectory & ActiveWorkbook.Name)

полный код на основе вашего примера здесь: .. это работает для меня именно так, как вы хотите (проверено с именем файла, содержащим пробелы)

Sub save_workbook_name()
Dim workbook_Name As Variant
Dim location As String
Dim workbookname As String
Dim workbookdirectory As String
Dim correctfilename As Variant

'workbookname = ActiveWorkbook.Name
workbookdirectory = "C:\Users\myusername\folder with spaces too\"

'correctfilename = """M:\Commercie\Marktdata\IRi\Segment ontwikkeling\" & workbookname & """"
workbook_Name = Application.GetSaveAsFilename(fileFilter:="Excel binary sheet (*.xlsb), *.xlsb", InitialFileName:=workbookdirectory & ActiveWorkbook.Name)

If workbook_Name <> False Then

    ActiveWorkbook.SaveAs Filename:=workbook_Name, FileFormat:=50

End If
End Sub
0 голосов
/ 29 октября 2018

Не знаю, правильно ли я вас понимаю, но вы можете попробовать что-то вроде этого:

Dim actWb As Workbook
Dim newName As String

Set actWb = ActiveWorkbook
newName = "M:\Commercie\Marktdata\IRi\Segment ontwikkeling\" & actWb.Name
actWb.SaveAs newName
...