Проблема экспорта данных в Excel

  • Автор темы KLif
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

KLif

#1
Всем привет.

Вообщем такая ситуация, есть библиотека для экспорта данных в эксель с набором процедур:
CreateObjectExcel - создания OLE-объекта приложения MS Excel
VisibleObjectExcel - тображения OLE-объекта приложения MS Excel
SetCellText - заполнение

В итоге, создаётся книга в ней остаётся только один лист. Беру любой док и спокойно экспортирую данные в excel ... Теперь надо сделать так чтобы каждый док был на отдельном листе. К библиотеке добавил процедуру с кодом : objectExcel.Sheets.Add

Call CreateObjectExcel()
Call SetCellText({B2:C2}, "", {Компания}, "", i) - i номер рабочего листа
Call AddSheet(i)
Call SetCellText({B2:C2}, "", {Компания}, "", i+1)

Получается два листа, но второй не заполнен ... перепробовал кучу вариаций и никак не могу понять почему он не вставляет данные в новый лист ... Когда книга открывается, курсор стоит на новом созданом листе ...
 

morpheus

скриптописец
07.08.2006
3 915
1
#2
Для того что бы лист не был виден до заполнения

Код:
Set exApp = CreateObject("Excel.Application")
If exApp Is Nothing Then
Messagebox "Не установлен Excel!!!", 0 + 16 , "ошибка"
End If
exApp.Visible = False ' видно или нет

Дальше , с листами Вы делайте так
1й лист имеет индекс = 1 и т.д.
Код:
i = 1
Set exWb = exApp.ActiveWorkBook
Set Sh = exWb.Sheets(i) ' определяем Sh как первый лист раб. книги

....
' Заполнение нужной ячейки
sh.Cells(B2, C2) = {Компания}
' ну а дельше создаем овый лист и делаем переход 
Set Sh = exWb.Sheets(2) .... и т.д.
...
 
K

KLif

#4
Ту Morpheus:

1) Установка флага Visible ставится в True когда? ... после создания объекта, после заполнения каждого листа, после заполнения всех листов?

2) Каким образом делается добавление нового листа и переход на него?

exWb.Sheets.Add
exWb.Sheets(i).Select

да?
 

morpheus

скриптописец
07.08.2006
3 915
1
#5
1) Ну когда Вы хотете что юзверь узрел раб.книгу тогда и ставте. Я ставлю когда я полностью заполняю весь отчет данными и оп - видно

2) Да,
Код:
Call exWb.Sheets.Add
Set Sh = exWb.Sheets(i) 
i = i + 1 ' не забудте
Код:
 
K

KLif

#6
Код:
Set objectExcel = CreateObject("Excel.Application")
Set objectBook = objectExcel.Workbooks.Add
Set Sh = objectBook.Sheets(1)
Sh.Cells({B1},{C1}) = {text}
objectExcel.Visible = True
Стапарится на строчке заполнения ячейки, ошибка OLE: Automatic object error ... С чем это может быть связано?
 

morpheus

скриптописец
07.08.2006
3 915
1
#7
Связано с тем что туда указывают ЧИСЛА ,а не буквы-координаты

А = 1
B = 2
C = 3

и т.д.


Sh.Cells( 1,1 ) = "text"
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#8
Можно и буквы. Только надо так:
Sh.Cells({B1:C1}) = {text}
 
Статус
Закрыто для дальнейших ответов.