热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用VBA将Excel工作表的一部分(部分)导出为CSV

如何解决《使用VBA将Excel工作表的一部分(部分)导出为CSV》经验,为你挑选了1个好方法。

我知道导出到csv的次数已经被问了大约十亿次,而且我已经完成了很多次,但是我想弄清楚如何只将片材的一部分导出到csv而不循环遍历每一行或每一行并将它们单独打印到文件中.我需要保持本地格式作为一个要求.

Sheets("PI_OUTPUT").Copy

这会复制整张纸,疣和所有.我在第1到20000行和A到X列中有公式,但在处理完数据后有可变数量的空白行.如果我使用复制方法,我会复制所有空行,这些行作为逗号行输出.,,,,,,,等....

我尝试使用activesheet.deleterows在复制后修剪输出文件,但这给了我一个错误.

我尝试过使用:

Worksheets("PI_OUTPUT").Activate
Sheets("PI_OUTPUT").Range("A2:X5000").Copy

我试图使用另一个建议:specialcells(xlCellTypeVisible),但我似乎无法让它工作:

Set rng = Sheets("PI_OUTPUT").SpecialCells(xlCellTypeVisible)
Set Workbook = Workbooks.Add
With Workbook
    Call rng.Copy
    .Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues
    .SaveAs filename:=MyPath & MyFileName, FileFormat:=xlCSV
    .Close
End With

更糟糕的是,我必须在多个工作表中执行此操作,所有工作表都有可变数量的列,行,所有这些都保存到单独的文件中,所以我正在寻找可以重复多次的内容.我有一个文件夹路径弹出来选择位置,并有一个动态构造的文件名,但复制/粘贴避免提交给我.

目前正在撕毁无数谷歌搜索后我的头发,任何帮助感激不尽.



1> M--..:

您可以使用以下代码;

Sub testexport() 
 'Adpated from OzGrid;
 ' export Macro as CSV

Dim wsh As Worksheet

Set wsh = ThisWorkbook.Worksheets("PI_OUTPUT")

With wsh.Range("A2:X20000")

.AutoFilter 1, "<>" 'Filter to get only non-blank cells

'assuming there is no blank cell within a filled row:
wsh.Range(wsh.Cells(2, 1), wsh.Cells(24, 2).End(xlDown)).Copy 'copy non-blank cells 

'.AutoFilter should not cancel autofilter as it clears cutcopy mode

End With

Application.DisplayAlerts = False 'avoid from "save prompt window"

Workbooks.Add

ActiveSheet.Paste 

'Saves to C drive as Book2.csv
ActiveSheet.SaveAs Filename:= _ 
"C:\Book2.csv" _ 
, FileFormat:=xlCSV, CreateBackup:=False 

ActiveWorkbook.Close 

wsh.Range("A2:X20000").AutoFilter 'clear the filter

Application.DisplayAlerts = True 'set to default

End Sub 


推荐阅读
author-avatar
墨镜小靖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有