2012-03-17 28 views
3

を使用してexcelで開かれた.txtファイルを保存する方法を知っている人はいませんか?Excelファイルを保存するためのランタイムエラー1004(VBAが必要)

私はUserFormでコーディングを試みましたが、エラーが出ています。

お気に入りの場所に保存するか、お気に入りの名前を保存するかを選択することが可能かどうか疑問に思っていましたか?

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 
+0

'MsgBox'はLongを返しますが、それを文字列に強制しています。次にそれをLongに強制的に戻してそれを 'vbNo'、Long定数と比較します。代わりに、 'Dim YesOrNoAnswerToMessageBox As Long'と宣言することで、この前後のキャスティングを避けることができます。 –

答えて

6

ファイルの拡張子(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 
+0

こんにちは!手伝ってくれてどうもありがとう!それを感謝します! – user1204868

4

ActiveWorkbook.SaveAsの後にWorkbooks.Openを使用する理由がわかりません。ワークブックがすでに開いている場合は、これは不要ですか?とにかく

、あなたが必要として、以下を変更しようと保存場所をユーザーに促す:

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 
+0

はい..あなたは正しいです。私はその行のために間違いをすると思います。とにかく助けてくれてありがとう!感謝します! – user1204868

関連する問題