Откройте файлы Excel 2007 Excel и сохраните их как форматы 97-2003 в VBA.

У меня странная ситуация, когда у меня есть набор файлов Excel, все с расширением .xls., В каталоге, где я могу легко открыть их все в Excel 2007. Странно то, что я не могу открыть их в Excel 2003 , на том же компьютере, не открывая файл сначала в 2007 году и не сохраняя файл как «книгу Excel 97-2003». Прежде чем я сохраню файл как «книгу Excel 97-2003» из Excel 2007, когда я открываю файлы Excel в 2003 году, я получаю сообщение об ошибке, что файл находится в нераспознаваемом формате.

Итак, мой вопрос: если у меня уже есть файл Excel, открытый в 2007 году, и у меня уже есть имя файла открытого файла, хранящегося в переменной, программно, как я могу имитировать действие перехода к «кнопке офиса» в верхнем вправо и выбрав «Сохранить как», а затем выбрав «Книга Excel 97-2003»? Я пробовал что-то вроде следующего, но он вообще не сохраняет файл:

ActiveWorkbook.SaveAs TempFilePath & TempFileName & ".xls", FileFormat:=56

Спасибо за любую помощь или руководство!


person ABB    schedule 26.01.2010    source источник
comment
У меня точно такая же проблема. Файл my_file_with_macro.xlsm генерирует некоторые файлы * .xls для совместимости с Excel 2003, которые не могут быть открыты моими коллегами, которые все еще работают под управлением Office 2003. Получили ли вы какое-либо решение с тех пор, как задали этот вопрос здесь?   -  person Nicolas C.    schedule 26.04.2012
comment
На самом деле, я только что нашел решение (которое я не считаю чистым, но ... в любом случае, оно работает для меня). Application.DisplayAlerts = False Установить resultFile = Workbooks.Open (resultFileName) resultFile.CheckCompatibility = False resultFile.SaveAs Filename: = resultFileName, FileFormat: = xlExcel8 resultFile.Close Application.DisplayAlerts = True   -  person Nicolas C.    schedule 26.04.2012


Ответы (6)


Похоже, вам следует попробовать пакет совместимости, но я не понимаю, почему ваш vba не работает. Я попробовал следующее, и он отлично сработал:

ThisWorkbook.SaveAs "C:\test" & ".xls", FileFormat:=56
person burnside    schedule 26.01.2010
comment
У меня установлен пакет совместимости, но он по-прежнему не работает. Не знаю почему. Если я извлекаю FileFormat: = 56, он отлично сохраняется, но когда я добавляю его, он просто не сохраняет вообще. Любые идеи? - person ABB; 27.01.2010
comment
Что произойдет, если вы попытаетесь сохранить файл под другим именем? - person Jay; 27.01.2010
comment
Я просто попробовал это, и это не сработало. Я прошел через код и убедился, что он попал в эту строку кода, и это произошло, поэтому я не уверен, связано ли это с моей текущей настройкой на моей машине или чем-то еще. Я в растерянности. - person ABB; 27.01.2010
comment
На машине, на которой я ее тестирую, установлены как 2003, так и 2007 годы (я запускал код в 2007 году), но я не уверен, что это изменит ситуацию. - person burnside; 27.01.2010
comment
Я попробовал его на другой машине с такой же настройкой, как у меня (установлены 2003 и 2007 годы), и это сработало. Очень странно. Извините, что потратил ваше время, я думаю, это просто проблема с настройкой моей машины по какой-то очень странной причине. - person ABB; 27.01.2010
comment
Нет проблем. Эксель может быть темпераментным зверем. - person burnside; 27.01.2010

Эта страница: http://www.rondebruin.nl/saveas.htm была полезна для меня. Вы должны объявить другой тип файла, если вы сохраняете с 2007 по 2003 и ранее.

person guitarthrower    schedule 27.01.2010

Вот решение, которое мне подходит. По сути, он снова открывает тот же файл и имитирует «Сохранить как» при нажатии кнопки Office с совместимостью с Excel 97-2003. Тем не менее, он скрывает любые предупреждения и указывает Excel, чтобы НЕ проверять совместимость, что создает всплывающее окно, не позволяющее вам молча работать в пакетном режиме.

'before that, my code was using Workbooks.Add method, saving and then closing.
'just add the following after your last operation, once your file is closed where
'of course "resultFile" is the workbook to be saved, and resultFileName the path

Application.DisplayAlerts = False
Set resultFile = Workbooks.Open(resultFileName)
resultFile.CheckCompatibility = False
resultFile.SaveAs Filename:=resultFileName, FileFormat:=xlExcel8
resultFile.Close
Application.DisplayAlerts = True
person Nicolas C.    schedule 26.04.2012

Я не понимаю, пытаетесь ли вы просто преобразовать все эти файлы или работаете над приложением, которое должно это сделать.

Если первое, посмотрите, поможет ли это: http://www.microsoft.com/downloads/details.aspx?familyid=941b3470-3ae9-4aee-8f43-c6bb74cd1466&displaylang=en

Он позволяет открывать Office 2007 в более ранних версиях Office.

person Jay    schedule 26.01.2010
comment
Не спрашивайте меня, почему, но пакет совместимости не работает. Я пытаюсь создать приложение для преобразования файлов. - person ABB; 27.01.2010

просто закрытие предупреждений тоже работает. Application.DisplayAlerts = False Workbooks.Add.SaveAs name, FileFormat: = 56 * при необходимости внесите изменения в файл Activeworkbook.close SaveChanges: = true Application.DisplayAlerts = True

person user2481205    schedule 20.06.2013

'this script is created by me. But usable to vbscript ( vbs ).
UTILIZAR EL ARCHIVO INICIAL.XLSX COMO COMODÍN PARA CREAR UN ARCHIVO DATOS.XLS.

'Creado por Juan Fernando Arango Trujillo
Set app = CreateObject("Excel.Application")
app.Visible = False
app.DisplayAlerts = False
Set fso = CreateObject("Scripting.FileSystemObject")
Set wb = app.Workbooks.Open("C:\Users\Juan\Documents\Inicial.xlsx") 
wb.SaveAs "C:\Users\Juan\Documents\Datos.xls",  -4143
wb.Close True
app.Quit
Set app = Nothing
Set fso = Nothing

'FIN DEL PROCESO DE CREACIN DE DATOS.XLS

person Juan Fernando    schedule 06.01.2016
comment
Было бы хорошо, если бы вы могли перевести обезьяну и добавить несколько пояснений. - person CAFEBABE; 06.01.2016