Встала задача: закачать данные из файлов формата EXCEL 4.0 в ACCESS 2010. Файлов много и они регулярно меняются, поэтому вариант "вручную преобразовать файлы к формату EXCEL 2010" не подходит. На сайте Мелкософта (http://support.microsoft.com/kb/141228) сказано: "Однако Microsoft Access не удается Импорт рабочих книг Microsoft Excel 4.0 ((.xlw))". Но я надеюсь, что ситуация не безнадежная. Как вариант: возможна ли конвертация файлов из одного формата EXCEL в другой с помощью командной строки (т.е. запускаешь EXCEL из командной строки, он выполняет конвертацию и закрывается) Или м.б. есть какой-то код VBA для ACCESS. Буду благодарен за любые подсказки, советы, ссылки.
Добрый день.
Встала задача: закачать данные из файлов формата EXCEL 4.0 в ACCESS 2010. Файлов много и они регулярно меняются, поэтому вариант "вручную преобразовать файлы к формату EXCEL 2010" не подходит. На сайте Мелкософта (http://support.microsoft.com/kb/141228) сказано: "Однако Microsoft Access не удается Импорт рабочих книг Microsoft Excel 4.0 ((.xlw))". Но я надеюсь, что ситуация не безнадежная. Как вариант: возможна ли конвертация файлов из одного формата EXCEL в другой с помощью командной строки (т.е. запускаешь EXCEL из командной строки, он выполняет конвертацию и закрывается) Или м.б. есть какой-то код VBA для ACCESS. Буду благодарен за любые подсказки, советы, ссылки.k-nick
Где, в каком "заповеднике", в 2014 году нашли в таком массовом количестве файлы версии 4.0?!
Не открывайте сразу Access'ом, откройте сначала Excel'ем и сохраните уже в современной версии Excel (xlsx). И вместо работы с командной строкой можно ж написать макрос в Excel (xlsm), который массово выполнит такое пересохранение или, если файлы 4.0 имеют данные одинаковой структуры, сразу соберет данные на общем листе. Потом с этого общего современного листа уже можно загрузить и в Access.
Где, в каком "заповеднике", в 2014 году нашли в таком массовом количестве файлы версии 4.0?!
Не открывайте сразу Access'ом, откройте сначала Excel'ем и сохраните уже в современной версии Excel (xlsx). И вместо работы с командной строкой можно ж написать макрос в Excel (xlsm), который массово выполнит такое пересохранение или, если файлы 4.0 имеют данные одинаковой структуры, сразу соберет данные на общем листе. Потом с этого общего современного листа уже можно загрузить и в Access.Gustav
Нам эти файлы присылают из головного офиса в Москве. Не знаю, где они такое ПО выкопали.
Вариант с макросом - это интересно, я попробую. Но он мне не очень нравится тем, что нужно будет иметь дополнительный Excel-овский файл с макросом. Нет ли какого-нибудь более "технологичного варианта"?
Спасибо.
Нам эти файлы присылают из головного офиса в Москве. Не знаю, где они такое ПО выкопали.
Вариант с макросом - это интересно, я попробую. Но он мне не очень нравится тем, что нужно будет иметь дополнительный Excel-овский файл с макросом. Нет ли какого-нибудь более "технологичного варианта"?k-nick
Нет ли какого-нибудь более "технологичного варианта"?
Ну, как сами говорите, можно через командную строку попробовать. Только не Excel запускать, а файл с VB-скриптом, внутри которого запускается Excel.
Содержимое файла convert40.vbs может быть таким: [vba]
Код
Set xlApp = CreateObject("Excel.Application") Set wbk = xlApp.Workbooks.Open(WScript.Arguments(0)) wbk.SaveAs Replace(Replace(wbk.FullName, ".xls", ".xlsx"), ".xlw", ".xlsx"), 51 wbk.Close False xlApp.Quit
[/vba] Командная строка: convert40.vbs C:\Папка1\Папка2\файл.xlw . В результате работы скрипта должен будет создаться файл C:\Папка1\Папка2\файл.xlsx.
P.S. А следующий скрипт можно натравить сразу на целую папку с файлами для конвертации - файл cnv40mas.vbs: [vba]
Код
Set xlApp = CreateObject("Excel.Application") Set files = CreateObject("Scripting.FileSystemObject").GetFolder(WScript.Arguments(0)).Files For Each file in files If InStr(file.Type, "Excel") Then Set wbk = xlApp.Workbooks.Open(file.Path) wbk.SaveAs Replace(Replace(wbk.FullName, ".xls", ".xlsx"), ".xlw", ".xlsx"), 51 wbk.Close False Set wbk = Nothing End If Next xlApp.Quit Set xlApp = Nothing
[/vba] Командная строка: cnv40mas.vbs C:\Папка1\Папка2\ . В результате работы скрипта в папке появятся одноименные файлы *.xlsx.
Нет ли какого-нибудь более "технологичного варианта"?
Ну, как сами говорите, можно через командную строку попробовать. Только не Excel запускать, а файл с VB-скриптом, внутри которого запускается Excel.
Содержимое файла convert40.vbs может быть таким: [vba]
Код
Set xlApp = CreateObject("Excel.Application") Set wbk = xlApp.Workbooks.Open(WScript.Arguments(0)) wbk.SaveAs Replace(Replace(wbk.FullName, ".xls", ".xlsx"), ".xlw", ".xlsx"), 51 wbk.Close False xlApp.Quit
[/vba] Командная строка: convert40.vbs C:\Папка1\Папка2\файл.xlw . В результате работы скрипта должен будет создаться файл C:\Папка1\Папка2\файл.xlsx.
P.S. А следующий скрипт можно натравить сразу на целую папку с файлами для конвертации - файл cnv40mas.vbs: [vba]
Код
Set xlApp = CreateObject("Excel.Application") Set files = CreateObject("Scripting.FileSystemObject").GetFolder(WScript.Arguments(0)).Files For Each file in files If InStr(file.Type, "Excel") Then Set wbk = xlApp.Workbooks.Open(file.Path) wbk.SaveAs Replace(Replace(wbk.FullName, ".xls", ".xlsx"), ".xlw", ".xlsx"), 51 wbk.Close False Set wbk = Nothing End If Next xlApp.Quit Set xlApp = Nothing
[/vba] Командная строка: cnv40mas.vbs C:\Папка1\Папка2\ . В результате работы скрипта в папке появятся одноименные файлы *.xlsx.Gustav