Ошибка времени выполнения 1004 для сохранения файла Excel (требуется VBA) - PullRequest
3 голосов
/ 17 марта 2012

Мне было интересно, если кто-нибудь знает, как использовать для сохранения файла .txt, который открывается в Excel?

Я пытался написать код с помощью пользовательской формы, но этовыдаёт мне ошибки.

Мне было интересно, можно ли дать пользователю возможность сохранить его на своем любимом месте, а также на своем любимом имени?

 Public Sub CommandButton1_Click()
 Dim YesOrNoAnswerToMessageBox As String
 Dim QuestionToMessageBox As String
 Dim CurrentFile As String

 QuestionToMessageBox = "Do you want to save?"

YesOrNoAnswerToMessageBox = MsgBox(QuestionToMessageBox, vbYesNo, "Save file")

If YesOrNoAnswerToMessageBox = vbNo Then
     Unload Me 'Cancellation command
Else
CurrentFile = ThisWorkbook.FullName
ActiveWorkbook.SaveAs "C:\myfile.xls", FileFormat:=52
Workbooks.Open CurrentFile
End If
End Sub

Ответы [ 2 ]

7 голосов
/ 18 марта 2012

Ошибка в том, что ваше расширение файла (xls) не соответствует вашему типу файла (OpenXMLWorkbookMacroEnabled). Вам понадобится расширение xlsm.

Sub Command1Click()

    Dim lResp As Long
    Dim sCurrFile As String
    Dim sNewFile As String

    Const sPROMPT As String = "Do you want to save?"
    Const sFILTER As String = "*.xlsm, *.xlsm"

    lResp = MsgBox(sPROMPT, vbYesNo, "Save File")

    If lResp = vbYes Then
        sCurrFile = ActiveWorkbook.FullName 'save current file name
        sNewFile = Application.GetSaveAsFilename(, sFILTER) 'get new file name
        If sNewFile <> "False" Then 'user didn't cancel
            ActiveWorkbook.SaveAs sNewFile, xlOpenXMLWorkbookMacroEnabled
            ActiveWorkbook.Close False 'close new file
            Workbooks.Open sCurrFile 'open previous text file
        End If
    Else
        Unload Me
    End If

End Sub
4 голосов
/ 18 марта 2012

Я не уверен, почему вы используете Workbooks.Открыть после ActiveWorkbook.SaveAs.Если рабочая книга уже открыта, не является ли это ненужным?

В любом случае, чтобы запросить у пользователя место для сохранения, попробуйте изменить следующие параметры:

Sub DoooooooooooooooooooIt()

    Dim fd As FileDialog

    Set fd = Application.FileDialog(msoFileDialogSaveAs)

    With fd
        .Show
        If .SelectedItems.Count > 0 Then
            Debug.Print .SelectedItems(1)
        End If
    End With

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