xls の可視セルのみを CSV として保存するにはどうすればよいですか? 古い UNIX Perl スクリプトで使用できるようにしたい大きな .xls ファイルがあります。ファイルの変更を監視し、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()