Сохранение файла Excel на основе предварительно заполненных ячеек - PullRequest
0 голосов
/ 08 марта 2019

Я создал командную кнопку, которая позволит пользователю сохранять файл на основе значений в ячейках Excel, в которых ячейки предварительно заполнены. Также, как вы реализуете эту функцию GetSaveAsFilename, чтобы пользователь мог выбрать место сохранения, но не изменить название. Но я получаю ошибку при выполнении этого кода.

Private Sub CommandButton2_Click()
Sub SaveMyWorkbook()

    Dim strPath As String
    Dim strFolderPath As String

    strFolderPath = "C:\Users\"

    strPath = strFolderPath & _
        DoNotPrint - Setup.Range("C7").Value & " " & _
        DoNotPrint - Setup.Range("C8").Value & " " & _
        DoNotPrint - Setup.Range("C45").Value & " " & _
        DoNotPrint - Setup.Range("C9").Value & ".xlsm"

End Sub

Ответы [ 3 ]

3 голосов
/ 08 марта 2019

Лучшая догадка:

With Thisworkbook.sheets("DoNotPrint - Setup")

    strPath = strFolderPath & .Range("C7").Value & " " & _
                              .Range("C8").Value & " " & _
                              .Range("C45").Value & " " & _
                              .Range("C9").Value & ".xlsm"

End with

Выбор папки для сохранения:

VBA EXCEL для ответа пользователя на выбор папки и возврат пути в виде строковой переменной

1 голос
/ 08 марта 2019

Чтобы позволить пользователю выбрать папку, я использую это:

Private Sub CommandButton2_Click()

    Dim strPath As String
    Dim strFolderPath As String

    strFolderPath = "C:\Users\"

    strPath = strFolderPath & _
        DoNotPrint - Setup.Range("C7").Value & " " & _
        DoNotPrint - Setup.Range("C8").Value & " " & _
        DoNotPrint - Setup.Range("C45").Value & " " & _
        DoNotPrint - Setup.Range("C9").Value & ".xlsm"

    With Application.FileDialog(msoFileDialogSaveAs)
        .AllowMultiSelect = False
        .InitialFileName = strPath
        .FilterIndex = 2
        .Title = Place Title Here if you want
            If .Show = -1 Then .Execute
    End With
End Sub
0 голосов
/ 08 марта 2019

На основании ответа Тима и Зака ​​это сработало

Private Sub CommandButton2_Click()
    Dim strPath As String
    Dim strFolderPath As String

    strFolderPath = "C:\Users\"


With ThisWorkbook.Sheets("DoNotPrint - Setup")

    strPath = strFolderPath & .Range("C7").Value & " " & _
                              .Range("C8").Value & " " & _
                              .Range("C45").Value & " " & _
                              .Range("C9").Value & ".xlsm"
    End With
    With Application.FileDialog(msoFileDialogSaveAs)
        .AllowMultiSelect = False
        .InitialFileName = strPath
        .FilterIndex = 2

            If .Show = -1 Then .Execute
    End With

End Sub
...