0

比方说:

  1. 我在 Excel 电子表格中有 1,000 行单独的信息。(1 列,1,000 行)

  2. 我想将每 100 行保存为自己的文件名。( workbook1.txt, workbook2.txt,workbook3.txt等)

目前,我手动执行此操作:

  • 我将突出显示 100 行。
  • 我使用Control+ C(Copy) 然后Control+ N(New) 创建一个新文件,然后Control+ V(Paste) 然后Control+保存文件,使用使用+S时分配的默认名称命名文件,因此它将保存为, , ...ControlNworkbook1workbook2workbook3

我将它们保存为文本文件 (.txt)。

是否有可能自动化这个过程,也许是一个 bat 文件或其他东西?

4

3 回答 3

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 仅保存活动工作表,因此您不必创建新工作簿。

于 2014-07-24T08:32:55.880 回答
0

如果您可以访问 Linux 系统,则有一个名为“split”的命令行实用程序可以执行此操作:将文本文件拆分为 N 个文件,共 N 个(行、字节、字)。

猫 original_file.csv | 拆分-l 1000

于 2014-07-24T07:46:45.677 回答
0

有时将所有内容复制到新工作表中并删除您不希望保留的内容会更容易。无位置的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格式可供选择,以上使用的是xlTextWindows xlFileFormat。

于 2016-01-26T04:22:12.563 回答