• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

KLif

Всем привет.

Вообщем такая ситуация, есть библиотека для экспорта данных в эксель с набором процедур:
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)

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

morpheus

Для того что бы лист не был виден до заполнения

Код:
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

Ту Morpheus:

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

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

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

да?
 
M

morpheus

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

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

KLif

Код:
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 ... С чем это может быть связано?
 
M

morpheus

Связано с тем что туда указывают ЧИСЛА ,а не буквы-координаты

А = 1
B = 2
C = 3

и т.д.


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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Можно и буквы. Только надо так:
Sh.Cells({B1:C1}) = {text}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!