保存&以当前日期名称

时间:2018-05-08 09:38:05

标签: excel vba excel-vba

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

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

  1. 保存如下:" 01 05 2018_含税_1889"。到目前为止,我已经找到并修改了下面的代码,当运行一次时,创建一个临时文件并将其保存到我的文件夹中,但不要自动关闭它。 将所有下载文件及其相关日期保存在我的文件夹中会很棒。

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

    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
    

1 个答案:

答案 0 :(得分:0)

要关闭并保存具有指定名称的工作簿,您可以调用Close method上的Workbook objectTrue作为保存更改的第一个参数,名称您希望将文件保存为第二个参数:

Dim book As Workbook
...
book.Close True, "01 05 2018_With taxes_1889.xlsx"

工作簿对象从Workbooks.Open method

返回
'Instead of this:
'    Workbooks.Open (BUFFER_FILE)
'use this:
Set book = Workbooks.Open (BUFFER_FILE)

如果您想使用当前日期作为文件名,可以使用Date功能:

book.Close True, Date & ".xlsx"

您可能希望在名称中使用特定格式的日期;这可以使用FormatDate函数来完成,该函数使用一组预定义的日期格式来格式化日期:

'Uses the long date format from the computer's regional settings
book.Close True, FormatDate(Date, vbLongDate) & ".xlsx"

或使用Format功能,允许自定义格式:

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代码时),并在适当的条件下运行该过程