从Sheet3复制一行,粘贴到Sheet1中,另存为文件,然后转到Sheet 3的下一行

我正试图find一种方法来简化一个非常重复的任务。

这是我第一次尝试构build一个合适的macros,所以对我来说事情是混乱的。

下面是试图使其工作。

Sub test() Dim r As Range, j As Integer Set r = Range("A2:C500") Do Sheets("Sheet1").Range(r.Offset(1, 0)).Select Selection.Copy Sheets("Sheet1").Select Range("D2").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFill Destination:=Range("D2:F494") Range("D2:F494").Select ActiveWorkbook.SaveAs Filename = j, FileFormat:=xlUnicodeText, _ CreateBackup:=False If r.Offset(1, 0) = "" Then Exit Do Loop End Sub 

我在尝试着
– 从工作表3复制行A2:C2
– 将其粘贴到Sheet 1的D2中
– 将该值一直拖到页1的末尾
– 将文件1保存为文本文件(任何文件名都可以,我试图保存为1,2,3等等。)
– 然后转到工作表3(A3:C3)的下一行并重复该过程,直到到达最后一行A500:C500。

当我只logging第一行的macros时,看起来如下:

  Sheets("Sheet3").Select Range("A2:C2").Select Selection.Copy Sheets("Sheet1").Select Range("D2").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFill Destination:=Range("D2:F494") Range("D2:F494").Select ActiveWorkbook.SaveAs Filename:= _ "D:\Users\XXX\Desktop\XXX. XX\1.txt", FileFormat:=xlUnicodeText, _ CreateBackup:=False 

任何帮助将不胜感激!

目前还不清楚你想要做什么。 听起来就像你说你想从一张纸上复制一行(或一行中的某些单元格)到另一张纸上的特定单个单元格,然后将该纸张导出到文本文件。 这似乎很奇怪。 为什么不写一个macros来获取所有你想要的数据,并直接写入文件呢? 你只是想从“sheet3”的前三列的所有行的所有数据导出到一个文件? 或者在“sheet1”的其他部分有这样的样板文件,你想要在这些文本文件的每一个部分?

或者你想创build500个文本文件,每个文件从sheet3的一行?

您正在保存ActiveWorkbook因此它不会将工作表保存为单个文件。 您需要使用Workbooks.Add为每组数据创build一个新的工作Workbooks.Add ,然后在复制数据后保存并closures这些新的工作簿。

(工作表具有SaveAs方法,但不起作用 – 它不会保存工作簿中的单个工作表。)

您可以使用“粘贴”或“粘贴PasteSpecial来填充整个区域,而不必填充整个区域:

 Worksheets("Sheet3").Range("A2:C2").Copy Worksheets("Sheet1").Range("D2:F494").PasteSpecial xlValues Application.CutCopyMode = False 

恐怕录音机只能让你到目前为止,你需要研究和修改它创build的代码。