按日期读取文本文件并将其复制到活动工作表中

时间:2015-01-12 22:56:58

标签: excel vba excel-vba file-io

我正在尝试创建一个从文件夹中读取每个* .txt文件的宏,如果修改日期与当前文件匹配,则将内容复制到* .xls文件的工作表中。我一直在检查你在这里分享的很多代码,但我无法让它发挥作用。

在debbuging时,在第8行,我收到错误:

  

438:Object不支持此属性或方法

Sub GetSAPfiles()
    Dim Cont As Integer
    Dim RootDir As String
    RootDir = "\HOME\SAP\dir\"
    SAPfile = Dir(RootDir)
    Set SAPfile = CreateObject("Scripting.FileSystemObject")
    Set SF = SAPfile.GetFile(RootDir + SAPfile)

    Do While SAPfile <> ""
        Dim ObjDate, CurrDate
        CurrDate = Format(Now(), "MM/DD/YYYY")
        ObjDate = Format(file.DateLastModified, "MM/DD/YYYY")

        If CurrDate = ObjDate Then
            Cont = Cont + 1
            Dim TxtFl, Txt
            Set TxtFl = SAPfile.OpenTextFile(RootDir + SAPfile)
            Txt = TxtFl.ReadLine
            ActiveSheet.Cells(Cont, "A").Value = Txt
            ArchTxt.Close
        End If
        SAPfile = Dir(RootDir)
    Loop
End Sub

1 个答案:

答案 0 :(得分:0)

尝试这样的事情,使用命令提示符获取文件数组并使用FSO循环浏览它们以检查修改日期并将文本读入A列中的下一个空白单元格:

Sub SO()

   RootDir$ = "\HOME\SAP\dir\"

   For Each x In Filter(Split(CreateObject("WScript.Shell").Exec("CMD /C DIR " & RootDir & "*.* /B /A:-D").StdOut.ReadAll, vbCrLf), ".")
       With CreateObject("Scripting.FileSystemObject")
           If DateValue(.GetFile(RootDir & x).DateLastModified) = Date Then _
                 Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = .OpenTextFile(RootDir & x, 1).ReadAll
       End With
   Next x

End Sub