2008-10-06 7 views

Antwort

8

, die in

set xlapp = CreateObject("Excel.Application") 
set fso = CreateObject("scripting.filesystemobject") 
set myfolder = fso.GetFolder("YOURFOLDERPATHHERE") 
set myfiles = myfolder.Files 
for each f in myfiles 
    set mybook = xlapp.Workbooks.Open(f.Path) 
    mybook.SaveAs f.Name & ".xml", 47 
    mybook.Close 
next 

ich dies nicht getestet, aber es sollte alle Dateien konvertieren:

Setzen Sie diese in einer Textdatei und die Endung „.vbs“ machen ein einzelnes Verzeichnis mit der Erweiterung .xls.

Es erfordert einen direkten Ansatz. Jeder VBA-Code in einer Arbeitsmappe wird entfernt, die Arbeitsmappe wird nicht mit der Erweiterung .xlsm gespeichert. Alle Inkompatibilitätswarnungen werden nicht angezeigt, stattdessen werden die Änderungen automatisch akzeptiert.

Sub Convert_xls_Files() 

Dim strFile As String 
Dim strPath As String 

    With Application 
     .EnableEvents = False 
     .DisplayAlerts = False 
     .ScreenUpdating = False 
    End With 
'Turn off events, alerts & screen updating 

     strPath = "C:\temp\excel\" 
     strFile = Dir(strPath & "*.xls") 
'Change the path as required 

    Do While strFile <> "" 
     Workbooks.Open (strPath & strFile) 
     strFile = Mid(strFile, 1, Len(strFile) - 4) & ".xlsx" 
     ActiveWorkbook.SaveAs Filename:=strPath & strFile, FileFormat:=xlOpenXMLWorkbook 
     ActiveWorkbook.Close True 
     strFile = Dir 
    Loop 
'Opens the Workbook, set the file name, save in new format and close workbook 

    With Application 
     .EnableEvents = True 
     .DisplayAlerts = True 
     .ScreenUpdating = True 
    End With 
'Turn on events, alerts & screen updating 

End Sub 
+1

Dank Robert, es hat sehr gut funktioniert. Das einzige, was ich geändert habe, war FileFormat: = XlFileFormat.xlXMLSpreadsheet (Ich benutze Excel 2003) – kristof

+0

Kann der obige Code in PHP geschrieben werden? – chupinette

3

Sie könnten den Code anpassen ich hier gepostet:

http://www.atalasoft.com/cs/blogs/loufranco/archive/2008/04/01/loading-office-documents-in-net.aspx

Es zeigt, wie als PDF speichern (Word wird im Blog gezeigt, aber wenn Sie die Lösung herunterladen, es hat Code für Excel und PPT).

Sie müssen die Funktion zum Speichern als das neue Format finden, anstatt zu exportieren (wahrscheinlich ist der einfachste Weg, ein Makro von sich selbst in Excel zu machen und dann den Code zu betrachten).

+0

Danke Lou sowohl für die Antwort und für in der Frage der Dateinamenerweiterung zu korrigieren. Ich kann Ihren Vorschlag betrachten, wenn ich eine umfassendere Lösung brauche. Wie für den Moment bin ich OK mit VBA – kristof

0

Die einfachste Möglichkeit besteht darin, Makros für eine Datei aufzuzeichnen und dann manuell Makros zu bearbeiten, um solche Aktionen für Dateien im Ordner mit Schleife durchzuführen. In Makro können Sie Standard-VB-Funktionen verwenden, um alle Dateien im Verzeichnis zu erhalten und sie zu filtern. Sie können für weitere Informationen http://www.xtremevbtalk.com/archive/index.php/t-247211.html suchen.

3

sie öffnen alle auf, und drücken Sie ALT + F11 dann auf Makro-Editor zu bekommen und wie etwas ein:

Sub SaveAllAsXml() 
    Dim wbk As Workbook 
    For Each wbk In Application.Workbooks 
     wbk.SaveAs FileFormat:=XlFileFormat.xlXMLSpreadsheet 
    Next 
End Sub 

Und dann F5, um sie auszuführen drücken. Müssen einige Feinheiten brauchen, da ich es nicht getestet habe.

+0

Danke, es war hilfreich – kristof

1

Klingt wie ein Job für meine Lieblings-am meisten unterschätzte Sprache aller Zeiten: VBScript !! Hier arbeiten ist eine Routine

0
Const xlXLSX = 51 

REM 51 = xlOpenXMLWorkbook (without macro's in 2007-2013, xlsx) 
REM 52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2013, xlsm) 
REM 50 = xlExcel12 (Excel Binary Workbook in 2007-2013 with or without macro's, xlsb) 
REM 56 = xlExcel8 (97-2003 format in Excel 2007-2013, xls) 

dim args 
dim file 
dim sFile 
set args=wscript.arguments 

dim wshell 
Set wshell = CreateObject("WScript.Shell") 

Set objExcel = CreateObject("Excel.Application") 

Set objWorkbook = objExcel.Workbooks.Open(wshell.CurrentDirectory&"\"&args(0)) 

objExcel.DisplayAlerts = FALSE 

objExcel.Visible = FALSE 

objWorkbook.SaveAs wshell.CurrentDirectory&"\"&args(1), xlXLSX 

objExcel.Quit 

Wscript.Quit 
Verwandte Themen