如何使此Excel宏保存为.xls(Excel 97-2003)格式而不是.xlsx?

时间:2019-03-26 00:35:13

标签: excel vba

这个宏非常接近我所需要的: How to split spreadsheet into multiple spreadsheets with set number of rows?

它根据行数将一个长的Excel文件拆分为较小的文件。

但是,我需要对其进行修改以将文件另存为.xls(Excel 97-2003)格式。

我需要更改什么?

这就是我现在正在使用的东西:

Sub Test()
  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 = 100                   '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 & "\splitoutput" & WorkbookCounter
    wb.Close

    'Increment file counter
    WorkbookCounter = WorkbookCounter + 1
  Next p

  Application.ScreenUpdating = True
  Set wb = Nothing
End Sub

1 个答案:

答案 0 :(得分:0)

Workbook.SaveAsxlFileFormat enumeration文档在这里很有帮助。

更改

wb.SaveAs ThisWorkbook.Path & "\splitoutput" & WorkbookCounter

wb.SaveAs FileName:=ThisWorkbook.Path & "\splitoutput" & WorkbookCounter, FileFormat:=xlWorkbookNormal