使用Excel导入宏文本?

时间:2011-03-02 15:13:40

标签: excel

我想使用Excel中的宏从目录导入最后修改的txt文件。 我有一个文件夹,每天增加一个新的txt文件。 目标是导入在direrctory中添加的最后一个txt文件。

我已经创建了一个Excel文件,其中一个按钮受宏影响。

这是宏的代码:

Sub Import()
'
' Import Macro
' Macro saved on 02/03/2011 by StYellowknife3000
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Folder\File_01.txt", Destination:= _
        Range("A1"))
        .Name = "File_01"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 932
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = True
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = True
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

谢谢

2 个答案:

答案 0 :(得分:1)

一种方法是使用Scripting.FileSystemObject并遍历所有文件检查其日期。这是我用来在文件夹中打开最新CSV的一些代码

For Each fsoFile In fsoFldr.Files
    If fsoFile.DateCreated > dtNew And fsoFile.Type = sCSVTYPE Then
        sNew = fsoFile.Path
        dtNew = fsoFile.DateCreated
    End If
Next fsoFile

Workbooks.Open sNew

您可以在此处查看需要设置的所有代码和参考资料

http://www.dailydoseofexcel.com/archives/2009/05/01/opening-the-newest-file-in-a-folder-with-vba/

答案 1 :(得分:0)

我从另一个线程中找到了这个例子但是只有在文件名总是相同的情况下它才有用。 这个用lastmodified检查文件,但它不能正常工作。

代码:

Sub test()
MsgBox FileLastModified("C:\My Documents\abook.xls")
End Sub

Function FileLastModified(strFullFileName As String)
Dim fs As Object, f As Object, s As String

Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(strFullFileName)

s = UCase(strFullFileName) & vbCrLf
s = s & "Last Modified: " & f.DateLastModified
FileLastModified = s

Set fs = Nothing: Set f = Nothing

End Function