Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何循环浏览多个工作簿并从每个工作簿复制数据_Excel_Vba - Fatal编程技术网

Excel 如何循环浏览多个工作簿并从每个工作簿复制数据

Excel 如何循环浏览多个工作簿并从每个工作簿复制数据,excel,vba,Excel,Vba,我有一个打开它们的文件和代码的列表,但我没有循环使用I。脚本将替换输入的数据,并且不会偏移任何内容 在循环浏览多个文件时,如何更正行数 子GetFileCopyData() 将SrcWbk设置为工作簿 将WBK设置为工作簿 暗k一样长 我想我会坚持多久 将wb设置为工作簿 设置DestWbk=thiswoolk Fname=Application.GetOpenFilename(文件过滤器:=“Excel文件(*.xls*)_ *.xls*”,标题:=“选择文件”,多选:=真) 如果VarTyp

我有一个打开它们的文件和代码的列表,但我没有循环使用I。脚本将替换输入的数据,并且不会偏移任何内容

在循环浏览多个文件时,如何更正行数

子GetFileCopyData()
将SrcWbk设置为工作簿
将WBK设置为工作簿
暗k一样长
我想我会坚持多久
将wb设置为工作簿
设置DestWbk=thiswoolk
Fname=Application.GetOpenFilename(文件过滤器:=“Excel文件(*.xls*)_
*.xls*”,标题:=“选择文件”,多选:=真)
如果VarType(Fname)=vbBoolean,则退出Sub
''对于i=1到UBound(Fname)
对于Fname中的每个文件
MsgBox(“每个网络化”)
设置SrcWbk=Workbooks.Open(文件,UpdateLinks:=False)
i=1
MsgBox(“设置完成”)
k=SrcWbk.Sheets(“Ëèò2”).单元格(2,1).结束(xlDown).行
SrcWbk.Sheets(“Ëèò2”).范围(SrcWbk.Sheets(“Ëèò2”).单元格(2,1)_
SrcWbk.Sheets(“Ëèò2”).单元格(k,5)).副本
分解工作表(“合并”)范围(分解工作表(“合并”)单元格(i+1,1)_
DestWbk.表(“合并”).单元格(k+i-1,5)).特殊粘贴
i=i+k
MsgBox(“关闭前”)
SrcWbk.Close为真
MsgBox(“下一步之前”)
下一个文件
“接下来我
端接头

问题:您在每次迭代中都会重新启动
i
。因此,数据被粘贴到每个文件的相同位置

解决方案:
i=1
移出循环。对于Fname中的每个文件,将其置于
之前

代码:

Sub GetFileCopyData()
   Dim SrcWbk As Workbook
   Dim DestWbk As Workbook
   Dim k As Long
   Dim i As Long
   Dim wb As Workbook

   Set DestWbk = ThisWorkbook

   fname = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*", Title:="Select a File", MultiSelect:=True)

   If VarType(fname) = vbBoolean Then Exit Sub

    i = 1
   '''For i = 1 To UBound(Fname)
   For Each file In fname
       MsgBox ("each enetered")
       Set SrcWbk = Workbooks.Open(file, UpdateLinks:=False)
       MsgBox ("set done")
       k = SrcWbk.Sheets("Ëèñò2").Cells(2, 1).End(xlDown).row
       SrcWbk.Sheets("Ëèñò2").Range(SrcWbk.Sheets("Ëèñò2").Cells(2, 1), SrcWbk.Sheets("Ëèñò2").Cells(k, 5)).Copy
       DestWbk.Sheets("Consolidated").Range(DestWbk.Sheets("Consolidated").Cells(i + 1, 1), DestWbk.Sheets("Consolidated").Cells(k + i - 1, 5)).PasteSpecial
       i = i + k
       MsgBox ("before close")
       SrcWbk.Close True
       MsgBox ("before next")
   Next file
   '''Next i
End Sub

i=1
移出循环。对于Fname中的每个文件,请将其置于
之前,也许您可以再次帮助我回答问题?我如何避免弹出消息,缓冲区中的数据很大,以及我是否同意存储它?先谢谢你