我是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
答案 0 :(得分:0)
要关闭并保存具有指定名称的工作簿,您可以调用Close method上的Workbook object,True
作为保存更改的第一个参数,名称您希望将文件保存为第二个参数:
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不为预定任务提供设施,这意味着您必须执行以下操作之一: