Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
2010 Excel VBA,如何定义固定列和可变行从一个文件中的多个文件复制数据(打开文件夹中的所有Excel文件)。_Excel_Vba - Fatal编程技术网

2010 Excel VBA,如何定义固定列和可变行从一个文件中的多个文件复制数据(打开文件夹中的所有Excel文件)。

2010 Excel VBA,如何定义固定列和可变行从一个文件中的多个文件复制数据(打开文件夹中的所有Excel文件)。,excel,vba,Excel,Vba,2010 Excel VBA,如何定义固定列和可变行(数组)将数据从多个文件复制到一个文件中(打开文件夹中的所有Excel文件) 下面是我的代码示例。代码可以工作,但在输出数据中有间隙,因为许多Excel文件都定义了变量列,而不是所有这些列都有数据(定义时数据中有间隙) A列和C列始终在每个文件中都有数据。 列B和D在某些单元格中可能没有数据。 列E和F可以定义,也可以不定义,也可以不包含数据 我只需要复制固定列A到D,并复制到可变长度的行 谢谢 Sub LoopThroughFilesInFo

2010 Excel VBA,如何定义固定列和可变行(数组)将数据从多个文件复制到一个文件中(打开文件夹中的所有Excel文件)

下面是我的代码示例。代码可以工作,但在输出数据中有间隙,因为许多Excel文件都定义了变量列,而不是所有这些列都有数据(定义时数据中有间隙)

A列和C列始终在每个文件中都有数据。
列B和D在某些单元格中可能没有数据。 列E和F可以定义,也可以不定义,也可以不包含数据

我只需要复制固定列A到D,并复制到可变长度的行

谢谢

Sub LoopThroughFilesInFolder()
Dim mainwb As Workbook
Dim wb As Workbook
Dim i As Integer

Set mainwb = ThisWorkbook
Set FileSystemObj = CreateObject("Scripting.FileSystemObject")

'use path to the folder
Set FOlderObj = FileSystemObj.GetFOlder("E:\1-Chris Micha Master\DDTs all 2015 April 8\DDT Excel files")

'loop through the files
For Each fileobj In FOlderObj.Files

If fileobj.Name <> "OpenAllExcelFilesInAFolder.xlsm" And fileobj.Name <> "~$OpenAllExcelFilesInAFolder.xlsm" And (FileSystemObj.GetExtensionName(fileobj.Path) = "xls") Then

Application.DisplayAlerts = False
Set wb = Workbooks.Open(fileobj.Path)

'copy the results from the just opened workbook
wb.Worksheets("DTCs").Select
lastcell = Range("A1:XFD1048576").SpecialCells(xlCellTypeLastCell).Address
Range("A6:" & lastcell).Select
Selection.Copy

'go to the mainworkbook and paste data
mainwb.Activate
Sheets("Sheet1").Select
If Range("a6").Value = "" Then
Range("a1").Select
Else
Range("a6").End(xlDown).Offset(1, 0).Select
End If

ActiveSheet.Paste
Kwb.Activate
wb.Save
wb.Close
mainwb.Activate
End If
Next fileobj
End Sub
Sub-LoopThroughFilesInFolder()
将主WB设置为工作簿
将wb设置为工作簿
作为整数的Dim i
设置mainwb=此工作簿
设置FileSystemObject=CreateObject(“Scripting.FileSystemObject”)
'使用文件夹的路径
Set FOlderObj=FileSystemObj.GetFOlder(“E:\1-Chris Micha Master\DDTs所有2015年4月8日\DDT Excel文件”)
'循环浏览文件
对于FOlderObj.Files中的每个fileobj
如果fileobj.Name“openallexelfilesinafolder.xlsm”和fileobj.Name“~$openallexelfilesinafolder.xlsm”和(FileSystemObj.GetExtensionName(fileobj.Path)=“xls”),则
Application.DisplayAlerts=False
Set wb=Workbooks.Open(fileobj.Path)
'从刚打开的工作簿复制结果
wb.工作表(“DTC”)。选择
lastcell=范围(“A1:XFD1048576”)。特殊单元格(xlCellTypeLastCell)。地址
范围(“A6:&lastcell”)。选择
选择,复制
'转到主工作簿并粘贴数据
激活主WB
图纸(“图纸1”)。选择
如果范围(“a6”).Value=“”,则
范围(“a1”)。选择
其他的
范围(“a6”)。结束(xlDown)。偏移量(1,0)。选择
如果结束
活动表。粘贴
Kwb.激活
wb.保存
wb.关闭
激活主WB
如果结束
下一个文件对象
端接头