0

可能重复:
使用 FSO 根据满足的条件将文件夹名称插入单元格

这是我正在尝试做的事情:

  • 检查以查看最后一个带有数据的单元格在“A”列中的位置(有效)
  • 将数据粘贴到“A”列到 wbkVer.Worksheets("Cutsheets") (作品)
  • 找到文件夹的名字,就是fsoFol.Name(works)
  • 对于“A”中每个粘贴的单元格,检查一个值。
  • 如果有一个值,我需要将 fsoFol.Name 放在偏移量(0,5)中——这应该能够引用 firstRange 变量,但是每个单元格,我不知道该怎么做——或者最好的方法。(不起作用)
  • 如果没有价值,请跳过它。

建议?先感谢您。

 Dim FSO As Object, fld As Object, Fil As Object
    Dim fsoFile As Object
    Dim fsoFol As Object

    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set fld = FSO.getfolder(folderPath)

    If FSO.folderExists(fld) Then
        For Each fsoFol In FSO.getfolder(folderPath).subfolders
            For Each fsoFile In fsoFol.Files
                If Mid(fsoFile.Name, InStrRev(fsoFile.Name, ".") + 1) = "xls" Then
    fileName = fsoFile.Name
    Application.ScreenUpdating = False
    Set wbkCS = Workbooks.Open(fsoFile.Path)

    If fileName Like "V*.xls" Then
    wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Copy
       With wbkVer.Worksheets("Cutsheets")
    Set firstRange = .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) 
        firstRange.PasteSpecial xlPasteValues
    For Each firstRange.Value in wbkVer.Worksheets("Cutsheets")
        If firstRange.Value <> "" Then
        firstRange.Offset(0, 5).Value = fsoFol.Name
                  End If
            Next
4

1 回答 1

1

For Each a In b 您的循环语法是错误的:b返回一个集合(在这种情况下,Cellsin a Worksheeta必须是该集合成员的类型(在这种情况下为 `Range.

所以正确的语法是

For Each firstRange in wbkVer.Worksheets("Cutsheets")

也就是说,你真的不想这样做。循环将做的是检查工作表上的每个单元格(数十亿!),这太慢了。此外,它会跑掉,因为每次它找到一个非空白单元格时,它都会创建另一个单元格来触发If.

更新

根据您的评论,我认为您想要的是:

  • 对于您刚刚粘贴在A非空白列中的每个单元格,将 的值fsoFol.Name放入列中F

如果是这样,试试这个(从wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Copy下替换)

Dim rngSource As Range
Set rngSource = wbkCS.Worksheets("Cut Sheet").Range("S4:S2000")
With wbkVer.Worksheets("Cutsheets")
    Set firstRange = .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(rngSource.Rows.Count, 1)
    firstRange.Value = rngSource.Value
    firstRange.SpecialCells(xlCellTypeConstants).Offset(0, 5) = fsoFol.Name
End With
于 2013-01-12T03:29:19.233 回答