【发布时间】:2015-06-01 12:22:08
【问题描述】:
我目前有这段代码,它将从文件夹中获取文件,打开每个文件,将其名称打印到我的“主文件”的第一列中,关闭它并循环遍历整个文件夹。
在每个打开的文件中,单元格 J1 中的信息我想复制并粘贴到“主文件”的第 3 列中。该代码有效,但只会一遍又一遍地将所需信息从 J1 粘贴到 C2 中,因此信息会不断被覆盖。我需要向下递增列表,以便将来自 J1 的信息打印到与文件名相同的行中。
有什么想法吗?
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
Dim NewWorkbook As Workbook
Set NewWorkbook = Workbooks.Open(fileName:=MyFolder & objFile.Name)
Range("J1").Select
Selection.Copy
Windows("masterfile.xlsm").Activate
'
'
' BELOW COMMENT NEEDS TO BE CHANGED TO INCREMENTING VALUES
Range("D2").Select
ActiveSheet.Paste
NewWorkbook.Close
Next objFile
End Sub
【问题讨论】:
-
要查找错误,请在第一行添加断点并使用
Step Into (F8)逐行移动。错误将在导致它的线路上触发。测试后报告该信息(编辑问题)。一种可能性是您正在使用Sht.Cells,如果Worksheet真的是Chart,它将失败。 -
@Byron 谢谢!我在玩完文字后回来报告。对新问题有何建议?
-
此时,您的问题已进入本站
How do I copy from [somewhere] and paste to [somewhere]上百题的领域。我会环顾其中一些问题以获得一般性建议。特别是对于这段代码,为什么不在Else中复制/粘贴内容,然后再增加i?然后您可以使用Cells(i+1,2)粘贴到文件名旁边。也不清楚为什么要打开文件两次。 -
我不想打开文件两次。为了解决这个问题,我将在 End If 之前的 else 部分下输入新的复制/粘贴代码,并从 Sht.Cells(i+1, 2) 增加它?
-
@Byron 那是修复它的好方法吗?