每100行数据创build一个文本文件
我们说:
-
我在Excel电子表格中有1000行独立的信息。 (1列1000行)
-
我想将每个100行保存为自己的文件名。 (
workbook1.txt
,workbook2.txt
,workbook3.txt
等)
目前,我手动这样做:
- 我将突出100行。
- 我使用Control + C (复制),然后控制 + N (新build)创build一个新文件,然后控制 + V (粘贴),然后控制 + S保存文件,命名文件与默认名称分配使用Control + N ,所以它会被保存为
workbook1
,workbook2
,workbook3
…
我将它们保存为文本文件(.txt)。
有可能自动化这个过程,也许是一个蝙蝠文件或东西?
您可以使用简单的VBA脚本,如:
Dim counter As Integer counter = 0 Do While counter < 10 Range("A1:A100").Select Selection.Copy Sheets("Sheet2").Select ActiveSheet.Paste ActiveWorkbook.SaveAs Filename:="C:\test" & CStr(counter) & ".txt", _ FileFormat:=xlTextMSDOS, CreateBackup:=False Sheets("Sheet1").Select Range("A101:A1000").Select Selection.Cut Range("A1").Select ActiveSheet.Paste counter = counter + 1 Loop
保存为xlTextMSDOS只保存活动工作表,因此您不必创build新的工作簿。
如果你有权访问Linux系统,有一个名为“split”的命令行实用程序就是这样做的:将一个文本文件分割成N个文件(行,字节,单词)。
猫original_file.csv | 拆分-1 1000
有时,将所有内容复制到新的工作表中并删除不想保留的内容就简单多了。 将Worksheet.Copy方法设置为无位置将打开一个带有单个工作表的新的空白工作簿; 这是原件的副本。
Sub split_100() Dim i As Long, lr As Long, fn As String 'Application.ScreenUpdating = false 'uncomment when it works right for you With Worksheets("Sheet1") lr = .Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To lr Step 100 .Copy With ActiveWorkbook With .Worksheets(1) If i > 1 Then _ .Cells(1, 1).Resize(i - 1, 1).EntireRow.Delete .Cells(101, 1).Resize(lr, 1).EntireRow.Delete End With fn = Environ("TMP") & "\Workbook" & Format(Int(i / 100) + 1, "00") 'no extension; leave that for xlTextWindows 'Application.DisplayAlerts = False 'uncomment to avoid overwrite warnings .SaveAs Filename:=fn, FileFormat:=xlTextWindows .Close SaveChanges:=False End With Next i End With Application.ScreenUpdating = True End Sub
删除不需要的内容后, Workbook.SaveAs方法将该循环带入Workbook.Close 。 有许多TXT格式可供select,上面使用了xlTextWindows xlFileFormat。