Excel VBA实现无对话框保存指定区域为CSV并自动打开文件
修改后的VBA代码(自动保存到当前文件夹+生成后打开CSV)
以下是满足需求的修改后代码,两处关键修改已标注:
Option Explicit Public Sub ExcelRowsToCSV() Dim iPtr As Integer Dim sFileName As String Dim intFH As Integer Dim aRange As Range Dim iLastColumn As Integer Dim oCell As Range Dim iRec As Long Set aRange = Range("D1:V39") iLastColumn = aRange.Column + aRange.Columns.Count - 1 iPtr = InStrRev(ActiveWorkbook.FullName, ".") ' 自动生成文件名,直接保存到当前工作簿所在文件夹,无需弹窗确认 sFileName = Left(ActiveWorkbook.FullName, iPtr - 1) & Format(Date, " mmm dd, yyyy ") & ".csv" Close intFH = FreeFile() Open sFileName For Output As intFH iRec = 0 For Each oCell In aRange If oCell.Column = iLastColumn Then Print #intFH, oCell.Value iRec = iRec + 1 Else Print #intFH, oCell.Value; ","; End If Next oCell Close intFH ' 生成CSV后自动调用系统默认程序打开文件 Shell "cmd /c start """" """ & sFileName & """", vbHide MsgBox "Finished: " & CStr(iRec) & " records written to " _ & sFileName & Space(10), vbOKOnly + vbInformation End Sub
修改说明:
- 取消保存对话框:删除了原代码中
Application.GetSaveAsFilename相关的弹窗调用及判断逻辑,直接使用基于当前工作簿路径生成的文件名完成保存。 - 自动打开CSV文件:在文件写入完成后,通过
Shell命令调用系统默认关联程序打开生成的CSV文件(兼容Excel、记事本等常见程序)。
内容的提问来源于stack exchange,提问作者Sonny
相关产品推荐
相关产品推荐

