Как автоматизировать преобразование файлов Excel xls в формат Excel xml? - PullRequest
5 голосов
/ 06 октября 2008

У меня есть около 200 файлов Excel в стандартном формате Excel 2003.

Мне нужно, чтобы все они были сохранены в формате Excel xml - в основном это то же самое, что открыть каждый файл и выбрать Сохранить как ... , а затем выбрать Сохранить как тип: XML-таблица

Вы знаете какой-нибудь простой способ автоматизации этой задачи?

Ответы [ 6 ]

8 голосов
/ 07 октября 2008

Вот процедура, которая преобразует все файлы в одном каталоге с расширением .xls.

Требуется прямой подход. Любой код VBA в рабочей книге удаляется, рабочая книга не сохраняется с расширением .xlsm. Все предупреждения о несовместимости не отображаются, а изменения автоматически принимаются.

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
3 голосов
/ 06 октября 2008

Откройте их все, а затем нажмите ALT + F11, чтобы перейти к редактору макросов и введите что-то вроде:

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

А затем нажмите F5, чтобы запустить его. Может потребоваться некоторая настройка, поскольку я не проверял это.

3 голосов
/ 06 октября 2008

Вы можете адаптировать код, который я разместил здесь:

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

Показывает, как сохранить в формате PDF (Word отображается в блоге, но если вы загружаете решение, оно содержит код для Excel и PPT).

Вам нужно найти функцию сохранения в новом формате вместо экспорта (вероятно, самый простой способ - записать макрос, который вы выполняете в Excel, а затем посмотрите на код).

1 голос
/ 07 октября 2008

Звучит как работа для моего самого любимого и недооцененного языка за все время: VBScript !!

Поместите это в текстовый файл и создайте расширение ".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

Я не проверял это, но оно должно работать

0 голосов
/ 17 декабря 2014
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
0 голосов
/ 06 октября 2008

Самый простой способ - записать макрос для одного файла, а затем вручную редактировать макросы, чтобы выполнять такие действия для файлов в папке с помощью цикла. В макросе вы можете использовать стандартные функции VB, чтобы получить все файлы в каталоге и отфильтровать их. Вы можете посмотреть http://www.xtremevbtalk.com/archive/index.php/t-247211.html для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...