VBA代码将Excel文件保存到csv

时间:2018-07-26 19:34:12

标签: excel excel-vba

我有以下代码来创建单独的文件并将其另存为csv。但是我有些警告:“文件格式和扩展名不匹配。文件可能已损坏或不安全。您能帮我解决这个问题吗?

Sub Button3_Click()
 Dim wb As Workbook
 Dim ThisSheet As Worksheet
 Dim NumOfColumns As Integer
 Dim RangeToCopy As Range
 Dim RangeOfHeader As Range        'data (range) of header row
 Dim WorkbookCounter As Integer
 Dim RowsInFile         'how many rows (incl. header) in new files?

 Application.ScreenUpdating = False

 'Initialize data
 Set ThisSheet = ThisWorkbook.ActiveSheet
 NumOfColumns = ThisSheet.UsedRange.Columns.Count
 WorkbookCounter = 1
 RowsInFile = 11  'as your example, just 10 rows per file

 'Copy the data of the first row (header)
 Set RangeOfHeader = ThisSheet.Range(ThisSheet.Cells(1, 1), 
 ThisSheet.Cells(1, NumOfColumns))

 For p = 2 To ThisSheet.UsedRange.Rows.Count Step RowsInFile - 1
 Set wb = Workbooks.Add

 'Paste the header row in new file
 RangeOfHeader.Copy wb.Sheets(1).Range("A1")

 'Paste the chunk of rows for this file
 Set RangeToCopy = ThisSheet.Range(ThisSheet.Cells(p, 1), ThisSheet.Cells(p + RowsInFile - 2, NumOfColumns))
 RangeToCopy.Copy wb.Sheets(1).Range("A2")

'Save the new workbook, and close it
wb.SaveAs ThisWorkbook.Path & "\test" & WorkbookCounter
wb.Close SaveChanges:=False

'Increment file counter
WorkbookCounter = WorkbookCounter + 1
Next p

Application.ScreenUpdating = True
Set wb = Nothing
End Sub

1 个答案:

答案 0 :(得分:2)

明确告诉您要CSV文件。

...
application.displayalerts = false
wb.SaveAs filename:=ThisWorkbook.Path & "\test" & WorkbookCounter, _
          fileformat:=xlCSV
wb.close savechanges:=false
application.displayalerts = true
...