Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Foxpro/Clipper/Dbase > VFoxPro. OLE. SaveAs. xls2dbf


Автор: DZ0 19.11.2004, 15:41
Вот пришлось изучать OLE и осваивать классы smile

Помогите сохранить xls (Excel любой версии) как dbf в Visual FoxPro 5.0 используя OLE (или другую умную технологию)

на код:

oXl = CREATEOBJECT("Excel.Application")
oXl.Workbooks.Open("myfile.xls")
oXl.Workbooks(1).SaveAs("myfile.dbf", xlDBF4)
* или oXl.ActiveSheet.SaveAs("myfile.dbf", xlDBF4)

получаю ответ:

Ошибка OLE, код 0x8002000b: Неверный индекс.

Что не так? И как лучше сделать?

Автор: ngnoza 20.11.2004, 11:44
IMPORT FROM "c:\MyFolder\Myfile.xls" TYPE XL8 SHEET "mysheet"
close database
use Myfile.dbf
browse
COPY TO "c:\Myfolder\Myfile_new.xls" TYPE XL5

Пробуйте - возможно поможет (В Vfp 6.0 работает).
Обратите внимание что имена файлов (без расширения) совпадают.

Удачи

Автор: DZ0 22.11.2004, 09:11
Цитата(ngnoza @ 20.11.2004, 11:44)
IMPORT FROM "c:\MyFolder\Myfile.xls" TYPE XL8 SHEET "mysheet"

Это не решает проблему, т.к.:
1. В Vfp 5.0 нет формата XL8
2. это решение только для XL8, а надо для любого формата
smile

Автор: Cashey 30.11.2004, 01:15
Код

tmpsheet = GetObject(SYS(5)-CURDIR()-"buhuchet\docs\усно.xls",'excel.sheet')
XLApp = tmpsheet.application
XLApp.Workbooks.Open(SYS(5)-CURDIR()-"buhuchet\docs\усно.xls")
XLSheet = XLApp.Sheets[1]

*************************************************

XLApp.displayalerts = .F.
XLApp.sheets[1].select
XLApp.cells(1, 1).select
IF FILE(SYS(5)-CURDIR()-'buhuchet\out\_xltmp.xls')
DELETE FILE SYS(5)-CURDIR()-'buhuchet\out\_xltmp.xls'
ENDIF
XLApp.ActiveWorkbook.SaveAs(SYS(5)-CURDIR()-'buhuchet\out\_xltmp.xls',- 4143)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)