仅将可见单元格从Excel保存到CSV

仅将可见单元格从Excel保存到CSV,excel,vbscript,autoit,Excel,Vbscript,Autoit,如何仅将xls的可见单元格保存为CSV?我有一个大的.xls文件,我想让一些旧的UNIX Perl脚本可以使用它。我有一些代码可以监视文件的修改,重新生成CSV文件并将它们FTP到我需要的地方 维护电子表格的人不想删除旧数据(他们只是将其从视图中隐藏)。我保存到CSV的方法包括并排隐藏的所有数据,无法知道最初隐藏了什么。下面是我正在使用的代码;作为回答的起点会使我更容易理解: VBScript Dim oExcel Set oExcel = CreateObject("Excel.Applica

如何仅将xls的可见单元格保存为CSV?我有一个大的.xls文件,我想让一些旧的UNIX Perl脚本可以使用它。我有一些代码可以监视文件的修改,重新生成CSV文件并将它们FTP到我需要的地方

维护电子表格的人不想删除旧数据(他们只是将其从视图中隐藏)。我保存到CSV的方法包括并排隐藏的所有数据,无法知道最初隐藏了什么。下面是我正在使用的代码;作为回答的起点会使我更容易理解:

VBScript

Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open("S:\NetowrkFolder\SpreadSheet.xls")
Dim oSheet

If oBook.Sheets.count = 1 Then
  oBook.SaveAs "D:\output.csv", 6
else
  i=1
  aname=split("D:\output.csv",".",-1,1)
  For Each oSheet In oBook.WorkSheets
    fname = aname(0) & "_sheet" & Cstr(i)
    oSheet.SaveAs fname, 6
    i=i+1
  Next
End If

oBook.Close True
oExcel.Quit
WScript.Quit
我实际上是在AutoIt中做这个项目的,下面是AutoIt代码:

Local $oExcel = ObjCreate("Excel.Application")
Local $oBook = $oExcel.Workbooks.Open("Y:\NetworkLocation\File.xls")
Local $oWorkSheets = $oBook.WorkSheets
Local $i = 1
For $oSheet In $oWorkSheets
    $oSheet.Auto
    $oSheet.SaveAs(@ScriptDir & '\csv\Sheet' & $i & '.dat', 6)
    $i += 1
Next
$oBook.Close(False)
$oExcel.Quit()

也许这太直截了当了,但它能完成您希望完成的工作:

Sub Macro1()
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.SaveAs Filename:="D:\DOCUMENTS\visible.csv", FileFormat:= _
        xlCSV, CreateBackup:=False
End Sub
以上代码是使用宏记录器生成的。提示是,我们只选择工作表上的可见单元格,将其复制/粘贴到新工作簿,然后将其另存为CSV。原始数据仍然完好无损。其余的代码很简单,也可以使用宏记录器生成


有关更多信息,请参见SO线程:

这是VBA宏吗?由于这是在我的工作中完成的方式,如果我可以在不向电子表格本身添加任何宏的情况下完成这项工作,对我来说会更方便(除非这可以自动完成)。谢谢你的回复@科帕斯:你查过我建议的链接了吗?还有几个解决方案。但是为什么您自己提供代码?iv这不是您的选项?@COP因为您可以将代码保存在另一个工作簿中,从该工作簿运行宏,打开目标工作簿并执行上述操作。我提供的代码不是excel代码。我可以把它放在一个可操作的工作簿中,但我正在寻找一些可以在无头服务器上按计划运行的东西。标准Windows任务调度器可以轻松地从工作簿中运行宏代码-Google中有大量的
how-to
解决方案。