1

我正在尝试找到一种方法来简化一项非常重复的任务。

这是我第一次尝试构建适当的宏,所以事情让我感到困惑。

下面是使它工作的尝试。

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
- 将其粘贴到工作表 1 的 D2
- 将该值一直拖到工作表 1 的末尾
- 将工作表 1 保存为文本文件(任何文件名都可以。我正在尝试另存为 1、2、3 等。)
- 然后转到工作表 3 的下一行 (A3:C3) 并重复该过程,直到到达最后一行 A500:C500。

当我只为第一行录制宏时,它看起来如下:

  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

任何帮助将不胜感激!

4

2 回答 2

0

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

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

您可以使用粘贴填充整个区域,也可以PasteSpecial不必填充:

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

恐怕记录器只能让你走这么远,你需要研究和修改它创建的代码。

于 2013-07-18T23:44:34.473 回答
0

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

或者您想创建 500 个文本文件,每个文件都有来自 sheet3 的一行?

于 2013-07-18T23:36:18.827 回答