我已经搜索并搜索了这个并且已经接近但并不完美。这就是......
我需要的是一个代码来连续处理其他excel工作簿并复制数据。这些文件将被命名为1,2,3,4等,最多约60个。我有一些代码将打开我的所有文件,这很好。接下来我需要它进入所有工作簿并复制设置数据并将其返回到我能够做的主工作簿。这是我的问题......
我知道必须有一种方法可以编写代码一次并让它通过剩余的文件。 IE浏览器。如果第一个文件名为1.csv,那么代码可以在1.csv上执行,然后在1.csv + 1上表示2.csv,然后循环输出?似乎应该能够做到这一点。我不想手动工作,通过编写相同的代码从1.csv一直复制到60.csv
如果有办法循环它,那么如何结束部分结束。 IE一周可能有37个文件,接下来的40个等等。我希望它从文件1.csv开始工作,直到它到达最后一个活动文件37.csv或60.csv然后如果没有38.csv文件则结束。
这是我记录的基本代码。
Public Sub testr()
Dim filenum As Integer
Dim lastrow As Long
filenum = 1
On Error GoTo my_handler
Do
Windows(filenum & ".CSV").Activate
Range("A25").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("test.xlsm").Activate
Range("A1").Select
lastrow = Worksheets("Data").Cells(1, 1).End(xlDown).Row
ActiveSheet.Paste
filenum = filenum + 1
Loop
my_handler:
MsgBox "All done."
Exit Sub
End Sub
任何人都可以给我的任何帮助都会很棒!提前谢谢〜
答案 0 :(得分:0)
您可以尝试将所有这些包装在DO ... LOOP中。如果你不知道你将使用多少个.csv文件,只需输入一个错误处理程序,一旦找不到文件就退出。
您可以使用字符串连接来更改文件名:例如,使用名为filenum的变量,如果filenum = 1则使用filenum& “.csv”将是“1.csv”,如果filenum = 2那么filenum& “.csv”将是“2.csv”等。
例如:
Public Sub testr()
Dim filenum As Integer
filenum = 1
On Error GoTo my_handler
Do
Windows(filenum & ".CSV").Activate
'rest of code goes here
filenum = filenum + 1
Loop
my_handler:
MsgBox "All done."
Exit Sub
答案 1 :(得分:0)
好的,对于您现在拥有的代码,您至少需要进行编辑,如下所示:
Public Sub testr()
Dim filenum As Integer
filenum = 1
On Error GoTo my_handler
Do
Windows(filenum & ".CSV").Activate
Range("A25").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("test.xlsm").Activate
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
filenum = filenum + 1
Loop
my_handler:
MsgBox "All done."
Exit Sub
End Sub