如何使用VBA将文件中的工作表保存为CSV并将文件另存为用户名和日期?

问题描述 投票:0回答:3

你好,大家好。

我很抱歉,如果我现在问的话听起来很愚蠢或愚蠢,但我对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

当我尝试运行代码时,发生了这种情况

enter image description here

它在这部分突出显示 -

wbkExport.SaveAs FileName:=xStrDate,"C:\temp\IncidentDatabase.csv", FileFormat:=xlCSV

我读过一些几乎相似的问题,但没有找到答案。请帮我。谢谢。看待。

excel vba
3个回答
1
投票

我认为代码行

wbkExport.SaveAs FileName:=xStrDate,"C:\temp\IncidentDatabase.csv", FileFormat:=xlCSV 

应改为

 wbkExport.SaveAs FileName:="C:\temp\IncidentDatabase - " & xStrDate & ".csv", FileFormat:=xlCSV

为了正常工作


2
投票

复制工作表而不提供位置。这将创建一个新工作簿,并将复制的工作表作为唯一的工作表。

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

1
投票

请参阅.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
© www.soinside.com 2019 - 2024. All rights reserved.