Cop*_*pas 5 vbscript excel autoit
精简版:
如何只保存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
Run Code Online (Sandbox Code Playgroud)
我实际上在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()
Run Code Online (Sandbox Code Playgroud)
也许这太简单了,但它完成了您想要的工作:
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
Run Code Online (Sandbox Code Playgroud)
上述代码是使用宏记录器生成的。线索是我们仅选择工作表上的可见单元格,将其复制/粘贴到新工作簿,然后将其另存为 CSV。原始数据仍然完好无损。其余代码很简单,也可以使用宏记录器生成。
有关更多想法,请参阅 SO 线程:How do I Export onlyvisible cells from Excel to CSV?
| 归档时间: |
|
| 查看次数: |
3866 次 |
| 最近记录: |