Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 导出列表并将其保存为.CSV文件_Excel_Vba_Csv_Export - Fatal编程技术网

Excel 导出列表并将其保存为.CSV文件

Excel 导出列表并将其保存为.CSV文件,excel,vba,csv,export,Excel,Vba,Csv,Export,我发现这段代码对我的工作帮助很大。我想定制它多一点虽然和我的生活,我不能让它工作。我根本没有编码知识,所以我想我可以从这个社区得到一些帮助 我想包括一些东西,这样当文件被保存时,它会以.CSV文件格式保存。我的代码如下所示 Sub Test() Dim wb As Workbook Dim ThisSheet As Worksheet Dim NumOfColumns As Integer Dim RangeToCopy As Range Dim RangeOfHeader

我发现这段代码对我的工作帮助很大。我想定制它多一点虽然和我的生活,我不能让它工作。我根本没有编码知识,所以我想我可以从这个社区得到一些帮助

我想包括一些东西,这样当文件被保存时,它会以.CSV文件格式保存。我的代码如下所示

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 = 101                   'as your example, just 1000 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 & "\file " & WorkbookCounter
    wb.Close

  'Increment file counter
    WorkbookCounter = WorkbookCounter + 1
  Next p

  Application.ScreenUpdating = True
  Set wb = Nothing
End Sub

Juan,如果我理解的话,你唯一的目标就是保存为CSV。如果是这样的话,除了方法中缺少的第二个参数外,您拥有的所有内容都是正确的;这是最重要的

例:


尝试在将文件保存为CSV时录制宏,然后尝试将其合并到此代码中。如果您有问题,请发回您尝试过的代码,以及您遇到的任何错误的描述。嘿,谢谢您为我回答这个问题。为了澄清,我发布的代码从主文件中每隔101行输出单独的工作簿,但它们以.xlsx格式输出,我希望它们以.csv格式输出。抱歉,如果这是你给我的,我只是不确定在模块中粘贴代码的位置。。。
Sub SaveAsCSV()

Dim wb As Workbook

Set wb = ThisWorkbook

Application.DisplayAlerts = False
wb.SaveAs ThisWorkbook.Path & "\" & "name1", xlCSV
Application.DisplayAlerts = True

End Sub