首页 > 解决方案 > 如何使用 VBA 将 Excel 中的工作表保存为 CSV,并将文件保存为用户名和日期?

问题描述

大家好。

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

我已经阅读了一些几乎类似的问题,但没有找到答案。请帮我。谢谢你。看待。

标签: excelvba

解决方案


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

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

推荐阅读