para - convertir tabla de datos en excel a un archivo xml
¿Cómo automatizar la conversión de archivos Excel xls a formato Excel xml? (6)
Ábrelos todos, y luego presione ALT + F11 para ir al editor de macros y escriba algo como:
Sub SaveAllAsXml()
Dim wbk As Workbook
For Each wbk In Application.Workbooks
wbk.SaveAs FileFormat:=XlFileFormat.xlXMLSpreadsheet
Next
End Sub
Y luego presione F5 para ejecutarlo. Puede necesitar algunos ajustes ya que no lo he probado.
Tengo alrededor de 200 archivos de Excel que están en formato estándar de Excel 2003.
Los necesito todos para guardarlos como Excel xml, básicamente lo mismo que abrir cada archivo y elegir Guardar como ... y luego elegir Guardar como tipo: Hoja de cálculo XML
¿Conoces alguna forma simple de automatizar esa tarea?
Aquí hay una rutina que convertirá todos los archivos en un solo directorio que tenga una extensión .xls.
Se necesita un enfoque directo. Se elimina cualquier código de VBA en un libro de trabajo, el libro de trabajo no se guarda con una extensión .xlsm. Las advertencias de incompatibilidad no se desvían, sino que los cambios se aceptan automáticamente.
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
La forma más simple es registrar macro para un archivo y luego editar macros manualmente para realizar tales acciones para los archivos en la carpeta usando loop. En macro puede usar las funciones estándar de VB para obtener todos los archivos en el directorio y filtrarlos. Puede mirar http://www.xtremevbtalk.com/archive/index.php/t-247211.html para obtener información adicional.
Puedes adaptar el código que publiqué aquí:
http://www.atalasoft.com/cs/blogs/loufranco/archive/2008/04/01/loading-office-documents-in-net.aspx
Muestra cómo guardar como PDF (Word se muestra en el blog, pero si descarga la solución, tiene código para Excel y PPT).
Necesita encontrar la función para guardar como el nuevo formato en lugar de exportar (probablemente la forma más fácil es grabar una macro suya en Excel y luego mirar el código).
Suena como un trabajo para mi lenguaje favorito más subestimado de todos los tiempos: ¡VBScript!
Ponlo en un archivo de texto y crea la extensión ".vbs":
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
No lo he probado, pero debería funcionar
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