【问题标题】:Match file name and copy the new data into the master file匹配文件名并将新数据复制到主文件中
【发布时间】:2015-05-02 03:50:52
【问题描述】:

我每天收到大约 1000 个源文件(CSV 格式)。每个包含 100 多行数据。每个源文件都有一个相应的目标文件(CSV 格式),用于存储历史数据。源文件和目标文件具有相同的文件名和不同的文件夹。我的工作是复制源数据并按文件名粘贴到目标文件中。

我想遍历以下内容:

1) 打开源 csv 2)复制一切 3)使用源的相同名称打开目标csv 4) 将数据粘贴到目标文件的末尾

我可以在 VBA 中进行复制和粘贴。但我不知道如何匹配文件并进行复制和粘贴。这是一项乏味的工作,但我不知道如何使其自动化。

【问题讨论】:

    标签: excel vba copy filenames matching


    【解决方案1】:

    我还没有运行它,但这应该会为您指明正确的方向。

    这根本不需要excel。

    编辑以提供更合理的变量名称。

    编辑添加了错误处理和日志记录。

    On Error Resume Next
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set LogFile = FSO.OpenTextFile("C:\folder\file.txt", 8)
    Set SrcFolder = fso.GetFolder("c:\windows")
    DestFolder = "c:\Windows\system32"
    For Each thing in SrcFolder.files
        If LCase(Right(thing.path, 3)) = "csv" Then
            txt = thing.OpenAsTextStream(1).ReadAll
            Set HistoryFile = FSO.OpenTextFile(DestFolder & "\" & thing.name, 8)
            HistoryFile.Write txt
                If err.number = 0
                    LogFile.WriteLine thing.path & " Append worked"
                Else
                    LogFile.WriteLine thing.path & " " & err.description
                    err.clear
    '                wscript.quit 'only in vbs - use exit sub in vba
                End If
        End If
    Next
    

    它是 VBScript,但 Vbscript 可以粘贴到 VBA 中。或者将其放入名为 something.vbs 的文本文件中。

    【讨论】:

    • 感谢 Trigger 的慷慨回复。我只熟悉excel vba环境。而且您的示例代码似乎是一个可以独立运行的独立代码。它到底有什么作用?仅匹配文件名还是复制和粘贴数据?另外我如何在没有excel的情况下运行代码?
    • 您可以将此代码粘贴到 Excel 的 VBA 编辑器中的 Sub 中。或者把它按原样放在一个文本文件中(我们在vbs中通常不使用Sub/End Sub)并称之为something.vbs。它将c:\windows 中所有CSV 的内容附加到c:\windows\system32 中的同名文件中。您必须自己进行错误检查和记录。
    • 由于 CSV 是文本文件,我们只需打开并读取一个,然后将其附加到另一个。也不使用 Excel 来完成工作,但使用 FileSystemObject 应该会快很多。编程是在excel内部还是外部运行都没有关系。
    • 感谢您的帮助和解释。谢谢触发器。
    猜你喜欢
    • 2022-08-21
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 2018-05-07
    • 2019-11-27
    • 2012-04-19
    • 1970-01-01
    相关资源
    最近更新 更多