你好,大家好。
我很抱歉,如果我现在问的话听起来很愚蠢或愚蠢,但我对VBA来说相对较新,而且不是很流利。
现在,我有一个表格供用户输入他们工作场所发生事件的报告,我设法将数据工作表保存为csv但是现在,我想自动将工作表保存为用户名和时间csv打印。
这是我的代码的样子。
Public Sub ExportWorksheetAndSaveAsCSV()
Dim wbkExport As Workbook
Dim shtToExport As Worksheet
Dim xStrDate As String
Set shtToExport = ThisWorkbook.Worksheets("PartsData")
xStrDate = Format(Now, "yyyy-mm-dd hh-mm-ss")
Set wbkExport = Application.Workbooks.Add
shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count)
Application.DisplayAlerts = False
wbkExport.SaveAs FileName:=xStrDate,"C:\temp\IncidentDatabase.csv", FileFormat:=xlCSV
Application.DisplayAlerts = True
wbkExport.Close SaveChanges:=False
End Sub
当我尝试运行代码时,发生了这种情况
它在这部分突出显示 -
wbkExport.SaveAs FileName:=xStrDate,"C:\temp\IncidentDatabase.csv", FileFormat:=xlCSV
我读过一些几乎相似的问题,但没有找到答案。请帮我。谢谢。看待。
我认为代码行
wbkExport.SaveAs FileName:=xStrDate,"C:\temp\IncidentDatabase.csv", FileFormat:=xlCSV
应改为
wbkExport.SaveAs FileName:="C:\temp\IncidentDatabase - " & xStrDate & ".csv", FileFormat:=xlCSV
为了正常工作
复制工作表而不提供位置。这将创建一个新工作簿,并将复制的工作表作为唯一的工作表。
ENVIRON函数可以检索环境变量,如用户名。
Public Sub ExportWorksheetAndSaveAsCSV()
Dim fn As String
fn = environ("USERNAME") & "-" & Format(Now, "yyyy-mm-dd hh-mm-ss")
ThisWorkbook.Worksheets("PartsData").Copy
With activeworkbook
Application.DisplayAlerts = false
.SaveAs FileName:="C:\temp\" & fn, FileFormat:=xlCSV
Application.DisplayAlerts = true
.close savechanges:=false
end with
End Sub
请参阅.SaveAs
属性here。
第一个参数是名称,第二个是文件类型。
Dim loc As String
loc = "C:\temp\"
xStrDate = Format(Now, "yyyy-mm-dd hh-mm-ss")
wbkExport.SaveAs loc & wbkExport.Name & xStrDate, xlCSV