作者:绿色风
分类:
时间:2022-08-17
浏览:97
楼主 kevinchengcw |
Q: 如何用vba代码直接生成各表的CSV文件? A: 实现代码如下:- Sub test()
- Dim WS As Worksheet, Arr, N&, I&, Str$
- For Each WS In Worksheets '循环各个工作表
- If WS.[a1] <> "" Or WS.Cells.SpecialCells(xlCellTypeLastCell).Address <> "$A$1" Then '如果A1不为空或者工作已使用区域最后单元格地址不是A1(判断工作表是否已使用),则
- Arr = WS.Range("a1", WS.Cells.SpecialCells(xlCellTypeLastCell)).Value '提取A1到工作表使用区最后单元格区域的数值到数组中
- Str = "" '初始化结果字串为空
- For N = LBound(Arr) To UBound(Arr) '循环数组各行
- For I = LBound(Arr, 2) To UBound(Arr, 2) '循环数组各列
- Str = Str & """" & Replace(Arr(N, I), """", """""") & """" & IIf(I = UBound(Arr, 2), vbCrLf, ",") '将当前循环到的数组项内容中的单个双引号替换为两个双引号,并在字符串两端加上引号,根据位置分别用逗号或回车换行符串接到结果字串后
- Next I
- Next N
- Open ThisWorkbook.Path & "\" & Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1) & "-" & WS.Name & ".csv" For Output As #1 '创建或打开当前工作簿路径下,以工作簿名-工作表名格式命名的CSV文件来写入文本
- Print #1, Str '将结果字符串写入
- Close #1 '关闭文件
- End If
- Next WS '循环到下一工作表
- End Sub
以上方法可以通过具体操作,控制结果内容,实现想要的效果。
详见附件及素材源帖。
VBA直接生成CSV文件.rar |
2楼 xyf2210 |
跟帖学习 |
3楼 xiaoxiao029 |
你好。 为什么手动新建一个csv 文件和用vba代码自动新建一个csv文件保存同样的内容会不同? 用UltraEdit-32 打开csv 文件时发现,手动创建的csv文件的内容会以逗号做分隔符把每列数据分开,但用代码创建的csv文件保存的内容不是用分割符而是用空格分开 ? 例如: name,code,type name code type xx,001,002 xx 001 002 ss,001,003 ss 001 002 .......
创建csv文件的代码如下:- Dim a As Workbook
- Workbooks(converfilename).Activate
- t = ActiveWorkbook.Path
- Set a = Workbooks.Add
- a.SaveAs t & "\a4.csv", xlCSV
- Workbooks("a4.csv").Close True
复制代码内容代码如下:- Workbooks(converfilename).Sheets(3).Activate
- snum = ActiveWorkbook.Sheets(3).Range("B65535").End(xlUp).Row
-
- ActiveWorkbook.Sheets(3).Range("A1:H" & snum).Copy
- Workbooks(csvstr).Activate
- olen = ActiveWorkbook.Sheets(1).UsedRange.Rows.Count + 1
-
- ActiveWorkbook.Sheets(1).Range("A1:H" & snum).Select
- Selection.PasteSpecial Paste:=xlPasteValues
- ActiveWorkbook.Sheets(1).Range("G2:G" & snum).Select
- Selection.NumberFormatLocal = "##############0.##############"
有谁遇到这种情况吗?要怎么解决阿? |
4楼 老糊涂 |
跟帖学习 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一