限制

时间:2018-04-05 12:11:27

标签: excel vba csv import restrict

你好友善的人:)

背景信息:

我有一个python脚本,它创建一个特殊的BI报告,从SQL服务器收集各种数据并进行必要的计算。输出将作为.CSV文件转储到公共驱动器上。

为了使输出更加用户友好,CSV会导入到具有各种格式的Excel电子表格中,以便于阅读。此电子表格由许多不同的用户使用,但从不同时使用。

问题是,最终用户将在电子表格中输入各种输入,然后在下次运行python脚本时将其考虑在内。一个例子可能是标记一行' x'表示已经处理了这个问题"这样它就不会出现在下一个输出中。

如果用户在没有运行底层脚本的情况下从csv重新导入数据,则会出现问题。这有效地删除了所有用户标记,使人们进行双重工作。

我知道这是一个可怕的设置,但它现在必须付诸实施。在证明概念证明之前,企业不愿意将其整合到ERP系统中。

问题:

在excel中是否可以实现数据导入限制,如果文件时间戳是最近的,比如说在最后一小时内,只能导入CSV文件?目前我只是使用标准的文本导入,它似乎没有这个功能。

我认为制作一个VBA宏按钮会更容易,但我很少在excel中工作,而且我对如何继续下去没有任何想法。

我想象一个按钮,用我自己的伪代码写下面的代码:

 Press button():
     if (datetime.now - time_stamp_csv_file) < 1 hour:
        import file
     else:
         do nothing

如果任何人有任何解决方案可行,我将是一个快乐的人。

1 个答案:

答案 0 :(得分:0)

我假设你已经有了导入文件的代码,只需要知道如何检查上次修改的时间戳。如果是这种情况,你应该可以使用这样的东西:

Sub ImportButton_Click()

    Dim oFSO As Object
    Dim oFile As Object

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFile = oFSO.GetFile("C:\Test\Test.csv")            'Change this to your actual CSV file path

    If Now() - oFile.DateLastModified < TimeValue("01:00:00") Then
        'import file
    End If

End Sub