让我们说:
我在Excel电子表格中有1,000行独立信息。 (1列,1,000行)
我想将每100行保存为自己的文件名。 (workbook1.txt
,workbook2.txt
,workbook3.txt
等。)
目前,我手动执行此操作:
workbook1
,workbook2
,{{1} } ... 我将它们保存为文本文件(.txt)。
是否可以自动执行此过程,可能是bat文件或什么?
答案 0 :(得分:1)
您可以使用简单的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只保存活动工作表,因此您不必创建新工作簿。
答案 1 :(得分:0)
如果您可以访问Linux系统,那么有一个名为“split”的命令行实用程序就是这样做的: 将文本文件拆分为N个文件(行,字节,单词)。
cat original_file.csv | split -l 1000
答案 2 :(得分:0)
有时,将所有内容复制到新工作表中并删除您不希望保留的内容会更容易。 Worksheet.Copy method到任意位置都会打开一个包含单个工作表的新空白工作簿;这是原件的副本。
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 method会将周期设为Workbook.Close。有许多TXT格式可供选择,上面使用xlTextWindows xlFileFormat。