excel VBA循环将每行数据粘贴到模板中,并另存为?

kkbh8khc  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(186)

源报告和输出模板非常干净(并且具有相同的列),因此这实际上不应该像我所做的那样困难。
我有大约100行的透视表销售数据,想要将每一行(除标题外)复制/粘贴到一个标准模板文件中,并按公司名称保存。
源数据文件(ApptionmentData. xlsm)包含A行中的数据:选项卡名称为[Data]。
列"A"包含公司名称(每个名称都是唯一的)。列"B:AI"包含销售数据(每个列标题都是唯一的)。列"AJ"包含我已连接并希望用于另存为的文件名。
目标文件(Template.xlsm)包含一个名为[TBSource]的选项卡,在另存为和循环之前,我想在其中粘贴一行(TO ROW 2)。我已经使两个选项卡的标题一致,以尝试使其不那么复杂,所以我只需要在第一次迭代中复制/粘贴第2行。
粘贴到[TBSource]的第2行后,我想按"AJ2"列中的值另存为,然后继续将[Data]的第3行复制/粘贴到下一个模板(第2行)。
目标是[Data]选项卡的每一行都有一个单独的文件。
子创建组织者()

Dim wbstart As Workbook, wbtarget As Workbook 'You need As for each one, otherwise they are variants
Dim strPath As String
Dim cell As Range
Dim i As Long
strPath = ActiveWorkbook.Path
Application.ScreenUpdating = False

Set wbstart = ActiveWorkbook
Set wbtarget = Workbooks.Open("C:\Users\Desktop\Macro\Template Organizer\Template.xlsm")
With wbstart.Sheets("Data")
    For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range(.Cells(i, 1), .Cells(i, 36)).Copy Destination:=wbtarget.Sheets("TBSource").Range(wbtarget.Sheets("TBSource").Cells(i, 1), wbtarget.Sheets("TBSource").Cells(i, 36))
        wbtarget.SaveAs Filename:=strPath & "\" & .Cells(i, 36).Value
    Next i
End With

Application.ScreenUpdating = True
MsgBox "Finished"

末端子组件
我现在的版本运行循环,但是每次迭代它都会继续增长(而不是粘贴一行)。我想我已经很接近了,但是可能需要第二种意见!

cetgtptt

cetgtptt1#

我想通了!兴高采烈!这一节应该反映你想粘贴数据的行,“2”而不是“i”。
目标:=工作目标.工作表(“任务类型源”).范围(工作目标.工作表(“任务类型源”).单元格(2,1),工作目标.工作表(“任务类型源”).单元格(2,36))

相关问题