Vba 储蓄及;以当前日期为名称关闭工作簿

Vba 储蓄及;以当前日期为名称关闭工作簿,vba,excel,Vba,Excel,我是VBA新手,我希望使用VBA自动化当前的流程 对于每个月的每个星期(星期三),我需要将现有Excel模板从Internet导出到新工作簿中。这部分已经完成,但我需要: 将其保存为:“01 05 2018_含税_1889”。到目前为止,我已经找到并修改了下面的代码,当在下面运行一次时,会创建一个临时文件并将其保存到我的文件夹中,但不会自动关闭它。 这将是伟大的所有下载文件与他们的相关日期保存在我的文件夹 我也愿意通过一个查询来完全自动化这个过程,该查询将在每周的每个星期三启动这个过程 Priv

我是VBA新手,我希望使用VBA自动化当前的流程

对于每个月的每个星期(星期三),我需要将现有Excel模板从Internet导出到新工作簿中。这部分已经完成,但我需要:

  • 将其保存为:“01 05 2018_含税_1889”。到目前为止,我已经找到并修改了下面的代码,当在下面运行一次时,会创建一个临时文件并将其保存到我的文件夹中,但不会自动关闭它。 这将是伟大的所有下载文件与他们的相关日期保存在我的文件夹

  • 我也愿意通过一个查询来完全自动化这个过程,该查询将在每周的每个星期三启动这个过程

    Private Sub ADD_BTN_Click()
        Dim line As Integer
        Dim Ws As Worksheet
        Dim DBS As Database
        Dim RST As Recordset
        Dim SQL_TXT As String
        Dim COUNTRY_ID As Integer
        Dim DATE_FUEL As String
        Dim test As Boolean
    
    DownloadFile (LINK_FUEL) ' Download file on C:\TEMP
    Workbooks.Open (BUFFER_FILE)
    
    Set Ws = ActiveWorkbook.Worksheets("Weekly Prices with taxes")
    
    datEfuel = Right(Ws.Cells(1, 12), 10)
    
    For line = 1 To 47
        If OPEN_DBS(DBS, FUEL_DB) Then
            SQL_TXT = "SELECT * FROM COUNTRY_DATA WHERE COUNTRY_NAME LIKE '" & Ws.Cells(line, 1).Value & "'" ' Search Country name
    
            If OPEN_RST(DBS, RST, SQL_TXT) Then
                COUNTRY_ID = RST![COUNTRY_ID]
                RST.Close
                SQL_TXT = "SELECT * FROM FUEL_DATA WHERE COUNTRY_ID=" & COUNTRY_ID
                test = True
                If OPEN_RST(DBS, RST, SQL_TXT) Then
                    While Not RST.EOF
                      If RST![FUELDATA_DATE] = CDate(datEfuel) Then test = False
                      RST.MoveNext
                    Wend
                    RST.Close
                End If
                If test Then
                    SQL_TXT = "SELECT * FROM FUEL_DATA"
                    OPEN_NEW DBS, RST, SQL_TXT
                    RST![COUNTRY_ID] = COUNTRY_ID
                    RST![FUELDATA_DATE] = datEfuel
                    RST![FUELDATA_AUTOMOTIVE] = Ws.Cells(line, 8).Value
                    RST.Update
                End If
    
            End If
            DBS.Close
            End If
    
    
    Next line
    
    End Sub
    

  • 要使用指定的名称关闭和保存工作簿,可以在上调用,将
    True
    作为保存更改的第一个参数,并将要保存文件的名称作为第二个参数:

    Dim book As Workbook
    ...
    book.Close True, "01 05 2018_With taxes_1889.xlsx"
    
    工作簿对象从以下位置返回:

    如果要使用当前日期作为文件名,可以使用以下函数:

    book.Close True, Date & ".xlsx"
    
    您可能希望对名称中的日期使用特定格式;这可以通过函数完成,该函数使用一组预定义的日期格式格式化日期:

    'Uses the long date format from the computer's regional settings
    book.Close True, FormatDate(Date, vbLongDate) & ".xlsx"
    
    或使用允许自定义格式的函数:

    book.Close True, Format(Date, "yyyy-mm-dd") & ".xlsx"
    
    请注意,除非指定完整路径,否则这将保存在应用程序的当前文件夹(通常是Documents文件夹)中

    book.Close True, "C:\path\to\folder\" & Format(Date, "yyyy-mm-dd") & ".xlsx"
    

    Excel不为计划任务提供工具,这意味着您必须执行以下操作之一:

    • 使用Windows任务计划程序启动任务。在这种情况下,我强烈建议不要将代码绑定到特定工作簿,而是在Windows脚本主机下使用VBScript
    • 每次打开工作簿(或运行此VBA代码的位置)时进行检查,并在适当的条件下运行该过程

    非常感谢,它正在工作。您知道如何将其与日期一起保存吗?@Aimé如果此答案解决了您的问题,您应该接受它(通过单击答案旁边的绿色复选标记)。如果答案有用,你应该向上投票(通过单击答案旁边的向上箭头)。@Aimé我已将我的答案更新为使用Close而不是SaveAs;这将在完成时自动关闭工作簿。您可能应该删除问题的第二部分,因为a)问题的内容不清楚,b)您可以采取的方法数量可能会填满一本书。
    book.Close True, "C:\path\to\folder\" & Format(Date, "yyyy-mm-dd") & ".xlsx"