将excel范围复制到新的xlsx文件

时间:2017-06-12 07:52:18

标签: excel vba

我正在尝试使用以下代码将范围从启用宏的工作簿复制到新的excel文件,然后将其发送到公司。

将新文件保存为csv时代码有效,但我注意到它丢失了格式,所以我需要将其保存为excel文件。

我收到运行时错误1004,并且说明方法工作簿中的方法保存失败。

我做的唯一更改是使用.csv扩展名并更改为.xlsx。

Sub exportJuneCredit()
     '
     ' export Macro

    Range("A1:H500").Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    ActiveWorkbook.SaveAs Filename:= _
    "file path Credits.xlsx" _
    , FileFormat:=xlsx, CreateBackup:=False
    Application.DisplayAlerts = False
    ActiveWorkbook.Close
    Application.DisplayAlerts = True

End Sub

2 个答案:

答案 0 :(得分:0)

试试这个: -

Sub exportJuneCredit()
    Dim WkSht_Src   As Worksheet
    Dim WkBk_Dest   As Workbook
    Dim WkSht_Dest  As Worksheet
    Dim Rng As Range

    Set WkSht_Src = ActiveSheet
        Set Rng = WkSht_Src.Range("A1:H500")
            Set WkBk_Dest = Application.Workbooks.Add
                Set WkSht_Dest = WkBk_Dest.Worksheets(1)
                    Rng.Copy WkSht_Dest.Range("A1")
                Set WkSht_Dest = Nothing
                WkBk_Dest.SaveAs Filename:="file path Credits.xlsx", FileFormat:=XlFileFormat.xlWorkbookNormal, CreateBackup:=False
                WkBk_Dest.Close 0
            Set WkBk_Dest = Nothing
        Set Rng = Nothing
    Set WkSht_Src = Nothing

End Sub

我相信你遇到的问题是activeworkbook可能不是你想要保存的工作簿,为了解决这个问题,我已明确声明了项目。

我还将复制/粘贴更改为仅使用复制功能。

答案 1 :(得分:0)

尽管在创建文件后不允许我打开文件。如YowE3K所述,将文件格式更改为:xlOpenXMLWorkbook。 – PA060 17年6月12日在11:42

由Gary Evans提供的代码将另存为向后兼容的.xls格式。如果您将文件名更改为以.xls作为扩展名,则可以打开它。

如果要使用.xlsx文件,请按照YowE3K的说明将文件格式更改为xlOpenXMLWorkbook。