将Excel里所有的Sheet页同时另存为单独的UTF8编码的CSV文件

本文介绍了一段使用VBA代码从Excel工作簿中每个工作表导出单独CSV文件的方法。该过程首先创建一个临时文件夹,然后遍历每个工作表,将其内容转换为CSV格式并保存到指定路径下。代码还考虑了文件覆盖的情况,并确保最终消息提示文件生成成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结合前两篇高手代码,拼出以下代码:

Public Sub WriteCSV()
Dim sheet_name, bookPath, fileName As String
Dim sheet_count,i As Integer
sheet_count = Sheets.Count
bookPath = ThisWorkbook.Path
   bookPath = bookPath + "\TEMP\"
    '判断文件目录是否存在
   If Dir(bookPath, 16) = Empty Then
    MkDir bookPath
   Else
    Kill bookPath & "\*.*"
   End If
For i = 1 To sheet_count

    sheet_name = Sheets(i).Name
    Sheets(sheet_name).Select
	'设置活动窗口为当前
	Set wkb = ActiveSheet
    fileName = bookPath + sheet_name + ".csv"

    On Error GoTo eh
    Const adTypeText = 2
    Const adSaveCreateOverWrite = 2

    Dim BinaryStream
    Set BinaryStream = CreateObject("ADODB.Stream")
    BinaryStream.Charset = "UTF-8"
    BinaryStream.Type = adTypeText
    BinaryStream.Open

    For r = 1 To wkb.UsedRange.Rows.Count
    s = ""
    c = 1
	While c <= wkb.UsedRange.Columns.Count
	If c < wkb.UsedRange.Columns.Count Then
     s = s & wkb.Cells(r, c).Value & ","
	Else
	 s = s & wkb.Cells(r, c).Value
	End if
    c = c + 1
    Wend
    BinaryStream.WriteText s, 1
    Next r

    BinaryStream.SaveToFile fileName, adSaveCreateOverWrite
    BinaryStream.Close
eh:
Next
Sheets(1).Select
MsgBox "CSV generated successfully"
End Sub
完美运行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值