2016-05-13 70 views
0

您好我是vba的新手,我想知道为什么当我试图将这个代码只是一个默认文件而不是csv时输出文件。我通过宏记录创建了这段代码。我希望能够在工作表上工作后将文件另存为csv。我的代码如下Excel VBA saveas csv但文件输出格式不正确

Sub Done() 
     Sheets("Test").Select 
     Range("A2:M3").Select 
     Range("A2:M3").Copy 
     Range("A2").PasteSpecial xlPasteValues 
     Application.CutCopyMode = False 

     Sheets("Test").Select 
     ActiveWorkbook.Save 

     ActiveWorkbook.SaveAs Filename:= _ 
      Application.GetSaveAsFilename, FileFormat:= _ 
      xlCSV, CreateBackup:=False 
      ActiveWorkbook.Close SaveChanges:=False 

    End Sub 

回答

1

若要将文件保存为CSV尝试:

Sub Done() 
    Sheets("Test").Select 
    Range("A2:M3").Select 
    Range("A2:M3").Copy 
    Range("A2").PasteSpecial xlPasteValues 
    Application.CutCopyMode = False 

    Sheets("Test").Select 
    ActiveWorkbook.Save 

    ActiveWorkbook.SaveAs Filename:="C:\filename.csv", _ 
     FileFormat:=xlCSV, CreateBackup:=False 
     ActiveWorkbook.Close SaveChanges:=False 

End Sub 

更改文件的路径和文件名需要。

编辑:使用另存为对话框
________________________________________________________________________________

试试这个:

Sub Done() 
    Sheets("Test").Select 
    Range("A2:M3").Select 
    Range("A2:M3").Copy 
    Range("A2").PasteSpecial xlPasteValues 
    Application.CutCopyMode = False 

    Sheets("Test").Select 
    ActiveWorkbook.Save 

    fname = Application.GetSaveAsFilename(InitialFileName:="Test", FileFilter:="CSV (Comma delimited) (*.csv), *.csv", Title:="Save As") 
    ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlCSV 
End Sub 
+0

谢谢。快速的问题,我必须一直有.csv那里? – Nessuno

+0

@Nessuno - 如果你在谈论'Filename:=“C:\ filename.csv”'那么只要你提到'FileFormat:= xlCSV'就没有必要写'.csv'。这意味着'Filename:=“C:\ filename”'也可以。 – Mrig

+0

@Nessuno - 编辑后的代码将打开SaveAs对话框,供用户输入路径和文件名。 – Mrig

0

当你调用ActiveWorkbook.SaveAs,就需要更换 “在此处输入代码” 与文件名:

ActiveWorkbook.SaveAs Filename:= "MyFilename.csv"_ 
     FileFormat:= xlCSV, CreateBackup:=False _ 
     ActiveWorkbook.Close SaveChanges:=False 

一旦你有一个文件名,你可以保存该文件。你可以选择你想要的任何文件名,并且在这个例子中简单地使用它来代替MyFilename.csv

+0

谢谢你在看到你的评论后意识到我的愚蠢。第一次发布。我的代码没有“在此输入代码”。编辑我的帖子。 – Nessuno

+0

现在究竟发生了什么?你想知道如何使用这段代码,或者如何使它工作? –

+0

我在弄清楚如何将输出文件转换为正确的格式(CSV)。在我最初的代码中,它最终成为一个文件。但现在已经整理出来了。感谢您花费时间和精力来帮助=) – Nessuno