动态复制多张工作表中的5列并将其另存为.txt

时间:2018-09-17 06:11:23

标签: excel vba excel-vba

我有多个具有以下示例格式的文件,我们需要为“ abc”提取5列,然后将其复制到另一张工作表中,然后以“ .txt”格式保存为“ abc.txt”(基于_之后的值)。我们需要同时复制Set1及其下面的任何其他集合。挑战是要为所有数据复制5列,即abc,def,ghi等。循环将一直运行,直到列中没有数据为止。

我们坚持这一点。请帮忙。

Set 1                                   

日期0_abc 5_abc 10_abc 15_abc 20_abc 0_def 5_def 10_def 15_def 20_def

2018年1月1日36995485 61 24526982982487404491

2018年1月2日662881379778778853328430996776508

2018/1/3 689 672 479 908 815 235 611 996 685 771

Set 2                                   

日期0_abc 5_abc 10_abc 15_abc 20_abc 0_def 5_def 10_def 15_def 20_def

2018年1月1日838815631336477477164511682550197

2018年1月2日19534445464537516516425904971676

____________

输出文件如下:

abc.txt

设置1

日期0_abc 5_abc 10_abc 15_abc 20_abc

1/1/2018 369 954 85 61 24

2018年1月2日662 881 379 778 853

2018/1/3 689672479908815

Set 2                                   

日期0_abc 5_abc 10_abc 15_abc 20_abc

1/1/2018 838815631336336477

2018年1月2日19534445464564537

----------

def.txt

设置1

日期0_def 5_def 10_def 15_def 20_def

1/1/2018 526982487404491

2018年1月2日328430430996776508

2018/1/3/235 611996996685771

Set 2                                   

日期0_def 5_def 10_def 15_def 20_def

2018年1月1日164511682550197

2018年1月2日516425904904971676

____________

____________

代码示例

Sub Final6()
    Columns("A:A").Select
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    Range("A1").Select
    ActiveSheet.Paste
    ActiveWorkbook.Worksheets(1).Activate
    Columns("B:F").Select
    Selection.Copy
    ActiveWorkbook.Worksheets(2).Activate
    Range("B1").Select
    ActiveSheet.Paste
    ActiveWorkbook.Worksheets(1).Activate
    Columns("G:K").Select
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    Range("B1").Select
    ActiveSheet.Paste
    ActiveWorkbook.Worksheets(1).Activate
    Columns("A:A").Select
    Selection.Copy
    ActiveWorkbook.Worksheets(2).Activate
    Range("A1").Select
    ActiveSheet.Paste
    ActiveWorkbook.Worksheets(1).Activate
    Columns("L:P").Select
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    Range("B1").Select
    ActiveSheet.Paste
    ActiveWorkbook.Worksheets(1).Activate
    Columns("A:A").Select
    Selection.Copy
    ActiveWorkbook.Worksheets(2).Activate
    Range("A1").Select
    ActiveSheet.Paste
    ActiveWorkbook.Worksheets(1).Activate
    Columns("Q:U").Select
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    Range("B1").Select
    ActiveSheet.Paste
    ActiveWorkbook.Worksheets(1).Activate
    Columns("A:A").Select
    Selection.Copy
    ActiveWorkbook.Worksheets(2).Activate
    Range("A1").Select
    ActiveSheet.Paste
    ActiveWorkbook.Worksheets(1).Activate
    Columns("V:Z").Select
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    Range("B1").Select
    ActiveSheet.Paste
    ActiveWorkbook.Worksheets(1).Activate
    Columns("A:A").Select
    Selection.Copy
    ActiveWorkbook.Worksheets(2).Activate
    Range("A1").Select
    ActiveSheet.Paste
End Sub

1 个答案:

答案 0 :(得分:0)

您必须证明您已经解决了问题,而不是要求我们完成这项工作。因此,我将为您提供链接和方法来解决您的问题。对此进行研究将有助于您了解有关vba的更多信息。

我还没有完成所有工作,但这会为您提供帮助。但是,我给您提供了这一功能,可让您将数据保存在一个文本文件中(因为这可能很棘手):

Dim filename As String, lineText As String, chemin As String
    Dim I As Integer, J As Integer
    Dim folder As FileDialog
Dim data as Range
Set data = your_sheet_you_want_in_your_file.Range(Cells(firstrow, firstcol),Cells(lastrow,lastcol))


Set folder = Application.FileDialog(msoFileDialogFolderPicker) 'this is to ask the user where he wants to save the txt file
        folder.Show
        path = folder.SelectedItems(1)

    filename = path & "\" & Name_of_your_file & ".txt"

    Open filename For Output As #1

    For I = 1 To data.Rows.count
        For J = 1 To data.Columns.count
            lineText = Trim(IIf(J = 1, "", lineText & " ") & data.Cells(I, J))
        Next J
        Print #1, lineText
    Next I

    Close #1
MsgBox "Txt file created under :" & Chr(13) & Chr(10) & filename

但是我还没有对其进行测试,因此,当您在代码上做了更多工作后,请回来给我们