Vba 如何让宏运行相同的操作,但使用两个不同的工作簿,而不是我用来记录宏的工作簿?

Vba 如何让宏运行相同的操作,但使用两个不同的工作簿,而不是我用来记录宏的工作簿?,vba,Vba,我希望这能更清楚地描述我想要实现的目标 我只是做了一个复制粘贴值,它为我做了操作。我希望宏可以加快这个过程 基本上,我想从特定工作簿的D列复制单元格2,4,6,8,10…48,并将值粘贴到第二个工作簿J列的单元格23,24,25…46中。下一步是从第一个工作簿的D列复制第3、5、7、9…49单元格,并仅将值粘贴到第二个工作簿的X列的23、24、25…46单元格中 很明显,我可以复制和粘贴这些,但我有数千个这样做,希望宏能有所帮助。这可能会有所帮助: Sub CopyColumn() Dim i

我希望这能更清楚地描述我想要实现的目标

我只是做了一个复制粘贴值,它为我做了操作。我希望宏可以加快这个过程

基本上,我想从特定工作簿的D列复制单元格2,4,6,8,10…48,并将值粘贴到第二个工作簿J列的单元格23,24,25…46中。下一步是从第一个工作簿的D列复制第3、5、7、9…49单元格,并仅将值粘贴到第二个工作簿的X列的23、24、25…46单元格中

很明显,我可以复制和粘贴这些,但我有数千个这样做,希望宏能有所帮助。

这可能会有所帮助:

Sub CopyColumn()
Dim i As Long, k As Long, wb1 As Workbook, wb2 As Workbook
Dim columnD As Long, columnJ As Long, columnX As Long
Set wb1 = Workbooks("workbook1.xls") ' replace it with the actual name
Set wb2 = Workbooks("workbook2.xls") ' replace with the actual name
columnD = Range("D1").Column
columnJ = Range("J1").Column
columnX = Range("X1").Column
k = 23
For i = 2 To 49 Step 2
    wb2.Sheets("Sheet1").Cells(k, columnJ) = wb1.Sheets("Sheet1").Cells(i, columnD)
    wb2.Sheets("Sheet1").Cells(k, columnX) = wb1.Sheets("Sheet1").Cells(i + 1, columnD)
    k = k + 1
Next i
End Sub
这就是你所要求的。但是您必须替换工作簿的名称,最终替换工作表的名称。
我用一些随机数据对它进行了测试,效果很好。

到目前为止,您使用了哪些代码?我试图通过在excel中记录宏来创建宏,但效果不太好。我不能在这里发布,因为它太长了。下标超出范围是它所说的内容单击调试。然后您可以看到是哪一行导致了错误。如果我在Book1或Book2中打开并尝试运行宏,则会出现错误Set wb1=工作簿(“Book1.xls”)在您运行宏时是否都在excel中打开了工作簿?“Book1.xls”是工作簿的真实文件名还是“Book1.xlsm”之类的文件名?