Kurzfassung in CSV:Speicher Nur sichtbare Zellen aus Excel
Wie kann man nur die sichtbaren Zellen eines xls als csv speichern?
Längere Version:
Ich habe eine große .xls-Datei, die einige Daten enthält viele Blätter verteilt, die Ich mag würde zu einigen alten UNIX-Perl-Skripte zur Verfügung stellen. Ich habe etwas Code, der die Datei für eine Änderung sehen wird, die csv-Dateien neu generieren und sie an den Ort, wo ich sie brauche. Das Problem ist, dass die Leute, die die Tabellenkalkulation pflegen, alte Daten nicht entfernen wollen, sie verstecken sie einfach vor ihrer letzten Referenz. Meine Methode, nach csv zu speichern (wie Sie es in den meisten Anwendungsfällen erwarten würden), endet mit allen versteckten Daten und sichtbaren Seite an Seite mit keiner Möglichkeit zu wissen, was ursprünglich verborgen war. Ich habe ein wenig im Internet und hier gesucht und kann keinen Weg finden (dem ich folgen kann), dies programmatisch zu machen. Unten ist ein Teil des Codes, den ich benutze. Wenn es als Ausgangspunkt für eine Antwort verwendet werden könnte, würde es für mich leichter verständlich machen.
Vielen Dank im Voraus, ihr seid immer sehr hilfsbereit.
Nachfolgend finden Sie einige VBScript Ich fand, dass die Arbeit wird getan, sondern umfasst alle Daten (nicht nur sichtbare Daten).
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
ich eigentlich dieses Projekt in AutoIt tue unten ist der AutoIt Code, den ich getan, um die gleiche Sache zu bekommen verwenden. Unglücklicherweise hat es immer noch alle versteckten Daten darin.
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()
Ist das ein VBA-Makro? Aufgrund der Art und Weise, wie dies bei meiner Arbeit gemacht wird, wäre es viel praktischer für mich, wenn ich es tun könnte, ohne Makros in die Tabelle selbst zu fügen (es sei denn, dies könnte automatisch erfolgen). Danke für die Antwort! – Copas
@Copas hast du den Link, den ich vorgeschlagen habe, überprüft? Es gibt mehrere weitere Lösungen. Aber ... warum hast du den Code selbst erstellt? Iv ist das keine Option für dich?) –
@Copas es ist möglich, diesen Code in einer anderen Arbeitsmappe zu behalten, von der du Makro ausführst, Zielbuch öffnen und das obige ausführen Aktion. –