从多个文件复制单元格J1并粘贴到主文件的列中

我目前有这个代码将从一个文件夹中获取文件,每个打开一个,将其名称打印到我的“主文件”的第一列中closures它,并以这种方式遍历整个文件夹。

在打开的每个文件中,单元格J1中的信息都是我想要复制并粘贴到“主文件”的第3列中的信息。 代码段当前返回一个错误( 对象不支持这个属性或方法,但我不能告诉它指的是哪一行)并导致程序在打开一个文件后停止。

有任何想法吗?

完整代码:

Sub LoopThroughDirectory() Dim objFSO As Object Dim objFolder As Object Dim objFile As Object Dim MyFolder As String Dim Sht As Worksheet Dim i As Integer MyFolder = "C:\Users\trembos\Documents\TDS\progress\" Set Sht = ActiveSheet 'create an instance of the FileSystemObject Set objFSO = CreateObject("Scripting.FileSystemObject") 'get the folder object Set objFolder = objFSO.GetFolder(MyFolder) i = 1 'loop through directory file and print names For Each objFile In objFolder.Files If LCase(Right(objFile.Name, 3)) <> "xls" And LCase(Left(Right(objFile.Name, 4), 3)) <> "xls" Then Else 'print file name Sht.Cells(i + 1, 1) = objFile.Name i = i + 1 Workbooks.Open Filename:=MyFolder & objFile.Name End If 'Get TDS name of open file Range("J1").Select Selection.Copy Windows("masterfile.xlsm").Activate Range("C2").Select ActiveSheet.Paste objFile.Activate ActiveWorkbook.Close Next objFile End Sub 

部分代码搞乱了程序:

 'Get TDS name of open file Range("J1").Select Selection.Copy Windows("masterfile.xlsm").Activate Range("C2").Select ActiveSheet.Paste objFile.Activate 

objFile.Activate是你的问题。

objFile不是一个工作簿variables,它从objFolder.Files分配一个path\文件名。

使用以下内容:

 Dim NewWorkbook as Workbook set NewWorkbook = Workbooks.Open Filename:=MyFolder & objFile.Name . . . NewWorkbook.Activate ActiveWorkbook.Close 

现在,而不是最后两行,因为你有一个引用已打开的工作簿的variables,你可以用这个replace这两行:

 NewWorkbook.Close 

阅读这个链接的一些好的build议,以消除ActivateSelect等其他方式,使您的代码更干净,更具可读性,不太可能有错误,由于错误的地方有重点,更容易维护。

我认为这个问题是由于不合格的引用。 具体而言,我不知道是否可以将select从一个不活动的工作表粘贴到一个新的活动工作表,但我不确定,因为我避免使用.Select和.Activate,所以我没有问题。

尝试用这个replace有问题的部分:

 Sht.Range("J1").Copy Workbooks("masterfile.xlsm").Sheets(1).Cells(2,3) objFile.Activate