请求修改VBA导出CSV函数:新增文件夹检测与创建功能
修改后的ExportAsCSV VBA函数
以下是调整后的代码,实现检测G3指定名称的文件夹并自动创建(若不存在),再将CSV文件保存至该文件夹:
Sub ExportAsCSV() Dim MyFileName As String Dim CurrentWB As Workbook, TempWB As Workbook Dim sFilename As String Dim targetFolder As String Const csPath As String = "C:\Users\gald\Desktop\Vintage - Gal\Hourly" ' 获取文件名和目标文件夹名称(来自当前工作表的G2和G3) Set CurrentWB = ActiveWorkbook sFilename = CurrentWB.ActiveSheet.Range("G2").Value targetFolder = csPath & "\" & CurrentWB.ActiveSheet.Range("G3").Value CurrentWB.ActiveSheet.UsedRange.Copy Set TempWB = Application.Workbooks.Add(1) With TempWB.Sheets(1).Range("A1") .PasteSpecial xlPasteValues .PasteSpecial xlPasteFormats End With TempWB.Sheets(1).Rows("1:6").Delete Shift:=xlUp With TempWB.Sheets(1).Range("J2:W200") .NumberFormat = "General" .Value = .Value End With ' 检测目标文件夹是否存在,不存在则创建 If Dir(targetFolder, vbDirectory) = "" Then MkDir targetFolder End If ' 拼接最终保存路径 MyFileName = targetFolder & "\" & sFilename & ".csv" Application.DisplayAlerts = False TempWB.SaveAs Filename:=MyFileName, FileFormat:=xlCSV, CreateBackup:=False, Local:=True TempWB.Close SaveChanges:=False Application.DisplayAlerts = True End Sub
关键修改说明
- 新增
targetFolder变量,存储G3指定名称的文件夹完整路径 - 使用
Dir(targetFolder, vbDirectory)检测文件夹状态,为空时调用MkDir创建文件夹 - 所有单元格、行操作均明确指向对应工作表,避免跨工作簿引用错误
- 简化文件名拼接逻辑,移除冗余的
Left(sFilename, Len(sFilename))写法
内容的提问来源于stack exchange,提问作者Gal Damari
相关产品推荐
相关产品推荐

