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,我每天通过电子邮件收到3个Excel文件,我需要一个工作簿上的文件数据 每个文件的布局都不同 文件名将添加当前日期 File 1 name is : BlankApp_yyyymmdd.xls File 2 name is : DisRep_yyyymmdd.xls File 3 name is : PerApp_yyyymmdd.xls 从文件1中,我需要B2、A7、D11、G11(单行)中的数据 从文件2中,我需要来自A7、C8、E9、H9(单行)、A11、C12、E13、H13(单行)、

我每天通过电子邮件收到3个Excel文件,我需要一个工作簿上的文件数据

每个文件的布局都不同

文件名将添加当前日期

File 1 name is : BlankApp_yyyymmdd.xls
File 2 name is : DisRep_yyyymmdd.xls
File 3 name is : PerApp_yyyymmdd.xls
从文件1中,我需要B2、A7、D11、G11(单行)中的数据

从文件2中,我需要来自A7、C8、E9、H9(单行)、A11、C12、E13、H13(单行)、A15、C16、E17、H17(单行)和A19、C20、E21、H21(单行)的数据

从文件3中,我需要B2、A7、D11、G11(单行)中的数据

总之,我的工作簿上需要六行数据,这些数据应该每天累积


我找到了提供我所需结果的代码,但这只解决了部分问题,即File1和File3。仍然需要为文件2找到答案

子空格和个性化()
常量单元格列表为String=“B2、A7、D11、G11”
Const strFldrPath As String=“C:\New folder\”指向文件所在的文件夹
将wsDest设置为工作表
Dim rngDest As范围
Dim rngCell As范围
Dim arrData()作为变量
将当前文件设置为字符串
Dim rIndex和cIndex一样长
设置wsDest=ActiveWorkbook.ActiveSheet
CurrentFile=Dir(strFldrPath&“*.xls*”)
Set rngDest=wsDest.Cells(Rows.Count,“A”).End(xlUp).Offset(1)
ReDim arrData(1到行.计数,1到范围(CellList.Cells.Count)
Application.ScreenUpdating=False
当Len(当前文件)>0时执行
打开工作簿(strFldrPath&CurrentFile)
rIndex=rIndex+1
cIndex=0
表(1)中的每个RNG单元格范围(单元格列表)单元格
cIndex=cIndex+1
arrData(rIndex,cIndex)=rngCell.值
下一个rngCell
.关闭错误
以
CurrentFile=Dir
环
Application.ScreenUpdating=True
如果rIndex>0,则rngDest.Resize(rIndex,UBound(arrData,2))。Value=arrData
设置wsDest=Nothing
设置rngDest=Nothing
设置rngCell=Nothing
删除ARR数据
端接头
使用以上内容应该是一个良好的开端。不确定要将数据放在何处,也不确定要将宏放在哪本书中

从这里引用
下面是另一个示例,说明如何将一个文件夹中的所有文件拉入工作簿。
如果只想在一个工作簿中复制整个工作表,可以使用

Sub add_Sheets()

Dim was As Worksheet
Dim wb As Workbook
Set wb = Application.Workbooks.Open("C:\Location of your files") 'Location of where you want the workbook to be

StrFile = Dir("C:\Location\*.xls") 'Dir of where all the xls are.
    Do While Len(StrFile) > 0
        Debut.Print StrFile
        Application.Workbooks.Open ("C:\Location\" & StrFile)
        Set ws = ActiveSheet
        ws.UsedRange.Select  'Used range of the worksheet
        Selection.Copy
        wb.Activate
        wb.Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = StrFile
        Range("A1").PasteSpecial Paste:=xlPasteValues
        StrFile = Dir
    Loop
End Sub

您尝试过一些不起作用的东西吗?包含源数据的工作表的名称是什么?Hi Gary的学生,文件名将类似于以下格式文件1名称是:BlankApp_yyyymmdd.xls/文件2名称是:disep_yyyymmdd.xls/文件3名称是:PerApp_yyyymmdd.xls。谢谢
Sub add_Sheets()

Dim was As Worksheet
Dim wb As Workbook
Set wb = Application.Workbooks.Open("C:\Location of your files") 'Location of where you want the workbook to be

StrFile = Dir("C:\Location\*.xls") 'Dir of where all the xls are.
    Do While Len(StrFile) > 0
        Debut.Print StrFile
        Application.Workbooks.Open ("C:\Location\" & StrFile)
        Set ws = ActiveSheet
        ws.UsedRange.Select  'Used range of the worksheet
        Selection.Copy
        wb.Activate
        wb.Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = StrFile
        Range("A1").PasteSpecial Paste:=xlPasteValues
        StrFile = Dir
    Loop
End Sub