5

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()
4

1 に答える 1

4

おそらくこれは単純すぎるかもしれませんが、あなたがやりたいように仕事をします:

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 スレッドを参照してください:表示されているセルのみを Excel から CSV にエクスポートするにはどうすればよいですか?

于 2013-03-04T17:00:40.707 に答える