VBA Excel сохранить файл .xlsx с гибким именем - PullRequest
0 голосов
/ 18 февраля 2020

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

Один ответ здесь:

Сохраните файл с имя, которое соответствует значению ячейки

, однако я хочу также некоторую фиксированную часть имени, которая не изменится в отличие от части, описанной в запросе выше.

На основе В этом решении я попытался написать что-то следующее:

Sub Save ()
Dim name As String, Custom_Name As String

name = Range("A2").Value
Custom_Name = "NBU" & name & "- Opportunity list.xlsx"
ActiveWorkbook.SaveAs Filename:=Custom_Name

В результате я получаю сообщение об ошибке:

Это расширение нельзя использовать с выбранным типом файла. Измените расширение файла в текстовом поле «Имя файла» или выберите файл другого типа, изменив тип файла «Сохранить как».

Я хотел бы иметь этот файл с расширением .xlsx.

Excel VBA - сохранить как с расширением .xlsx

Ответ выше не совсем соответствует моей ситуации. По возможности будет необходимо удалить все кнопки управления формой во вновь сохраненном файле.

Спасибо и С уважением,

End Sub

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

В указанной подпрограмме нет действий по сохранению файла. Он просто берет содержимое ячейки и создает строку с переносимыми значениями.

Я не совсем уверен, какова ваша цель, но вам нужно добавить действие из второй предоставленной вами ссылки. Workbook.SaveAs Метод .

См. Приведенный ниже код для рабочего примера, который я создал для тестирования.

Public Sub Save()
    Dim name As String, Custom_Name As String

    name = Range("A2").Value
    Custom_Name = ThisWorkbook.Path & "\" & "NBU" & name & " - Opportunity list.xlsx"

    'Disable alert when saving
    Application.DisplayAlerts = False

    'Save the workbook.
    ActiveWorkbook.SaveAs Filename:=Custom_Name, FileFormat:=51

End Sub

Обратите внимание, что после выполнения этого кода вы будете во вновь созданном файл. Это не экспорт.

Проверьте это и дайте мне знать, если у вас есть какие-либо вопросы. В вашем коде есть несколько вещей, которые кажутся ненужными, но мы можем решить их, если вы найдете ответы на свой первый вопрос.

Редактировать:

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

name = Worksheets("Sheet1").Range("A2")

0 голосов
/ 18 февраля 2020

Вы сказали, что имя файла 'Opportunity v1.0.xslm'. Будет ли это иметь макросы? Моя версия Excel жалуется на использование .xlsx, если в книге есть код.

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